观测与部署
你将学会: 打开 LangSmith 追踪;本地评测不依赖云;知道部署入口。
前置: 阶段 2。没有 LangSmith 账号也能做完本课前半。
生产事故里最常见的不是「模型不够聪明」,而是不知道它调了什么工具、为什么那样调。
1. 追踪(有 key 才上报,没有也能跑 agent)
.env 增加:
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=...
import os
from dotenv import load_dotenv
load_dotenv()
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
model = init_chat_model(
"deepseek:deepseek-chat",
temperature=0.5,
max_tokens=2500,
timeout=300,
max_retries=6,
)
def get_weather(city: str) -> str:
"""获取某城市的天气。"""
return f"{city}今天晴,25°C。"
agent = create_agent(model=model, tools=[get_weather])
print(agent.invoke(
{"messages": [{"role": "user", "content": "杭州天气?"}]},
config={"tags": ["l12"], "metadata": {"lesson": "observability"}},
)["messages"][-1].content)
print("tracing =>", os.environ.get("LANGSMITH_TRACING"), "key =>", bool(os.environ.get("LANGSMITH_API_KEY")))
打开 smith.langchain.com 看这次运行的工具调用。
2. 本地评测(不需要 LangSmith)
def classify(text: str) -> str:
bad = ("白痴", "idiot")
return "Toxic" if any(k in text.lower() for k in bad) else "Not toxic"
rows = [("你真是个白痴", "Toxic"), ("谢谢", "Not toxic")]
ok = sum(classify(x) == y for x, y in rows)
print("准确率 =>", ok / len(rows))
云端 Dataset / Experiment:仓库 10-测试与评估/LangSmith-evaluation评测.py。
3. 部署你需要知道的三件事
create_agent的产物已经是一张 LangGraph 图,可以交给 LangSmith Deployment /langgraph dev。langgraph.json里的名字 = 前端assistantId。- 前端现成壳:
npx create-agent-chat-app或 https://agentchat.vercel.app ,本地默认http://localhost:2024。
仓库根目录放这样一个 langgraph.json(路径按你的文件改;本课只要求看懂,不必真的部署):
{
"dependencies": ["."],
"graphs": {
"agent": "./my_agent.py:agent"
},
"env": ".env"
}
graphs.agent 左边的 agent 就是前端要填的 assistantId。my_agent.py 里导出变量 agent = create_agent(...)。
本地起服务(装好官方 CLI 之后):
langgraph dev
浏览器打开 Studio 或把 Agent Chat UI 指到 http://localhost:2024。没有账号也能把 L08 的测试和上面的本地评测当作交付底线。
详细点选仓库 11-可观测性与部署/、09-前端与UI/。
本章验收
- 知道怎么打开 tracing(两个环境变量)
- 有一条不依赖云的准确率计算
- 能说出
langgraph.json里的名字就是前端assistantId
下一课:综合项目
JavaWeb
Spring
MyBatis
linux
消息队列
JavaSE
工具
片段
AI
搜索
dy