生产与 LangSmith

上线 LangChain 应用需要 可观测性、评估、安全与部署LangSmith 是 LangChain 官方的可观测与评估平台,与 LangGraph 部署能力互补。


LangSmith 是什么?

  • Tracing:每次 invoke / stream 的 LLM 调用、工具、延迟、token
  • Datasets & Evals:回归测试集、自动评分
  • Monitoring:生产流量异常检测(Engine 等能力持续演进)

官网:smith.langchain.com


启用 Tracing

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY="lsv2_pt_..."
export LANGCHAIN_PROJECT="my-app-prod"

代码无需改动(或显式 @traceable 装饰关键函数)。在 Smith UI 查看:

  • 完整 message 轨迹
  • Tool 输入输出
  • 各步耗时

评估(Eval)

  1. 在 LangSmith 创建 Dataset(input / reference output)
  2. 对 Agent 批量 invoke
  3. LLM-as-judge 或规则指标(含关键词、JSON schema)打分

RAG 场景重点指标:faithfulness(是否胡编)、answer relevancecontext precision


本地开发 vs 生产

Concern开发生产
CheckpointerInMemory / SQLitePostgres / Redis
Secrets.envVault / K8s Secret
Rate limit可选必须(Middleware / 网关)
Loggingprint / structlog集中日志 + trace id
版本随意锁定 langchain / langgraph 版本

安全要点

  • Prompt injection:工具返回不可信 HTML/文本,需沙箱与权限最小化
  • 工具权限:数据库只读账号、网络 egress 限制
  • PII:Middleware 脱敏后再送模型
  • 成本控制:限步数、小模型路由、缓存

部署模式

  1. 自建 API:FastAPI 包装 agent.invoke,checkpointer 用 Postgres
  2. LangGraph Platform:托管图执行、横向扩展(见官方文档)
  3. 批处理:队列 + worker 跑长任务 Agent
# FastAPI  sketch
from fastapi import FastAPI

app = FastAPI()

@app.post("/chat")
async def chat(thread_id: str, message: str):
    config = {"configurable": {"thread_id": thread_id}}
    result = await agent.ainvoke(
        {"messages": [{"role": "user", "content": message}]},
        config=config,
    )
    return {"reply": result["messages"][-1].content}

依赖与版本锁定

langchain>=1.0,<2
langgraph>=1.0,<2
langchain-openai>=0.3

CI 中跑 smoke test + LangSmith eval 门禁。


下一步