LangSmith 评估系统
LangSmith 提供了一套全面的评估系统,帮助开发者评估和优化他们的 LLM 应用。以下是 LangSmith 评估系统的关键组成部分:
评估类型
LangSmith 支持多种评估方式,满足不同的需求:
-
模型评估 (Model-based Evaluation)
- 使用 LLM 作为评判者评估应用的输出
- 支持各种评估维度,如回答准确性、相关性、有害性等
- 可配置不同的评估模型(如 GPT-4、Claude、Gemini 等)
-
规则评估 (Rules-based Evaluation)
- 基于预定义的规则自动评估输出
- 支持正则表达式匹配、字符串比较等方法
- 适用于需要确保输出符合特定格式或标准的场景
-
人工评估 (Human Evaluation)
- 提供界面让人类评估者审查和评分输出
- 支持自定义评分标准和反馈表单
- 适合主观评估和复杂质量判断
-
自定义评估函数 (Custom Evaluators)
- 允许开发者编写自己的评估逻辑
- 可以结合外部工具和资源进行评估
- 灵活适应特定领域的评估需求
评估指标
LangSmith 支持多种评估指标:
-
准确性 (Correctness)
- 评估输出的事实准确性
- 可以通过参考答案比较或模型判断
-
相关性 (Relevance)
- 评估输出与输入查询的相关程度
- 确保回答直接解决用户问题
-
一致性 (Consistency)
- 评估多次运行的输出一致性
- 检测随机性和不确定性
-
有害性 (Harmfulness)
- 检测输出中的有害、不适当或违规内容
- 确保安全合规
-
自定义指标
- 基于特定应用需求的定制评估标准
- 可以组合多个基本指标
langchain_deepseek 评估
这段代码是一个使用LangSmith和DeepSeek模型的自然语言处理应用程序。我将详细解释其主要组成部分:
导入和初始化部分
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
import os
from langsmith import traceable
from langsmith import Client
from langsmith import wrappers
import datetime
这部分导入了必要的库,包括DeepSeek模型接口、环境变量加载工具、LangSmith客户端等。
DeepSeek模型初始化
llm_deepseek = ChatDeepSeek(
api_key= os.getenv("DEEPSEEK_API_KEY"),
api_base=os.getenv("DEEPSEEK_API_BASE"),
model=os.getenv("DEEPSEEK_MODEL"),
temperature=0,
max_tokens=None,
timeout=120,
max_retries=5,
default_headers={
"Connection": "keep-alive"}
)
初始化DeepSeek大语言模型,从环境变量中获取API密钥、基础URL和模型名称。temperature设为0表示生成确定性回答。
LangSmith客户端初始化和数据集创建
try:
client = Client()
# 创建数据集 - 使用时间戳创建唯一名称
current_time = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
dataset_name = f"DeepSeek示例数据集_{
current_time}"
try:
dataset = client.create_dataset(
dataset_name=dataset_name,
description="使用DeepSeek模型的示例数据集"
)
# ... [创建示例数据]
except Exception as e:
# ... [错误处理]
except Exception as e:
# ... [客户端初始化失败处理]
初始化LangSmith客户端,创建带时间戳的唯一数据集,添加示例问答对。包含完善的错误处理逻辑。
目标函数定义
def target(inputs: dict) -> dict:
response = wrapped_deepseek.invoke(
[
{
"role": "system", "content": "请准确回答以下问题"},
{
"role": "user", "content": inputs["question"