평가를 비동기로 실행하는 방법
평가를 비동기로 실행하는 방법
SDK의 aevaluate()를 사용해 평가를 비동기로 실행할 수 있어요. 이 함수는 evaluate()와 동일한 모든 인자를 받지만, 애플리케이션 함수가 비동기로 동작해야 합니다. 자세한 내용은 evaluate() 함수 사용 방법을 참고하세요.
이 가이드는 Python SDK를 사용할 때만 해당돼요. JS/TS에서는
evaluate()함수가 이미 비동기입니다. 자세한 내용은 LLM 애플리케이션 평가하기를 참고하세요.
출처: 문서
본문
aevaluate() 사용하기
langsmith>=0.3.13 필요
from langsmith import wrappers, Client
from openai import AsyncOpenAI
# 선택 사항: 모든 모델 호출을 추적하도록 OpenAI 클라이언트를 래핑.
oai_client = wrappers.wrap_openai(AsyncOpenAI())
# 선택 사항: 이 함수의 입력/출력을 추적하려면 'traceable' 데코레이터를 추가.
@traceable
async def researcher_app(inputs: dict) -> str:
instructions = """You are an excellent researcher. Given a high-level research idea, \
list 5 concrete questions that should be investigated to determine if the idea is worth pursuing."""
response = await oai_client.chat.completions.create(
model="gpt-5.4-mini",
messages=[
{"role": "system", "content": instructions},
{"role": "user", "content": inputs["idea"]},
],
)
return response.choices[0].message.content
# 평가기 함수는 동기 또는 비동기일 수 있음
def concise(inputs: dict, outputs: dict) -> bool:
return len(outputs["output"]) < 3 * len(inputs["idea"])
ls_client = Client()
ideas = [
"universal basic income",
"nuclear fusion",
"hyperloop",
"nuclear powered rockets",
]
dataset = ls_client.create_dataset("research ideas")
ls_client.create_examples(
dataset_name=dataset.name,
examples=[{"inputs": {"idea": i}} for i in ideas],
)
# 동일하게 'aevaluate' 함수를 직접 사용할 수도 있음:
# from langsmith import aevaluate
# await aevaluate(...)
results = await ls_client.aevaluate(
researcher_app,
data=dataset,
evaluators=[concise],
# 선택 사항, 동시성을 추가.
max_concurrency=2, # 선택 사항, 동시성을 추가.
experiment_prefix="gpt-5.4-mini-baseline" # 선택 사항, 기본은 랜덤.
)