LangSmith 调试与综合项目实战:从追踪到评估,打造生产级智能客服助手

摘要:LangChain 应用能跑起来只是第一步,如何调试、观察和评估效果才是真实项目的核心挑战。本文系统梳理 LangChain 第11章完整内容,从 LangSmith 追踪配置、7个实战案例(普通调用追踪、LCEL Chain 追踪、Agent 工具调用追踪、Chain 评估、RAG 评估、Agent 评估、LangSmith 平台评估),到企业智能客服综合项目(RAG + Agent 组合),再到上线前完整的 Prompt / RAG / Agent / 评估 / 安全检查清单。每个知识点均配有可直接运行的代码示例,帮你建立从开发到上线的完整质量保障体系。


目录

  • 一、本章目标
  • 二、为什么需要 LangSmith
  • 三、LangSmith 能看到什么
  • 四、开通和配置 LangSmith
  • 五、安装依赖
  • 六、案例一:追踪一次普通模型调用
  • 七、案例二:追踪 LCEL Chain
  • 八、案例三:追踪 Agent 工具调用
  • 九、什么是评估
  • 十、案例四:评估普通 Chain
  • 十一、案例五:评估 RAG 问答
  • 十二、案例六:评估 Agent 工具调用
  • 十三、案例七:通过 LangSmith 进行评估
  • 十四、综合项目:企业智能客服助手
    • 14.1 项目需求
    • 14.2 项目结构
    • 14.3 requirements.txt
    • 14.4 model_factory.py
    • 14.5 business_tools.py
    • 14.6 customer_agent.py
    • 14.7 app.py
    • 14.8 eval_app.py
  • 十五、综合项目运行顺序
  • 十六、上线前检查清单
  • 十七、常见问题
  • 十八、本章重点
  • 封面图提示词

一、本章目标

前面章节已经完成了 LangChain 的核心能力:

  • 调用 DeepSeek
  • 使用 Prompt 模板
  • 结构化输出
  • LCEL 链式调用
  • 文档加载与切分
  • Embedding 和向量数据库
  • RAG 知识库问答
  • Tool 和 Agent

这一章开始关注一个真实项目中非常重要的问题:

应用能跑起来之后,如何调试、观察和评估效果?

学完本章后,你应该能够:

  • 理解 LangSmith 的作用
  • 开启 LangChain 调用追踪
  • 在 LangSmith 中查看模型调用、Prompt、Token 和耗时
  • 给不同项目设置追踪名称
  • 给运行过程添加标签和元数据
  • 编写简单的测试集评估 RAG 效果
  • 编写简单的测试集评估 Agent 工具调用
  • 完成一个课程综合项目
  • 理解上线前应该检查哪些关键问题

二、为什么需要 LangSmith

在简单案例中,我们通常只看终端输出:

回答:退款通常在 1 至 3 个工作日到账。

但真实项目出问题时,只看最终输出远远不够。例如:

RAG 回答错了

你需要知道:

  • 用户原始问题是什么
  • Retriever 检索到了哪些文档
  • Prompt 最终长什么样
  • 模型输入了多少 Token
  • 模型输出了什么
  • 哪一步耗时最长
  • Agent 有没有调用工具
  • 工具参数是否正确
  • 工具返回了什么

LangSmith 就是用来观察、调试和评估大模型应用的平台。 它可以把一次 LangChain 调用记录成完整链路。


三、LangSmith 能看到什么

开启追踪后,LangSmith 中可以看到:

内容作用
Trace一次完整调用链路
Run链路中的一个步骤
Input当前步骤输入
Output当前步骤输出
Prompt发送给模型的提示词
Tool CallAgent 调用工具的记录
Token模型输入和输出消耗
Latency每一步耗时
Error报错信息
Metadata自定义业务信息

对于 RAG 项目,重点看:

  • 检索问题是否正确
  • 检索结果是否相关
  • 上下文是否传给模型
  • 模型是否根据资料回答

对于 Agent 项目,重点看:

  • 是否调用了工具
  • 调用了哪个工具
  • 工具参数是否正确
  • 工具结果是否被模型正确使用

四、开通和配置 LangSmith

访问:https://smith.langchain.com/

登录后创建 API Key。

在项目根目录创建 .env

