【吴恩达Agent】技术干货+通俗易懂(含代码片段+流程图)-3
·
Module 3:Tool Use 🛠️ 工具使用设计模式
一、核心概念:工具对智能体的价值
🔍 通俗解读
智能体的“能力边界”由工具决定——就像人类需要用电脑、手机、计算器完成不同任务,智能体需要调用各种工具,才能完成单一AI模型做不到的事(比如查实时数据、执行代码、查询数据库)。
⚙️ 技术干货
吴恩达课程中定义的“智能体工具分类”,按功能分为4类,覆盖绝大多数应用场景:
- 信息获取类:学术数据库API、搜索引擎API(如Google Search API)、新闻接口。
- 计算执行类:Python代码执行环境、计算器工具、数据分析工具(如Pandas)。
- 内容生成类:文本生成API、图片生成API、视频剪辑工具。
- 交互协作类:邮件发送工具、即时通讯API、团队协作工具(如Notion API)。
二、核心技术:函数调用与Model Context Protocol (MCP)
🔍 通俗解读
函数调用是智能体“调用工具的方式”——比如智能体想查实时天气,就调用天气API的函数,传入参数(城市、日期),就能获取结果;MCP则是“智能体与工具的通信协议”,确保智能体能正确识别工具、传递参数、接收结果。
⚙️ 技术干货
MCP的核心规范(必须遵守,否则工具调用失败):
- 工具描述规范:每个工具必须明确“功能、参数、返回值、异常情况”,让智能体能快速理解。
- 参数传递规范:参数类型、格式必须统一(如日期格式为YYYY-MM-DD),避免歧义。
- 结果接收规范:工具返回结果需结构化(如JSON格式),方便智能体解析和反思。
三、工具封装与安全调用(实操重点,附代码)
⚙️ 技术干货
工具封装的核心是“简化调用逻辑、提升安全性”,吴恩达推荐用“类封装”的方式,统一工具调用接口,同时加入“参数校验、异常处理”,避免智能体调用工具时出错。
# 工具封装示例:学术数据库API工具封装
import requests
class AcademicDatabaseTool:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://api.academic-db.com/v1/search" # 模拟学术数据库API
# 工具描述(符合MCP规范)
def tool_description(self):
return {
"功能": "搜索近1-5年的学术文献,支持关键词、作者、领域筛选",
"参数": {
"keyword": "字符串,搜索关键词(必填)",
"years": "整数,搜索年限(1-5,必填)",
"field": "字符串,学术领域(可选,如AI、CS)"
},
"返回值": "JSON格式,包含文献标题、作者、摘要、发表时间",
"异常": "参数缺失时返回错误提示,API调用失败时返回重试建议"
}
# 工具调用核心方法(带参数校验和异常处理)
def call(self, keyword, years, field=None):
# 1. 参数校验
if not keyword or not isinstance(years, int) or years < 1 or years > 5:
return {"error": "参数错误:keyword必填,years需为1-5的整数"}
# 2. 构造请求参数
params = {
"keyword": keyword,
"years": years,
"api_key": self.api_key
}
if field:
params["field"] = field
# 3. 调用API并处理异常
try:
response = requests.get(self.base_url, params=params)
response.raise_for_status() # 抛出HTTP错误
return response.json()
except requests.exceptions.RequestException as e:
return {"error": f"API调用失败:{str(e)},建议重试或检查API密钥"}
# 智能体调用工具示例
tool = AcademicDatabaseTool(api_key="your_api_key")
# 智能体先获取工具描述,理解工具功能
print(tool.tool_description())
# 调用工具搜索文献
result = tool.call(keyword="Agentic AI", years=1, field="AI")
print("文献搜索结果:", result)
四、工具调用实战:数据库查询与API对接
🔍 通俗解读
以“智能体查询用户信息数据库”为例,演示工具调用的完整流程——智能体接收任务(“查询用户ID为1001的用户信息”),调用数据库查询工具,传入参数,获取结果,再整理成自然语言反馈。
📊 流程图(文字版)
接收任务 → 推理(需要调用数据库工具) → 调用数据库工具(传入用户ID) → 接收工具返回结果 → 整理结果 → 输出反馈
⚙️ 技术干货
实战关键点:① 工具参数必须精准,避免查询错误;② 异常处理要全面(如数据库连接失败、用户ID不存在);③ 结果整理要符合用户需求,避免返回原始数据库数据。
更多推荐



所有评论(0)