学习 LangChain 智能体时,先用一个本地确定性工具比接真实天气 API 更容易排错。模型负责决定何时调用,函数负责返回可核对数据。 示例中的天气数据是人为固定的接口演示,不是真实天气,代码未在你的模型与 LangChain 版本上实测;安装包、模型字符串和返回消息结构以当前官方文档为准。
本篇验收要点:用 @tool 定义 get_weather,再把函数放进 create_agent 的 tools 列表。 执行后同时检查消息序列中的工具调用参数、工具返回值和最终回答,不能只看最后一句。

安装与准备
在独立环境安装当前官方文档要求的 langchain 和对应模型提供商包。API 密钥使用环境变量,不写进脚本。示例把天气函数固定为两个城市,目的是验证调用协议。
定义工具并创建智能体
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def get_weather(city: str) -> str:
"""Return the demo weather for a supported city."""
data = {
"Beijing": "clear, 22 C",
"Shanghai": "cloudy, 24 C",
}
return data.get(city, "unsupported city")
agent = create_agent(
model="YOUR_SUPPORTED_MODEL",
tools=[get_weather],
system_prompt="Use get_weather for weather questions. Do not invent data.",
)
result = agent.invoke({
"messages": [{"role": "user", "content": "What is the weather in Beijing?"}]
})
for message in result["messages"]:
print(type(message).__name__, message.content)
从中间消息判断是否真的调用
输出中应包含模型的 tool call、工具消息和最终 AI 消息。如果模型直接回答天气而没有工具调用,先检查模型是否支持工具协议、工具描述是否清楚、系统指令是否要求使用工具。把真实 API 接进来之前,还要给工具设置超时、参数白名单和明确的错误返回。
读者下一步是先把模型凭证放入环境变量,然后用固定城市 Beijing 运行一次示例。
验证标准是模型生成一次 get_weather 调用、参数 city 为 Beijing、工具返回预设字符串,最终回答没有添加工具未提供的温度或降雨信息。
常见问题
为什么最后回答正确却没有工具消息?
可能是模型凭常识猜出了答案。检查完整消息序列,并把测试值设置成模型不可能预知的固定字符串。
工具函数可以直接做写操作吗?
先从只读工具开始。涉及发信、删除或付费时,应加入审批、幂等键和执行结果核对。
官方资料与适用边界
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31158.html