LANGSMITH_TRACING=true
LANGSMITH_API_KEY=lsv2_xxxxxxxxxxxxxx
LANGSMITH_PROJECT=customer-service
DEEPSEEK_API_KEY=sk-f3c7557e9fc54541802fd638de03bbeb
DEEPSEEK_BASE_URL=https://api.deepseek.com

环境变量说明:

变量作用
LANGSMITH_TRACING是否开启追踪
LANGSMITH_API_KEYLangSmith API Key
LANGSMITH_PROJECT追踪记录所属项目
DEEPSEEK_API_KEYDeepSeek API Key
DEEPSEEK_BASE_URLDeepSeek OpenAI 兼容接口地址

如果暂时不想开启 LangSmith,可以改成:

LANGSMITH_TRACING=false

五、安装依赖

安装本章依赖:

pip install langsmith langchain-openai

国内镜像:

pip install langsmith langchain-openai -i https://pypi.tuna.tsinghua.edu.cn/simple

如果要运行综合 RAG 和 Agent 项目,还需要:

pip install langchain langchain-community chromadb sentence-transformers

六、案例一:追踪一次普通模型调用

创建 01_trace_chat.py

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage

load_dotenv()

model = ChatOpenAI(
    model="deepseek-chat",
    api_key="sk-f3c7557e9fc54541802fd638de03bbeb",
    base_url="https://api.deepseek.com",
    temperature=0.7,
)

response = model.invoke([HumanMessage(content="你好,请介绍一下 LangChain")])
print(response.content)

运行:

python 01_trace_chat.py

如果 .env 中配置了:

LANGSMITH_TRACING=true
LANGSMITH_API_KEY=lsv2_xxxxxxxxxxxxxx

运行后就可以在 LangSmith 项目中看到这次调用。

你可以重点查看:

  • 输入内容
  • 模型输出
  • 调用耗时
  • Token 消耗
  • 模型名称

七、案例二:追踪 LCEL Chain

创建 02_trace_chain.py

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

load_dotenv()

model = ChatOpenAI(
    model="deepseek-chat",
    api_key="sk-f3c7557e9fc54541802fd638de03bbeb",
    base_url="https://api.deepseek.com",
    temperature=0.7,
)

prompt = ChatPromptTemplate.from_template("请用一句话解释:{topic}")
chain = prompt | model | StrOutputParser()

result = chain.invoke(
    {"topic": "RAG"},
    config={
        "run_name": "rag_explain",
        "tags": ["demo", "lcel"],
        "metadata": {"user_id": "user_001", "session_id": "sess_123"},
    },
)
print(result)

运行:

python 02_trace_chain.py

这里的 config 可以给本次运行增加信息:

  • run_name:运行名称,方便在 LangSmith 中筛选
  • tags:标签,用于分类和过滤
  • metadata:元数据,可以存储业务信息

在 LangSmith 中,run_nametagsmetadata 可以帮助你筛选和定位调用记录。


八、案例三:追踪 Agent 工具调用

创建 03_trace_agent.py

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.agents import create_agent
from langchain.tools import tool
from langchain_core.messages import HumanMessage

load_dotenv()

@tool
def query_order(order_id: str) -> str:
    """查询订单状态"""
    return f"订单 {order_id} 已发货,预计 2 天到达。"

model = ChatOpenAI(
    model="deepseek-chat",
    api_key="sk-f3c7557e9fc54541802fd638de03bbeb",
    base_url="https://api.deepseek.com",
    temperature=0.7,
)

agent = create_agent(
    model=model,
    tools=[query_order],
    system_prompt="你是一个客服助手,可以查询订单状态。",
)

result = agent.invoke({"messages": [HumanMessage(content="订单 A1002 发货了吗?")]})
for msg in result["messages"]:
    print(f"{type(msg).__name__}: {msg.content}")

运行:

python 03_trace_agent.py

在 LangSmith 中可以看到:

用户提问 → 大模型识别需要调用工具 → 调用查询订单接口 → 获取接口数据 → 大模型把原始数据整理成自然语言回答用户

这对调试 Agent 非常有用。

如果 Agent 没有调用工具,可以在 Trace 中检查:

  • 工具描述是否传给模型
  • 用户问题是否包含订单号
  • 模型是否直接生成了答案
  • 工具调用参数是否错误

九、什么是评估

调试解决的是单次调用问题。评估关注的是一批问题的整体效果。

