大语言模型是如何调用工具的?
在构建 AI 智能体 Jenius 的过程中,我们越来越频繁地遇到一个核心问题:大模型到底是怎么“调用工具”的?
你可能也有过类似的疑问:
大模型不是一堆参数堆成的神经网络吗?它怎么知道怎么去画图、查天气、调 API?工具是怎么和模型结合在一起的?
本文将通过通俗解释 + 技术细节 + 实战例子,带你理清“大模型 × 工具调用”背后的机制,并结合我们的智能体产品 Jenius 展示其工程落地实践。
✨ 为什么要让大模型调用工具?
语言模型虽然强大,但它有几个硬伤:
- 无法联网、无持久记忆;
- 无法真实执行代码;
- 无法直接操作数据库、API、硬件。
为了让大模型能像人类助手一样完成任务,我们必须教会它:“当你无法完成任务时,可以请求外部工具来帮忙”。
这就是 Jenius 智能体中的关键设计之一:模型负责决策,工具负责执行,智能体负责 orchestrate(编排)。
🧠 大模型真的能执行工具吗?
答案是:不能直接执行,但能“表达意图”,由程序帮它实现。
举个例子
我们让模型回答这个问题:
帮我画一棵树。
模型可能返回这样的内容(结构化响应):
{
"tool_call": {
"name": "draw_image",
"args": {
"prompt": "a tree with green leaves and a brown trunk"
}
}
}
注意!这只是“文本”,模型没有自己画图,它只是告诉我们:我建议调用 draw_image 工具,参数如下。
🔁 工具调用的完整流程图
我们总结了以下流程图来帮助理解整个机制:
从中你可以看到:
- 用户发起请求;
- 大模型生成“调用工具”的计划;
- 我们的程序从模型的响应中解析出调用意图;
- 调用实际 Python 函数、API、数据库等;
- 把结果返回给模型,生成最终回答。
🧰 工具到底是什么?
在 Jenius 中,“工具”是我们定义的一系列 函数、API、数据库查询、甚至链式 Agent 动作。它们遵循统一接口,可以被模型“请求使用”。
比如一个查天气的工具:
def get_weather(location: str, date: str) -> str:
# 实际执行天气 API
return f"{location} 在 {date} 是晴天"
我们可以通过 LangChain等框架把它注册为工具,供模型调用。
🧪 实战例子:LangChain 中注册工具
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
def search_google(query: str) -> str:
return f"搜索结果:'{query}'"
tool = Tool(name="GoogleSearch", func=search_google, description="用于信息搜索")
agent = initialize_agent([tool], OpenAI(), agent="zero-shot-react-description")
agent.run("2025年谁是美国总统?")
这段代码展示了最小可用的 Agent + 工具调用机制。Jenius 中采用了更高阶的更复杂的智能机制,进行整体的流程的控制,但核心机制是一致的。
✅ 总结
大语言模型的本质能力是“理解和生成语言”,而不是“操作世界”。
为了实现操作世界的能力,我们必须给它配备工具,并搭建中间桥梁。
在 Jenius 智能体中,我们通过“意图生成 → 工具绑定 → 执行反馈”的架构,使模型真正具备了像人类助手一样解决问题的能力。
如果你也在打造 AI 智能体,或者对工具调度/智能体架构感兴趣,欢迎联系 Jenius 团队,我们乐于分享更多一线经验 🙌!