
前言在上一篇博客中我们初步认识了 LangChain Agent 的基本构造。但 Agent 真正强大的地方在于它能够调用外部工具。今天我们要更进一步不再局限于内置工具而是通过自定义函数让 Agent 能够执行我们特定的业务逻辑——比如查询某个商品的实时价格。核心概念什么是 Tools如果说大语言模型LLM是 Agent 的“大脑”那么 Tools工具 就是它的“手脚”。比如代码中我问的问题”Whats the price of gold now?“LLM 本身并不知道实时金价但它可以决定去调用一个名为get_price的函数获取结果后再反馈给用户。编码沿用上集中使用的代码加入tools的自定义方法def get_price(goods:str)-str:Get price of given goodsreturn f{goods}s price is $2000这段代码的意思就是输入一个货物的名称返回价格在生产中这里可能根据这个货物名去调用api接口等查询价格我们这里直接先写死返回。关键点LLM 是通过函数的文档字符串Type Hint类型提示就是三个引号定义的位置来理解这个工具是做什么用的。所以注释一定要写清楚然后再创建agent时将工具注入 Agent增加一个工具tools的参数tools[get_price]完整代码如下from langchain.agents import create_agent from langchain_openai import ChatOpenAI kimi_model ChatOpenAI( modelkimi-k2.5, api_keysk-uQpVxxxxxBa,#换成你的apikey base_urlhttps://api.moonshot.cn/v1, # 重点这里严格对应 Kimi 的 API 结构 extra_body{ thinking: {type: disabled} } ) def get_price(goods:str)-str: Get price of given goods return f{goods}s price is $2000 agent create_agent( modelkimi_model, tools[get_price] ) results agent.invoke({messages:[{role:user,content:Whats the price of gold now?}]}) messages results[messages] print(f历史消息:{len(messages)}条) for message in messages: message.pretty_print()注意extra_body{thinking: {type: disabled}}kimi-k2.5是一个支持“深度思考”Reasoning的模型在 Kimi 的 API 规范中如果模型决定调用工具Tool Call它通常会先输出一段“思考过程”。当你把这些消息传回给模型或者在链式调用中处理时Kimi 要求 Assistant 消息必须包含reasoning_content字段如果开启了思考功能。这里只是为了演示工具调用不需要模型展示思考过程为了方便测试先关闭kimi-k2.5的思考模式。结果分析当我们问 Agent“Whats the price of gold now?” 时幕后发生了非常精彩的“四部曲”1. 意图识别 (Ai Message)Agent 接收到问题意识到自己无法直接回答于是决定调用工具。输出 Ill check the current price of gold for you.2. 发起工具调用 (Tool Calls)Agent 生成了一个指令指定调用get_price并自动提取了参数goods: gold。3. 执行工具逻辑 (Tool Message)系统执行了我们写的 Python 函数并将结果返回给 Agent。4. 最终汇总 (Final Ai Message)Agent 结合工具返回的信息组织成人类听得懂的语言回复用户。总结通过自定义工具我们打破了 LLM 的知识边界。可以想象许多场景接入库存系统check_inventory(item_id)接入天气接口get_weather(city)接入内部数据库query_user_order(order_id)只需要你能写出 Python 函数Agent 就能拥有无限的可能。