例如 RAG 知识库问答,我们希望知道:

  • 100 个问题里有多少回答正确
  • 检索到的文档是否相关
  • 模型有没有编造答案

最简单的评估方式是准备测试集:

test_cases = [
    {
        "question": "每个月可以补卡几次",
        "expected_keywords": ["3", "三次"],
    },
    {
        "question": "退款多久到账",
        "expected_keywords": ["1", "3", "工作日"],
    },
]

然后批量调用应用,检查答案中是否包含预期关键词。

这种程序可以称为一个简单的评估 harness。


十、案例四:评估普通 Chain

创建 04_eval_chain.py

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

load_dotenv()

model = ChatOpenAI(
    model="deepseek-chat",
    api_key="sk-f3c7557e9fc54541802fd638de03bbeb",
    base_url="https://api.deepseek.com",
    temperature=0.7,
)

prompt = ChatPromptTemplate.from_template("请用一句话解释:{topic}")
chain = prompt | model | StrOutputParser()

# 测试集
test_cases = [
    {"topic": "RAG", "expected_keywords": ["检索", "增强"]},
    {"topic": "Agent", "expected_keywords": ["工具", "调用"]},
    {"topic": "MCP", "expected_keywords": ["协议", "上下文"]},
]

# 运行评估
for case in test_cases:
    result = chain.invoke({"topic": case["topic"]})
    passed = any(kw in result for kw in case["expected_keywords"])
    status = "通过" if passed else "失败"
    print(f"[{status}] {case['topic']}: {result}")

运行:

python 04_eval_chain.py

关键词评估很简单,但适合入门。真实项目中还可以继续增加:

  • 人工评分
  • 大模型评分
  • 标准答案对比
  • 检索结果相关性评估
  • 工具调用正确性评估

十一、案例五:评估 RAG 问答

下面复用第八章的 RAGService

项目中已有:

  • build_index.py:构建知识库索引
  • rag_service.py:RAG 问答服务
  • data/faq.md:知识库文档

创建 05_eval_rag.py

from dotenv import load_dotenv
from rag_service import RAGService

load_dotenv()

rag = RAGService()

# 测试集:问题 + 预期关键词
test_cases = [
    {
        "question": "每个月可以补卡几次",
        "expected_keywords": ["3", "三次"],
    },
    {
        "question": "退款多久到账",
        "expected_keywords": ["1", "3", "工作日"],
    },
    {
        "question": "支持哪些支付方式",
        "expected_keywords": ["微信", "支付宝", "银行卡"],
    },
    {
        "question": "会员有什么权益",
        "expected_keywords": ["折扣", "积分", "优先"],
    },
]

# 批量评估
for case in test_cases:
    answer = rag.ask(case["question"])
    passed = any(kw in answer for kw in case["expected_keywords"])
    status = "通过" if passed else "失败"
    print(f"[{status}] Q: {case['question']}")
    print(f"       A: {answer[:80]}...")
    print()

运行:

python 05_eval_rag.py

如果某个用例失败,建议按下面顺序排查:

  1. 检索到的文档是否包含答案(Retriever 问题)
  2. Prompt 中上下文是否正确传递(Prompt 问题)
  3. 模型是否根据上下文回答(模型问题)
  4. 关键词是否在答案中但措辞不同(评估标准问题)

这个顺序比盲目修改 Prompt 更有效。


十二、案例六:评估 Agent 工具调用

Agent 的评估不仅要看最终回答,还要看是否调用了正确工具。

创建 06_eval_agent.py

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.agents import create_agent
from langchain.tools import tool
from langchain_core.messages import HumanMessage

load_dotenv()

@tool
def query_order(order_id: str) -> str:
    """查询订单状态"""
    return f"订单 {order_id} 已发货。"

@tool
def check_stock(product_id: str) -> str:
    """查询库存"""
    return f"商品 {product_id} 库存充足。"

model = ChatOpenAI(
    model="deepseek-chat",
    api_key="sk-f3c7557e9fc54541802fd638de03bbeb",
    base_url="https://api.deepseek.com",
    temperature=0.7,
)

agent = create_agent(
    model=model,
    tools=[query_order, check_stock],
    system_prompt="你是一个客服助手,可以查询订单和库存。",
)

