news 2026/8/1 9:21:00

LangSmith 模型评估 (Evaluation) 完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangSmith 模型评估 (Evaluation) 完整指南

本文档将手把手教你如何使用LangSmith对 LLM(如 Gemini, DeepSeek, GPT)进行自动化评估和对比。


1. 注册与准备

1.1 注册账号

  1. 访问 LangSmith 官网。此处需要魔法
  2. 使用 GitHub 或 Google 账号登录。
  3. 注意:LangSmith 分为US (美国)EU (欧洲)两个数据中心。注册时请留意你所在的区域(或者由系统自动分配)。

1.2 获取 API Key

  1. 登录后,点击左下角的Settings (设置)图标。
  2. 选择API Keys选项卡。
  3. 点击Create API Key
  4. 给 Key 起个名字(如 “Test Key”),然后复制保存(只显示一次)。

    在上图这里选 Run an Evaluation


点击这里Generate API key 就会获得一个key

1.3 确认 Endpoint (关键步骤!)

如果你的账号被分配到了EU (欧洲)节点(URL 是eu.smith.langchain.com),你必须显式配置 Endpoint,否则会报403 Forbidden

  • US 节点(默认):https://api.smith.langchain.com
  • EU 节点https://eu.api.smith.langchain.com

设置环境变量:

ANGCHAIN_ENDPOINT="https://eu.api.smith.langchain.com"LANGCHAIN_API_KEY="lsvxxxxxxxxxxxxxxxxxxxx"

2. 环境配置

2.1 安装依赖

你需要安装langsmithlangchain相关库。

pipinstalllangsmith langchain langchain-openai

2.2 配置环境变量 (.env)

在项目根目录创建.env文件,填入以下内容:

# 开启 Tracing (可选,但推荐) LANGCHAIN_TRACING_V2=true # 你的 API Key LANGCHAIN_API_KEY="ls__your_api_key_here" # 如果你是 EU 账号,必须加这一行!US 账号可忽略 LANGCHAIN_ENDPOINT="https://eu.api.smith.langchain.com" # 你的模型 Key (用于调用模型) GEMINI_API_KEY="AIza..." DEEPSEEK_API_KEY="sk-..."

3. 实战代码:模型对比评估

我们将编写一个脚本,对比GeminiDeepSeek在回答同一组问题时的表现。

完整代码 (compare_model.py)

importosfromlangsmithimportClient,evaluatefromsrc.llm.gemini_chat_modelimportget_gemini_llmfromsrc.llm.deepseek_chat_modelimportget_deepseek_llm# ================= 1. 初始化客户端 =================client=Client()# ================= 2. 准备数据集 (Dataset) =================# 数据集名称dataset_name="AI_Interview_Questions"# 检查数据集是否存在,不存在则创建ifnotclient.has_dataset(dataset_name=dataset_name):print(f"创建新数据集:{dataset_name}")dataset=client.create_dataset(dataset_name=dataset_name,description="用于测试模型的基础问答能力")# 写入测试用例 (Inputs)# 可以在这里添加标准答案 (Outputs) 用于自动打分,这里仅做生成测试client.create_examples(inputs=[{"prompt":"什么是 RAG (Retrieval-Augmented Generation)?"},{"prompt":"用 Python 写一个快排算法。"},{"prompt":"解释量子纠缠,像我只有5岁一样。"},],dataset_id=dataset.id,)else:print(f"使用现有数据集:{dataset_name}")# ================= 3. 准备模型 (Target Functions) =================# 初始化 LangChain 模型对象gemini=get_gemini_llm()deepseek=get_deepseek_llm()# 定义包装函数# LangSmith 会把数据集里的 inputs (如 {"prompt": "..."}) 传给这个函数defpredict_gemini(inputs:dict):# 调用模型response=gemini.invoke(inputs["prompt"])# 返回结果,key 可以是 "output" 或 "answer"return{"output":response.content}defpredict_deepseek(inputs:dict):response=deepseek.invoke(inputs["prompt"])return{"output":response.content}# ================= 4. 运行评估 (Run Evaluation) =================print("开始评估 Gemini...")evaluate(predict_gemini,data=dataset_name,experiment_prefix="gemini-v1",# 实验名称前缀description="Gemini Pro 基础测试")print("开始评估 DeepSeek...")evaluate(predict_deepseek,data=dataset_name,experiment_prefix="deepseek-v1",description="DeepSeek Chat 基础测试")

4. 代码深度解析

