개요
DeepEval은 즉시 사용 가능한 LLM 메트릭을 제공하고, 사용자 지정 가능한 LLM 평가를 허용하는 오픈 소스 프레임워크입니다. 자세한 내용은 DeepEval 설명서를 참조하세요.
Agent Observability를 사용하여 실험에서 DeepEval 평가를 실행할 수 있습니다. DeepEval 평가 결과는 Agent Observability 데이터세트의 각 인스턴스에 연결된 평가자 결과로 나타납니다.
설정
- Agent Observability 실험과 Agent Observability 데이터세트를 설정합니다.
- 다음 코드 샘플과 같이 LLMObs
Experiment의 evaluators 파라미터에 DeepEval 평가자를 제공하세요. 작동하는 예시는 GitHub의 Datadog DeepEval 데모를 참조하세요.
from deepeval.metrics import GEval
from deepeval.test_case import LLMTestCaseParams
from ddtrace.llmobs import LLMObs
LLMObs.enable(
api_key="<YOUR_API_KEY>", # defaults to DD_API_KEY environment variable
app_key="<YOUR_APP_KEY>", # defaults to DD_APP_KEY environment variable
site="datadoghq.com", # defaults to DD_SITE environment variable
project_name="<YOUR_PROJECT>" # defaults to DD_LLMOBS_PROJECT_NAME environment variable, or "default-project" if the environment variable is not set
)
# this can be any DeepEval evaluator
deepeval_evaluator = GEval(
name="<EVAL_NAME>",
criteria="<CRITERIA>",
evaluation_steps=[
"<EVALUATION STEP 1",
"...",
"<EVALUATION STEP2>"
],
evaluation_params=[LLMTestCaseParams.INPUT, LLMTestCaseParams.ACTUAL_OUTPUT, LLMTestCaseParams.EXPECTED_OUTPUT],
async_mode=True,
)
dataset = LLMObs.create_dataset(
dataset_name="capitals-of-the-world",
project_name="capitals-project", # optional, defaults to project_name used in LLMObs.enable
description="Questions about world capitals",
records=[
{
"input_data": {
"question": "What is the capital of China?"
}, # required, JSON or string
"expected_output": "Beijing", # optional, JSON or string
"metadata": {"difficulty": "easy"}, # optional, JSON
},
{
"input_data": {
"question": "Which city serves as the capital of South Africa?"
},
"expected_output": "Pretoria",
"metadata": {"difficulty": "medium"},
},
],
)
def task(input_data: Dict[str, Any], config: Optional[Dict[str, Any]] = None, metadata: Optional[Dict[str, Any]] = None) -> str:
question = input_data['question']
# Your LLM or processing logic here
return "Beijing" if "China" in question else "Unknown"
def num_exact_matches(inputs, outputs, expected_outputs, evaluators_results):
return evaluators_results["<EVAL_NAME>"].count(True)
experiment = LLMObs.experiment(
name="<EXPERIMENT_NAME>",
task=my_task,
dataset=dataset,
evaluators=[deepeval_evaluator],
summary_evaluators=[num_exact_matches], # optional
description="<EXPERIMENT_DESCRIPTION>",
)
results = experiment.run(jobs=4, raise_errors=True)
print(f"View experiment: {experiment.url}")
사용량
DeepEval 평가를 활용하여 실험을 실행한 후, Datadog의 해당 실험 실행에서 인스턴스별 DeepEval 평가 결과를 확인할 수 있습니다. 아래 실험에서는 ‘Correctness’라는 이름의 DeepEval 평가자가 실행되었습니다.
추가 자료