# 测试集:问题 + 预期调用的工具
test_cases = [
    {
        "question": "订单 A1002 发货了吗",
        "expected_tool": "query_order",
        "expected_keywords": ["发货"],
    },
    {
        "question": "商品 P2001 还有库存吗",
        "expected_tool": "check_stock",
        "expected_keywords": ["库存"],
    },
]

for case in test_cases:
    result = agent.invoke({"messages": [HumanMessage(content=case["question"])]})
    messages = result["messages"]
    
    # 检查是否调用了预期工具
    tool_calls = [msg for msg in messages if hasattr(msg, "tool_calls") and msg.tool_calls]
    actual_tool = tool_calls[-1].tool_calls[0]["name"] if tool_calls else "未调用"
    
    tool_passed = actual_tool == case["expected_tool"]
    
    # 检查答案关键词
    final_answer = messages[-1].content
    answer_passed = any(kw in final_answer for kw in case["expected_keywords"])
    
    status = "通过" if tool_passed and answer_passed else "失败"
    print(f"[{status}] Q: {case['question']}")
    print(f"       预期工具: {case['expected_tool']}, 实际工具: {actual_tool}")
    print(f"       A: {final_answer[:80]}...")
    print()

运行:

python 06_eval_agent.py

Agent 评估时至少关注两件事:

  • 最终回答是否正确
  • 工具调用是否正确

如果回答对了但工具没调,说明模型可能在猜。如果工具调了但回答错了,说明模型没有正确使用工具结果。


十三、案例七:通过 LangSmith 进行评估

以上两个案例都是本地进行评估测试,和 LangSmith 无关。LangSmith 本身也提供了评估能力。

创建 07_langsmith_eval.py

from dotenv import load_dotenv
from langsmith import Client
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

load_dotenv()

# 创建 LangSmith 数据集
client = Client()

# 创建数据集
dataset = client.create_dataset(
    dataset_name="rag_eval_dataset",
    description="RAG 问答评估数据集",
)

# 添加示例
client.create_examples(
    inputs=[
        {"question": "每个月可以补卡几次"},
        {"question": "退款多久到账"},
        {"question": "支持哪些支付方式"},
    ],
    outputs=[
        {"answer": "每月可以补卡 3 次"},
        {"answer": "退款通常在 1 至 3 个工作日到账"},
        {"answer": "支持微信支付、支付宝和银行卡"},
    ],
    dataset_id=dataset.id,
)

# 定义评估函数
def evaluate_answer(run, example):
    prediction = run.outputs["output"]
    reference = example.outputs["answer"]
    
    # 简单关键词匹配
    passed = any(kw in prediction for kw in reference.split())
    return {"score": 1 if passed else 0, "comment": f"预测: {prediction}"}

# 运行评估
model = ChatOpenAI(
    model="deepseek-chat",
    api_key="sk-f3c7557e9fc54541802fd638de03bbeb",
    base_url="https://api.deepseek.com",
    temperature=0.7,
)

prompt = ChatPromptTemplate.from_template("基于公司制度回答问题:{question}")
chain = prompt | model | StrOutputParser()

# 提交评估到 LangSmith
client.run_on_dataset(
    dataset_name="rag_eval_dataset",
    llm_or_chain_factory=lambda: chain,
    evaluation=evaluate_answer,
)

print("评估已提交到 LangSmith,请在平台查看结果。")

运行,查看结果:

python 07_langsmith_eval.py

在 LangSmith 平台可以看到:

  • 数据集:包含问题和标准答案
  • 评估效果:每个测试用例的评分和对比

十四、综合项目:企业智能客服助手

14.1 项目需求

综合项目把前面知识整合成一个企业智能客服助手。

系统支持两类问题:

  1. 知识库问题
  2. 业务查询问题

示例:

用户问题处理方式
每个月可以补卡几次RAG 知识库问答
退款多久到账RAG 知识库问答
订单 A1002 发货了吗Agent 调用订单工具
商品 P2001 还有库存吗Agent 调用库存工具
299 元打八折多少钱Agent 调用计算工具

14.2 项目结构

customer-service/
├── .env                  # 环境变量
├── requirements.txt      # 依赖
├── model_factory.py      # 模型工厂
├── build_index.py        # 构建知识库索引
├── rag_service.py        # 处理知识库问答
├── business_tools.py     # 业务查询工具
├── customer_agent.py     # 工具调用 Agent
├── app.py                # 终端入口
└── eval_app.py           # 测试评估入口

