AI 智能体不会用工具?等于白搭!5 分钟教会它"干活"

01 又一个新概念?
如果你已经试过 AI 智能体,可能已经发现一个问题:
问它”今天北京天气怎么样”,它能回答。
但让它”查一下北京天气,然后发邮件告诉我妈”,它就懵了。
为什么?因为它不会用工具。
工具使用是 AI 智能体从”聊天机器人”变成”数字员工”的关键一步。
今天就把工具使用设计模式给你讲清楚,让你5 分钟教会智能体”干活”。
02 什么是工具使用模式?(说人话版)
先给个直白的定义:
工具使用模式 = 让 AI 智能体学会调用外部工具完成任务
就像你用手机:
-
要查天气 → 打开天气 App -
要发邮件 → 打开邮箱 App -
要打车 → 打开打车 App
你不会自己算天气、自己送信、自己开车,对吧?
AI 智能体也是一样:
-
要查实时数据 → 调用天气 API -
要发邮件 → 调用邮件服务 -
要查数据库 → 调用 SQL 查询
工具使用模式让智能体从”只会动嘴”变成”能动手”。

03 为什么需要工具?(边界在哪)
有人问:大模型不是什么都知道吗?
真相:大模型有三大边界
边界一:不知道实时信息
大模型的知识有截止时间,它不知道:
-
今天的天气 -
现在的股票价格 -
刚刚发生的新闻
解决:调用实时 API
# 定义工具defget_weather(location: str) -> str:"""查询当前天气"""returnf"{location} 今天晴,25°C"defget_stock_price(symbol: str) -> str:"""查询股票价格"""returnf"AAPL 当前价格:$175.50"
边界二:不能执行实际操作
大模型不能:
-
发邮件 -
订机票 -
更新数据库 -
生成文件
解决:调用执行工具
defsend_email(to: str, content: str) -> str:"""发送邮件"""# 实际调用邮件服务returnf"邮件已发送至 {to}"defbook_flight(date: str, destination: str) -> str:"""预订机票"""# 实际调用订票系统returnf"已预订 {date} 飞往 {destination} 的机票"
边界三:算不了复杂数学
大模型擅长语言,不擅长:
-
复杂计算 -
数据分析 -
代码执行
解决:调用代码解释器
defcalculate_mortgage(principal: float, rate: float, years: int) -> str:"""计算房贷月供""" monthly_rate = rate / 12 / 100 months = years * 12 payment = principal * monthly_rate * (1 + monthly_rate) ** months / ((1 + monthly_rate) ** months - 1)returnf"月供:${payment:.2f}"
04 工具使用有哪些场景?(最实用部分)
这部分大家最关心:实际能用在哪?
我整理了最常见、最落地的 5 个用途:
用途一:动态信息查询
场景: 用户问需要实时数据的问题
例子:
-
“北京今天天气怎么样?” -
“苹果股票现在多少钱?” -
“最近有什么热门新闻?”
工具: 天气 API、股票 API、新闻 API
效果: 智能体回答准确、及时。
用途二:代码执行和解释
场景: 用户需要计算、分析、生成代码
例子:
-
“帮我算一下房贷月供” -
“分析这个销售数据” -
“写个 Python 脚本抓取网页数据”
工具: 代码解释器、Jupyter Notebook
效果: 智能体不仅能说,还能算、能写、能跑。
用途三:工作流自动化
场景: 多步骤重复性工作
例子:
-
每天早上整理数据,生成日报,发邮件给老板 -
客户下单后,自动更新库存,发发货通知 -
会议纪要自动生成,待办事项自动分配
工具: 任务调度器、邮件服务、数据库
效果: 原本 1 小时的活,现在 1 分钟搞定。
用途四:客户服务
场景: 客服系统、问答机器人
例子:
-
查询订单状态 -
处理退款申请 -
回答产品问题
工具: CRM 系统、工单系统、知识库
效果: 80% 的问题自动解决,人工只处理复杂情况。
用途五:内容生成和编辑
场景: 写作、编辑、审核
例子:
-
写文章后自动检查语法 -
生成长文后自动摘要 -
发布前自动审核敏感内容
工具: 语法检查器、文本摘要器、内容审核器
效果: 内容质量更高,出错率更低。
05 怎么实现工具使用?(核心要素)
实现工具使用模式,需要 6 个核心要素:
要素一:函数/工具描述(Schema)
作用: 告诉大模型有哪些工具可用、每个工具是干嘛的、需要什么参数。
例子:
tools = [ {"type": "function","function": {"name": "get_current_time","description": "获取指定城市的当前时间","parameters": {"type": "object","properties": {"location": {"type": "string","description": "城市名称,例如:北京", }, },"required": ["location"], }, } }]
要素二:函数执行逻辑
作用: 决定什么时候调用哪个工具。
流程:
-
用户提问 -
大模型分析问题,选择工具 -
返回工具名称和参数 -
执行工具代码 -
把结果返回给大模型 -
大模型生成最终回答
要素三:消息处理系统
作用: 管理对话流程,记住上下文。
例子:
messages = [ {"role": "user", "content": "北京现在几点了?"}, {"role": "assistant", "tool_calls": [{"name": "get_current_time", "arguments": {"location": "北京"}}]}, {"role": "tool", "content": "北京当前时间:14:30"}, {"role": "assistant", "content": "北京现在是下午 2 点 30 分。"}]
要素四:工具集成框架
作用: 连接智能体和各种工具。
选择:
-
自己实现(灵活但复杂) -
用框架(简单但有限制)
推荐框架:
-
Microsoft Agent Framework -
Azure AI Agent Service -
LangChain
要素五:错误处理和验证
作用: 处理工具调用失败、参数错误等情况。
例子:
defsafe_get_weather(location: str) -> str:try:# 调用天气 APIreturn weather_api.get(location)except Exception as e:returnf"抱歉,无法获取 {location} 的天气信息"
要素六:状态管理
作用: 记住历史对话和工具调用结果。
例子:
memory = {"user_preferences": {"location": "北京"},"previous_queries": ["天气", "时间"],"tool_results": {"weather": "晴,25°C"}}
06 用框架实现工具调用(最简单方式)
自己从零实现工具调用比较复杂,推荐用框架。
方式一:Microsoft Agent Framework
特点: 开源、简单、灵活
代码示例:
from agent_framework import toolfrom agent_framework.azure import AzureAIProjectAgentProvider# 用装饰器定义工具@tooldefget_current_time(location: str) -> str:"""获取指定城市的当前时间"""# 实际代码逻辑returnf"{location} 当前时间:14:30"# 创建智能体provider = AzureAIProjectAgentProvider()agent = await provider.create_agent( name="时间助手", instructions="用可用工具回答问题", tools=[get_current_time])# 运行response = await agent.run("北京现在几点了?")
优点:
-
自动处理工具调用流程 -
支持预构建工具(文件搜索、代码解释器) -
代码简洁
方式二:Azure AI Agent Service
特点: 企业级、安全、可扩展
优势:
-
自动工具调用(不用自己解析) -
安全的数据管理(线程自动保存历史) -
开箱即用的工具(Bing 搜索、Azure AI Search、Azure Functions)
工具分类:
知识工具:
-
Bing 搜索(联网查信息) -
文件搜索(查企业内部文档) -
Azure AI Search(专业搜索引擎)
行动工具:
-
函数调用(自定义工具) -
代码解释器(执行代码) -
OpenAPI 工具(调用第三方服务) -
Azure Functions(云端函数)
07 实际案例:销售数据分析智能体
需求: 做一个能回答销售数据问题的智能体
方案设计:

