Skip to main content
LangSmith를 사용하면 피드백 점수와 메타데이터로 이전 실험들을 필터링하여 관심 있는 실험만 쉽게 찾을 수 있습니다.

배경: 실험에 메타데이터 추가하기

SDK에서 실험을 실행할 때 메타데이터를 첨부하여 UI에서 필터링하기 쉽게 만들 수 있습니다. 이는 실험을 실행할 때 어떤 축으로 드릴다운하고 싶은지 미리 알고 있는 경우에 유용합니다. 이 예제에서는 사용된 모델, 모델 제공자, 그리고 프롬프트의 알려진 ID와 관련된 메타데이터를 실험에 첨부할 것입니다:
models = {
    "openai-gpt-4o": ChatOpenAI(model="gpt-4o", temperature=0),
    "openai-gpt-4o-mini": ChatOpenAI(model="gpt-4o-mini", temperature=0),
    "anthropic-claude-3-sonnet-20240229": ChatAnthropic(temperature=0, model_name="claude-3-sonnet-20240229")
}

prompts = {
    "singleminded": "always answer questions with the word banana.",
    "fruitminded": "always discuss fruit in your answers.",
    "basic": "you are a chatbot."
}

def answer_evaluator(run, example) -> dict:
    llm = ChatOpenAI(model="gpt-4o", temperature=0)
    answer_grader = hub.pull("langchain-ai/rag-answer-vs-reference") | llm
    score = answer_grader.invoke(
        {
            "question": example.inputs["question"],
            "correct_answer": example.outputs["answer"],
            "student_answer": run.outputs,
        }
    )
    return {"key": "correctness", "score": score["Score"]}

dataset_name = "Filterable Dataset"

for model_type, model in models.items():
    for prompt_type, prompt in prompts.items():
        def predict(example):
            return model.invoke(
                [("system", prompt), ("user", example["question"])]
            )

        model_provider = model_type.split("-")[0]
        model_name = model_type[len(model_provider) + 1:]

        evaluate(
            predict,
            data=dataset_name,
            evaluators=[answer_evaluator],
            # ADD IN METADATA HERE!!
            metadata={
                "model_provider": model_provider,
                "model_name": model_name,
                "prompt_id": prompt_type
            }
        )

UI에서 실험 필터링하기

UI에서는 기본적으로 실행된 모든 실험을 볼 수 있습니다. 예를 들어, openai 모델을 선호하는 경우 쉽게 필터링하여 openai 모델 내의 점수만 먼저 확인할 수 있습니다: 필터를 중첩하여 적용할 수 있으며, 이를 통해 정확도가 낮은 점수를 제외하고 관련 있는 실험만 비교할 수 있습니다: 마지막으로, 필터를 지우고 재설정할 수 있습니다. 예를 들어, singleminded 프롬프트로 명확한 우승자가 있는 것을 확인했다면, 필터링 설정을 변경하여 다른 모델 제공자의 모델들도 해당 프롬프트와 잘 작동하는지 확인할 수 있습니다:
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I