其中:

  • build_index.py:构建知识库索引
  • rag_service.py:处理知识库问答
  • business_tools.py:业务查询工具
  • customer_agent.py:工具调用 Agent
  • app.py:终端入口
  • eval_app.py:测试评估入口

14.3 requirements.txt

langchain
langchain-openai
langchain-community
chromadb
sentence-transformers
python-dotenv

安装:

pip install -r requirements.txt

14.4 model_factory.py

from langchain_openai import ChatOpenAI
import os


def get_model():
    return ChatOpenAI(
        model="deepseek-chat",
        api_key=os.getenv("DEEPSEEK_API_KEY"),
        base_url=os.getenv("DEEPSEEK_BASE_URL"),
        temperature=0.7,
    )

14.5 business_tools.py

from langchain.tools import tool


@tool
def query_order(order_id: str) -> str:
    """查询订单状态。当用户询问订单相关信息时调用。"""
    orders = {
        "A1001": "已发货,预计明天到达",
        "A1002": "已发货,预计 2 天到达",
        "A1003": "处理中,预计 3 天发货",
    }
    return orders.get(order_id, f"未找到订单 {order_id}")


@tool
def check_stock(product_id: str) -> str:
    """查询商品库存。当用户询问商品库存时调用。"""
    stocks = {
        "P2001": "库存充足(剩余 500 件)",
        "P2002": "库存紧张(剩余 10 件)",
        "P2003": "暂时缺货",
    }
    return stocks.get(product_id, f"未找到商品 {product_id}")


@tool
def calculate_discount(price: float, discount: float) -> str:
    """计算折扣价格。当用户询问打折后的价格时调用。"""
    result = price * discount
    return f"原价 {price} 元,打 {discount * 10} 折后价格为 {result:.2f} 元"

14.6 customer_agent.py

from langchain.agents import create_agent
from langchain_core.messages import HumanMessage
from model_factory import get_model
from business_tools import query_order, check_stock, calculate_discount


def create_customer_agent():
    model = get_model()
    tools = [query_order, check_stock, calculate_discount]
    
    agent = create_agent(
        model=model,
        tools=tools,
        system_prompt=(
            "你是一个专业的企业客服助手。"
            "你可以回答知识库问题(由 RAG 处理),也可以查询订单、库存和计算折扣。"
            "回答要简洁友好。"
        ),
    )
    return agent

14.7 app.py

from dotenv import load_dotenv
from customer_agent import create_customer_agent
from rag_service import RAGService
from langchain_core.messages import HumanMessage

load_dotenv()

rag = RAGService()
agent = create_customer_agent()


def route_question(question: str):
    """根据关键词做简单路由"""
    order_keywords = ["订单", "发货", "物流"]
    stock_keywords = ["库存", "商品", "有没有"]
    calc_keywords = ["打折", "折扣", "多少钱"]
    
    if any(kw in question for kw in order_keywords):
        return "agent"
    if any(kw in question for kw in stock_keywords):
        return "agent"
    if any(kw in question for kw in calc_keywords):
        return "agent"
    return "rag"


def chat(question: str):
    route = route_question(question)
    
    if route == "rag":
        answer = rag.ask(question)
        return answer
    else:
        result = agent.invoke({"messages": [HumanMessage(content=question)]})
        return result["messages"][-1].content


if __name__ == "__main__":
    while True:
        question = input("用户:")
        if question.lower() in ["exit", "quit", "bye"]:
            break
        answer = chat(question)
        print(f"客服:{answer}\n")

这里使用关键词做简单路由:

def route_question(question: str):
    """根据关键词做简单路由"""
    order_keywords = ["订单", "发货", "物流"]
    stock_keywords = ["库存", "商品", "有没有"]
    calc_keywords = ["打折", "折扣", "多少钱"]
    
    if any(kw in question for kw in order_keywords):
        return "agent"
    if any(kw in question for kw in stock_keywords):
        return "agent"
    if any(kw in question for kw in calc_keywords):
        return "agent"
    return "rag"

这样容易理解。后续可以改成意图分类 Chain,或者在 LangGraph 中做条件路由。

14.8 eval_app.py

from app import chat