from azure.ai.projects import AIProjectClientfrom azure.ai.projects.models import ToolSet, FunctionTool, CodeInterpreterTool# 初始化客户端project_client = AIProjectClient.from_connection_string( credential=DefaultAzureCredential(), conn_str="你的连接字符串")# 定义自定义工具deffetch_sales_data_using_sqlite_query(query: str) -> str:"""用 SQL 查询销售数据"""# 实际查询数据库return"Q4 销售额:$1.2M"# 创建工具集toolset = ToolSet()toolset.add(FunctionTool(fetch_sales_data_using_sqlite_query))toolset.add(CodeInterpreterTool())# 创建智能体agent = project_client.agents.create_agent( model="gpt-4o-mini", name="销售助手", instructions="你是帮助分析销售数据的助手", toolset=toolset)
效果:
-
用户问”Q4 销售额多少?” → 自动查询数据库 -
用户说”做个图表” → 自动调用代码解释器生成 -
用户问”和去年同期比怎么样?” → 自动计算增长率
08 避坑指南:这些坑要避开
火得快的东西,坑也多。
关于工具使用,这几件事一定要清醒:
❌ 坑一:安全问题(SQL 注入、恶意操作)
风险: 智能体生成的 SQL 可能被注入,或者执行危险操作。
解决:
-
数据库设置只读权限 -
限制可执行的操作类型 -
在安全环境中运行
最佳实践:
# 只读数据库连接db_connection = create_readonly_connection()# 限制可执行的 SQL 类型allowed_operations = ["SELECT"]
❌ 坑二:工具太多,智能体选错
风险: 注册了几十个工具,智能体经常调用错误的。
解决:
-
按场景分组工具 -
给每个工具写清晰的描述 -
必要时手动指定工具
❌ 坑三:参数传错,工具执行失败
风险: 大模型生成的参数格式不对,工具报错。
解决:
-
参数验证 -
错误重试机制 -
友好的错误提示
❌ 坑四:不要指望它直接替你赚钱
真相: 工具是能力,不是摇钱树。
它能帮你提高效率、降低成本,但不会自动给你打钱。
真正赚钱的,永远是会用工具的人。
09 未来会怎样?(温和展望,不夸张)
从目前的趋势看:
工具使用会越来越简单:
-
拖拽式创建工具 -
自动发现可用工具 -
工具之间自动协作
工具生态会越来越丰富:
-
第三方工具市场 -
预构建工具模板 -
工具组合推荐
安全机制会越来越完善:
-
自动权限管理 -
操作审计日志 -
风险预警系统
不管你接不接受,AI 智能体 + 工具已经是确定的方向。
早点了解,早点受益。
10 最后总结一下
工具使用模式的核心:
-
让智能体从”只会聊天”变成”能干活” -
突破大模型的三大边界(实时信息、实际操作、复杂计算) -
6 个核心要素(描述、执行逻辑、消息处理、集成框架、错误处理、状态管理)
实现方式:
-
自己实现(灵活但复杂) -
用框架(简单但有限制) -
推荐:Microsoft Agent Framework 或 Azure AI Agent Service
核心建议:
别纠结技术细节,先选一个场景,教会智能体用一个工具。
用起来了,再扩展。
你想让智能体学会用什么工具?
评论区聊聊,我挑几个有代表性的,专门写教程。
写在后面
关注我,后续持续更新:
-
🧪 最新 AI 工具实测(不吹不黑) -
💡 普通人能用的 AI 技巧(接地气) -
📊 行业观察和观点(有态度)
让你每次看懂热点,不跟风、不踩坑。
由于微信公众号更改规则,请点击上面”智子 AI 社”关注本号,再点击右上角”…”,选择”设为星标”,以免错过文章更新。
夜雨聆风