AI Agent入门到精通,搞懂“工具调用”这一篇就够了!
智能体(Agent)是一种能够感知环境、制定决策并采取行动以实现特定目标的AI系统,具有意图理解、长短期记忆、决策规划、采取行动、工具调用等基本能力。简单地说,智能体通过工具调用将大语言模型的“思考”能力与外部系统、工具、API的“行动”能力结合,实现从需求理解到任务执行的闭环。这一机制使智能体能突破自身知识局限,为用户提供更多复杂的智能服务。智能体系统与大模型的区别是:一般情况下,大模型只说不做
智能体(Agent)是一种能够感知环境、制定决策并采取行动以实现特定目标的AI系统,具有意图理解、长短期记忆、决策规划、采取行动、工具调用等基本能力。
简单地说,智能体通过工具调用将大语言模型的“思考”能力与外部系统、工具、API的“行动”能力结合,实现从需求理解到任务执行的闭环。这一机制使智能体能突破自身知识局限,为用户提供更多复杂的智能服务。智能体系统与大模型的区别是:一般情况下,大模型只说不做,而智能体系统不只说,还会做,帮助用户完成更加复杂的任务。
本文对智能体系统背后的核心技术之一进行简述—— Function Calling,通过引入外部工具,使得大模型能与外部世界进行交互,从而完成更加复杂的任务。
PART 01 什么是智能体?
OpenAI的研究主管Lilian Weng给出的定义是:Agent = 大模型(LLM)+ 规划(Planning)+ 记忆(Memory)+ 工具使用(Tool Use)。

图:智能体的基础架构定义
如上图所示,在基于大语言模型(也可以是多模态大模型)的智能体系统中,大模型的充当着智能体的“大脑”的角色,同时还有三个关键部分:
- 规划(Planning) : 智能体会把大型任务分解为若干个子任务,并规划执行任务的流程;智能体会对任务执行的过程进行思考和反思,从而决定是继续执行任务,或判断任务完结并终止运行。
- 记忆(Memory): 具有长短期记忆能力。短期记忆,是指在执行任务的过程中的上下文,会在子任务的执行过程产生和暂存,在任务完结后被清空。长期记忆是长时间保留的信息,一般是指外部知识库,如用向量数据库来存储和检索。
- 工具使用(Tool use):为智能体配备本地工具、API或者MCP服务,比如:计算器、搜索工具、代码执行器、数据库查询工具、地图服务等。有了这些工具和API服务,智能体就可以与外部的世界进行交互,解决更实际复杂的问题。
PART 02 智能体——工具调用的流程
基于Function Call的Agent是近年来在大语言模型应用中广泛采用的一种智能交互机制。其基本工作流程是:由智能体负责根据用户输入动态决策是否调用外部工具,而Function Call提供标准化、结构化的函数接口,允许模型在对话推理过程中无缝接入外部系统,实现数据查询、外部工具执行、复杂推理等功能扩展。
使用 Agent + Function Call 机制的核心价值包括:
(1)增强模型能力:通过工具调用,模型可获取实时数据、执行数据库查询、调用各类计算引擎等,从而突破模型预训练、后训练参数中的知识限制。
(2)动态调度机制:Agent可以基于上下文,自动判断调用哪一个或哪一组工具,适合多步骤、多模块、更复杂的任务。
(3)支持多轮交互:Agent允许大模型基于上下文记忆配合工具调用策略,使得智能体系统具备更强的多轮协同能力。
举例说明:为什么需要Agent?
如果你直接向大模型提问:“上周五,通义大模型团队又新出了什么模型?”,大模型可能会这样回答:我无法提供实时信息,因为我的知识只更新到2025年3月。
如果这个问题需要人帮助大模型来解决,那么一个有效的操作步骤为:
1、选择工具
由于问题是关于实时新闻的,先打开浏览器工具;
2、提取参数
用浏览器输入框输入:“上周通义大模型团队又新出了什么模型?”;
3、运行工具
浏览器返回了一些网页,如“Qwen3-Max-Preview 发布核心介绍: 相较于2.5系列,新版本在中英文理解、复杂指令遵循、工具调用等维度实现了显著增强,同时大幅减少了知识幻觉,让模型更智能、更可靠。”等;
4、将工具的输出提供给大模型
将网页内容输入到大模型中:“这是查询到的信息:Qwen3-Max-Preview 发布,相较于2.5系列,新模型在中英文理解、复杂指令遵循、工具调用等维度实现了显著增强,同时大幅减少了知识幻觉,让模型更智能、更可靠。请根据以上内容回答。
最终,由于向大模型提供了足够的实时的参考信息,可以得到类似的回复:上周,通义大模型Qwen3-Max-Preview发布,相较于Qwen2.5系列,新模型在中英文理解、复杂指令遵循、工具调用等维度实现了显著增强,同时大幅减少了知识幻觉,让模型更智能、更可靠…
此时大模型,可以回答关于实时新闻的问题,然而这个过程需要人的参与(选择工具、提取参数、运行工具),无法实现自动化运行的效果。
而Function Calling(工具调用)可以自动化地完成以上流程,在接收到用户的任务、指令后可以自动选择工具、提取参数,然后,工具端系统接收参数并运行工具,最终完成工具和复杂任务的实际执行。总结为下图:

PART 03 如何使用Function Calling
以Qwen系列的模型为例,Function Calling支持两种传入工具信息的方式:
方式一:通过tools参数传入(推荐)
按照定义工具、创建工具数组、创建messages数组、发起工具调用、运行工具函数等步骤进行调用。
方式二:通过System Message传入
通过tools参数传入时,服务端会根据模型自动适配合适的prompt模板并组装,因此推荐优先使用tools参数。
Function Calling的代码示例:
from openai import OpenAI
from datetime import datetime
import json
import os
import random
# 指向本地部署的vLLM服务
client = OpenAI(
api_key="EMPTY",
base_url="http://localhost:8000/v1",
)
# 定义工具列表,模型在选择使用哪个工具时会参考工具的name和description
tools = [
# 工具1 获取当前时刻的时间
{
"type": "function",
"function": {
"name": "get_current_time",
"description": "当你想知道现在的时间时非常有用。",
# 因为获取当前时间无需输入参数,因此parameters为空字典
"parameters": {},
},
},
# 工具2 获取指定城市的天气
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "当你想查询指定城市的天气时非常有用。",
"parameters": {
"type": "object",
"properties": {
# 查询天气时需要提供位置,因此参数设置为location
"location": {
"type": "string",
"description": "城市或县区,比如北京市、西城区、海淀区等。",
}
},
"required": ["location"],
},
},
},
]
# 模拟天气查询工具。返回结果示例:“成都今天是晴天。”
def get_current_weather(arguments):
# 定义备选的天气条件列表
weather_conditions = ["晴天", "多云", "雨天"]
# 随机选择一个天气条件
random_weather = random.choice(weather_conditions)
# 从JSON中提取位置信息
location = arguments["location"]
# 返回格式化的天气信息
return f"{location}今天是{random_weather}。"
# 查询当前时间的工具。返回结果示例:“当前时间:2025-09-07 17:15:18。“
def get_current_time():
# 获取当前日期和时间
current_datetime = datetime.now()
# 格式化当前日期和时间
formatted_time = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
# 返回格式化后的当前时间
return f"当前时间:{formatted_time}。"
# 封装模型响应函数
def get_response(messages):
completion = client.chat.completions.create(
model="qwen-max",
messages=messages,
tools=tools,
)
return completion
# 主流程函数(多轮对话 + 工具调用)
def call_with_messages():
print("\n")
messages = [
{
"content": input(
"请输入:"
), # 提问示例:"现在几点了?" "一个小时后几点" "成都天气如何?"
"role": "user",
}
]
print("-" * 60)
# 模型的第一轮调用
i = 1
first_response = get_response(messages)
assistant_output = first_response.choices[0].message
print(f"\n第{i}轮大模型输出信息:{first_response}\n")
if assistant_output.content is None:
assistant_output.content = ""
messages.append(assistant_output)
# 如果不需要调用工具,则直接返回最终答案
if (
assistant_output.tool_calls == None
): # 如果模型判断无需调用工具,则将assistant的回复直接打印出来,无需进行模型的第二轮调用
print(f"无需调用工具,我可以直接回复:{assistant_output.content}")
return
# 如果需要调用工具,则进行模型的多轮调用,直到模型判断无需调用工具
while assistant_output.tool_calls != None:
# 如果判断需要调用查询天气工具,则运行查询天气工具
tool_info = {
"content": "",
"role": "tool",
"tool_call_id": assistant_output.tool_calls[0].id,
}
if assistant_output.tool_calls[0].function.name == "get_current_weather":
# 提取位置参数信息
arguments = json.loads(assistant_output.tool_calls[0].function.arguments)
tool_info["content"] = get_current_weather(arguments)
# 如果判断需要调用查询时间工具,则运行查询时间工具
elif assistant_output.tool_calls[0].function.name == "get_current_time":
tool_info["content"] = get_current_time()
tool_output = tool_info["content"]
print(f"工具输出信息:{tool_output}\n")
print("-" * 60)
messages.append(tool_info)
assistant_output = get_response(messages).choices[0].message
if assistant_output.content is None:
assistant_output.content = ""
messages.append(assistant_output)
i += 1
print(f"第{i}轮大模型输出信息:{assistant_output}\n")
print(f"最终答案:{assistant_output.content}")
if __name__ == "__main__":
call_with_messages()
PART 04 常用的智能体平台
智谱清言,https://chatglm.cn
字节跳动,Coze,https://www.coze.cn/home
字节跳动,扣子空间,https://space.coze.cn
百度文心智能体平台,https://agents.baidu.com
天工智能体平台,https://www.tiangong.cn
问小白,https://www.wenxiaobai.com
dify,https://cloud.dify.ai
Link AI,https://link-ai.tech/portal
n8n,https://n8n.io
FastGPT,https://fastgpt.cn
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)