# 测试集
test_cases = [
    {
        "question": "每个月可以补卡几次",
        "expected_keywords": ["3", "三次"],
        "route": "rag",
    },
    {
        "question": "订单 A1002 发货了吗",
        "expected_keywords": ["发货"],
        "route": "agent",
    },
    {
        "question": "299 元打八折多少钱",
        "expected_keywords": ["239.2"],
        "route": "agent",
    },
]

# 运行评估
for case in test_cases:
    answer = chat(case["question"])
    passed = any(kw in answer for kw in case["expected_keywords"])
    status = "通过" if passed else "失败"
    print(f"[{status}] Q: {case['question']}")
    print(f"       Route: {case['route']}, A: {answer[:80]}...")
    print()

运行评估:

python eval_app.py

十五、综合项目运行顺序

15.1 配置环境变量

.env

LANGSMITH_TRACING=true
LANGSMITH_API_KEY=lsv2_xxxxxxxxxxxxxx
LANGSMITH_PROJECT=customer-service
DEEPSEEK_API_KEY=sk-f3c7557e9fc54541802fd638de03bbeb
DEEPSEEK_BASE_URL=https://api.deepseek.com

15.2 构建知识库索引

python build_index.py

15.3 启动客服助手

python app.py

15.4 执行评估

python eval_app.py

15.5 查看 LangSmith

在 LangSmith 中查看:

  • RAG 调用链路
  • Agent 工具调用链路
  • 每个测试用例的输入输出
  • 错误用例的具体失败位置

十六、上线前检查清单

16.1 Prompt 检查

  • 是否明确角色
  • 是否限制模型不要编造
  • 是否说明资料不足时怎么回答
  • 是否避免把检索资料当成系统指令

16.2 RAG 检查

  • 文档是否完整
  • 文档切分是否合理
  • 向量索引是否更新
  • 检索结果是否相关
  • 答案是否展示来源

16.3 Agent 检查

  • 工具描述是否清晰
  • 工具参数是否有类型和说明
  • 工具内部是否做参数校验
  • 高风险操作是否需要人工确认
  • 是否能查看工具调用日志

16.4 评估检查

  • 是否有固定测试集
  • 是否覆盖常见问题
  • 是否覆盖资料不足问题
  • 是否覆盖工具调用问题
  • 是否记录失败案例

16.5 安全检查

  • API Key 是否放在 .env
  • .env 是否加入 .gitignore
  • 用户输入是否可能造成 Prompt 注入
  • 工具是否会执行高风险操作
  • 是否记录必要日志

十七、常见问题

17.1 为什么 LangSmith 看不到记录

优先检查:

  • LANGSMITH_TRACING 是否为 "true"
  • LANGSMITH_API_KEY 是否正确
  • LANGSMITH_PROJECT 是否看错项目
  • 程序是否真的执行了模型调用
  • 网络是否可以访问 LangSmith

17.2 是否每次都要开启 LangSmith

开发和调试阶段建议开启。

生产环境可以根据公司要求决定是否开启、采样或脱敏。

如果涉及用户隐私或敏感业务数据,需要先确认合规要求。

17.3 LangSmith 会记录 Prompt 和输入吗

会记录调用链路中的输入、输出和 Prompt 等信息。

所以涉及敏感数据时,要考虑脱敏、权限和合规。

17.4 关键词评估靠谱吗

关键词评估简单直观,适合作为入门。

但它不能覆盖所有情况。例如答案意思正确,但没有使用预期关键词,就可能被误判失败。

后续可以增加人工评分或大模型评分。

17.5 为什么综合项目路由用关键词

关键词路由简单、可解释,适合课堂演示。

后续可以改成:

  • 意图分类 Chain
  • Agent 自主选择
  • LangGraph 条件路由

十八、本章重点

本章需要重点掌握:

  • LangSmith 用于观察、调试和评估大模型应用
  • 开启追踪需要配置 LANGSMITH_TRACINGLANGSMITH_API_KEY
  • LANGSMITH_PROJECT 可以区分不同项目
  • config 可以设置 run_nametagsmetadata
  • RAG 调试要重点看检索结果和最终上下文
  • Agent 调试要重点看工具调用和工具返回结果
  • 简单测试集可以作为评估 harness
  • 综合项目可以把 RAG 和 Agent 组合起来
  • 上线前要检查 Prompt、RAG、Agent、评估和安全


如果觉得这篇文章对你有帮助,欢迎点赞收藏。你在使用 LangSmith 调试时遇到了什么问题?评论区交流。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