Step 1:client.create_dataset

  • 作用:在云端创建一个持久化的数据集。
  • 特性:数据集只需创建一次。之后你可以反复使用它来测试不同的模型,或者测试同一个模型的不同版本(Prompt 迭代)。
    当dataset 创建后, 可以从langsmith也页面见到该dataset

Step 2:client.create_examples

  • Inputs:模型的输入(Prompt)。
  • Outputs (可选):标准答案(Ground Truth)。如果提供了 Output,你可以使用“正确性评估器”来自动判断模型回答得对不对。

Step 3:predict_wrapper(包装函数)

  • evaluate函数需要一个可调用的对象(函数)。
  • 这个函数接收inputs字典,必须返回一个字典(通常包含output)。
  • 你可以在这里进行 Prompt 组装、解析 JSON 等预处理/后处理逻辑。

Step 4:evaluate(核心)

这是 LangSmith 的魔法所在。它会:

  1. 拉取数据集中的每一条例子。
  2. 并发调用你的predict函数。
  3. 将 Input, Output, Latency (耗时), Token Usage 等信息全部上传到云端。
  4. 生成一个唯一的Experiment (实验)链接。

5. 查看结果

  1. 运行脚本后,控制台会输出一个 URL。
  2. 点击进入 LangSmith 网页。
  3. 你可以看到一个对比视图
    • 每一行是一个测试用例(Prompt)。
    • 每一列是一个实验(Gemini vs DeepSeek)。
  4. 你可以直观地看到:
    • 哪个模型回答得更准确?
    • 哪个模型速度更快(Latency)?
    • 哪个模型更啰嗦?

通过这种方式,原本凭感觉的“模型好坏”,变成了可视化、可量化的数据。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/1 3:35:16

java中<clinit>()与<init>()区别

一、先明确两个 “构造方法” 的核心区别Java 中有两种不同的 “构造方法”&#xff0c;二者的作用、执行时机完全无关&#xff1a;构造方法类型名称&#xff08;字节码层面&#xff09;通俗理解手动定义方式核心作用类构造方法<clinit>()静态构造器、类初始化方法无需手…

作者头像 李华
网站建设 2026/8/1 17:18:59

优化程序性能:JVM 会对final变量进行优化(如编译期常量折叠,直接将常量值嵌入字节码中,避免运行时获取);具体含义

你想深入理解 JVM 对final变量的性能优化 ——** 编译期常量折叠&#xff08;Constant Folding&#xff09;** 的具体含义&#xff0c;我会从「核心定义、前提条件、执行过程、代码验证、例外情况」五个方面展开&#xff0c;用通俗的语言 直观案例帮你彻底搞懂。一、常量折叠的…

作者头像 李华
网站建设 2026/7/30 6:53:23

团队项目管理软件哪个好?9款协作高效、界面友好的工具对比测评

本文旨在为企业管理系统选型者提供一份基于数据实测与逻辑推演的团队项目管理软件评估指南。团队项目管理软件作为企业数字化转型的核心基础设施&#xff0c;其本质是通过算法与流程规范来解决组织内部的信息不对称与资源冲突问题。 随着企业对数据安全主权意识的增强以及远程/…

作者头像 李华
网站建设 2026/7/31 22:15:26

ADTS (Audio Data Transport Stream)

ADTS (Audio Data Transport Stream) 是AAC音频编码的一种传输流封装格式&#xff0c;专为网络流媒体传输设计。核心特点&#xff1a;每帧独立解码&#xff1a;每个AAC帧前都添加ADTS头信息&#xff0c;允许在任意位置开始解码流式传输友好&#xff1a;支持实时播放&#xff0c…

作者头像 李华
网站建设 2026/8/1 14:13:51

个人财务管理工具 HomeBank v5.9.6 中文便携版

链接&#xff1a; https://pan.quark.cn/s/87fccd2f8c56 介绍 HomeBank 是一款开源免费财务管理软件&#xff0c;可帮助您管理个人账户和开支。HomeBank 易于使用图形和自定义过滤器&#xff0c;旨在为您提供财务概览。如果您正在寻找一个完全免费&#xff0c;简单的应用程序…

作者头像 李华
网站建设 2026/7/27 23:17:47

Excel高性能异步导出完整方案!

大型电商系统中&#xff0c;数据导出是一个高频且重要的功能需求。传统的同步导出方式在面对大数据量时往往会导致请求超时、内存溢出等问题&#xff0c;严重影响用户体验。苏三商城项目创新性地设计并实现了一套完整的Excel异步导出机制&#xff0c;通过注解驱动、任务队列、定…

作者头像 李华