ARTICLE · 985790
多数人用AI 但是不用工具 我来分析一下它的价值
多数人用AI 但是不用工具 我来分析一下它的价值
一、工具是什么
Q1:工具有什么用?
结论:工具就像 AI 的"外挂技能",让 AI 能做超出它原本能力范围的事情,比如上网搜索、识别图片、解析文档等。
核心功能:
网络搜索:实时获取最新信息 网页阅读:抓取网页内容 内容安全:检测文字风险 文件解析:提取 PDF/Word/Excel 内容 OCR 识别:图片转文字
典型场景:
问"今天天气怎么样" → 调用网络搜索工具 给一张发票图片 → 调用 OCR 工具识别 上传一个 PDF → 调用文件解析工具提取内容 用户输入敏感内容 → 调用内容安全工具检测
二、网络搜索
Q2:如何让 AI 上网搜索?
结论:通过工具接口,指定搜索引擎和搜索关键词,AI 会自动搜索并返回结果。
核心参数:
search_engine:搜索引擎(支持多种搜索源) search_query:搜索关键词 count:返回结果数(1-50,默认 10) search_domain_filter:限定域名(可选,比如只搜某个网站)
示例代码:
curl -X POST https://open.bigmodel.cn/api/paas/v4/web_search \ -H "Authorization: Bearer XXXXXXXXXXXXXXXX" \ -H "Content-Type: application/json" \ -d '{ "search_engine": "search_pro", "search_query": "最新科技新闻", "count": 5 }'返回结果包含:
标题 摘要 链接 相关度分数
典型工作流:网络搜索 → 网页阅读 → 对话补全
三、网页阅读
Q3:如何抓取网页内容?
结论:提供网页 URL,系统会自动抓取并清洗网页正文,还可以用 AI 直接提取摘要或特定字段。
核心参数:
url:网页链接 prompt:提取指令(可选,比如"提取价格信息")
示例代码:
curl -X POST https://open.bigmodel.cn/api/paas/v4/web_reader \ -H "Authorization: Bearer XXXXXXXXXXXXXXXX" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/article", "prompt": "提取文章的核心观点" }'返回结果:
纯文本内容 Markdown 格式 根据 prompt 提取的结构化信息
使用场景:
配合网络搜索,获取详细内容 批量抓取文章 提取网页中的特定信息(价格、日期、人名等)
四、内容安全
Q4:如何检测文字风险?
结论:通过安全检测接口,识别文字中的风险内容,比如涉政、色情、暴恐等。
核心参数:
text:待检测的文字内容
示例代码:
curl -X POST https://open.bigmodel.cn/api/paas/v4/safety/inspect \ -H "Authorization: Bearer XXXXXXXXXXXXXXXX" \ -H "Content-Type: application/json" \ -d '{ "text": "待检测的文字内容" }'返回结果:
风险等级(安全/低风险/中风险/高风险) 风险类型 风险位置
典型用途:
用户生成内容(UGC)审核 聊天内容过滤 输出内容合规检查
五、文件解析
Q5:如何解析 PDF/Word 文档?
结论:上传文档文件,系统会自动提取文字内容,支持同步和异步两种模式。
同步模式(< 10MB):
curl -X POST https://open.bigmodel.cn/api/paas/v4/file-parser/file-parse \ -H "Authorization: Bearer XXXXXXXXXXXXXXXX" \ -F "file=@document.pdf"异步模式(大文件/批量):
# 1. 提交解析任务curl -X POST https://open.bigmodel.cn/api/paas/v4/file-parser/file-parse \ -H "Authorization: Bearer XXXXXXXXXXXXXXXX" \ -F "file=@large_document.pdf"# 返回:{"id": "parse_xxx"}# 2. 查询结果curl -X GET https://open.bigmodel.cn/api/paas/v4/file-parser/parse_result/parse_xxx \ -H "Authorization: Bearer XXXXXXXXXXXXXXXX"解析结果包含:
纯文本内容 Markdown 格式 切分后的片段 图片引用(可配合 OCR)
支持的文件格式:
PDF、Word(.docx)、Excel(.xlsx)、PPT(.pptx) TXT、Markdown 图片(JPG、PNG)
六、OCR 识别
Q6:如何识别图片中的文字?
结论:上传图片,系统会自动识别并提取图片中的文字内容。
示例代码:
curl -X POST https://open.bigmodel.cn/api/paas/v4/ocr \ -H "Authorization: Bearer XXXXXXXXXXXXXXXX" \ -F "file=@invoice.png"返回结果:
识别的文字内容 文字位置坐标 置信度分数
典型用途:
财务票据数字化 截图转文字 扫描件文字提取 身份证/银行卡识别
七、工具调用流程
Q7:AI 如何知道该调用哪个工具?
结论:在对话时定义工具列表,AI 会根据问题自动判断需要调用哪个工具。
完整流程:
定义工具(描述工具的功能和参数) 调用对话接口,传入工具列表 AI 判断是否需要调用工具 如果需要,返回工具调用请求 执行工具,获取结果 将结果回传给 AI AI 基于工具结果生成最终回答
示例代码:
import requestsimport json# 1. 定义工具tools = [{"type": "function","function": {"name": "web_search","description": "网络搜索,获取最新信息","parameters": {"type": "object","properties": {"search_query": {"type": "string","description": "搜索关键词" } },"required": ["search_query"] } }}]# 2. 调用对话接口resp = requests.post("https://open.bigmodel.cn/api/paas/v4/chat/completions", headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}, json={"models": "glm-4.6","messages": [{"role": "user", "content": "今天北京天气怎么样?"}],"tools": tools }).json()# 3. 检查是否需要调用工具if resp['choices'][0]['message'].get('tool_calls'): tool_call = resp['choices'][0]['message']['tool_calls'][0] function_name = tool_call['function']['name'] function_args = json.loads(tool_call['function']['arguments'])# 4. 执行工具if function_name == "web_search": search_result = requests.post("https://open.bigmodel.cn/api/paas/v4/web_search", headers={"Authorization": f"Bearer {API_KEY}"}, json={"search_engine": "search_pro", "search_query": function_args['search_query']} ).json()# 5. 将结果回传 messages = [ {"role": "user", "content": "今天北京天气怎么样?"}, resp['choices'][0]['message'], {"role": "tool","tool_call_id": tool_call['id'],"content": json.dumps(search_result) } ]# 6. 获取最终回答 final_resp = requests.post("https://open.bigmodel.cn/api/paas/v4/chat/completions", headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}, json={"models": "glm-4.6", "messages": messages} ).json()print(final_resp['choices'][0]['message']['content'])八、完整示例
Q8:从零开始搭建联网问答系统?
结论:完整流程包括定义工具、调用对话、执行工具、回传结果四个步骤。
import requestsimport jsonAPI_KEY = "XXXXXXXXXXXXXXXXXX"# 1. 定义工具列表tools = [ {"type": "function","function": {"name": "web_search","description": "网络搜索,获取最新信息","parameters": {"type": "object","properties": {"search_query": {"type": "string","description": "搜索关键词" } },"required": ["search_query"] } } }, {"type": "function","function": {"name": "web_reader","description": "网页阅读,抓取网页内容","parameters": {"type": "object","properties": {"url": {"type": "string","description": "网页链接" } },"required": ["url"] } } }]# 2. 用户提问user_question = "最新的 AI 技术进展是什么?"# 3. 第一次调用resp = requests.post("https://open.bigmodel.cn/api/paas/v4/chat/completions", headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}, json={"models": "glm-4.6","messages": [{"role": "user", "content": user_question}],"tools": tools }).json()# 4. 检查是否需要调用工具if resp['choices'][0]['message'].get('tool_calls'): tool_calls = resp['choices'][0]['message']['tool_calls']# 5. 执行所有工具调用 tool_results = []for tool_call in tool_calls: function_name = tool_call['function']['name'] function_args = json.loads(tool_call['function']['arguments'])if function_name == "web_search": result = requests.post("https://open.bigmodel.cn/api/paas/v4/web_search", headers={"Authorization": f"Bearer {API_KEY}"}, json={"search_engine": "search_pro", "search_query": function_args['search_query']} ).json() tool_results.append({"tool_call_id": tool_call['id'],"role": "tool","content": json.dumps(result) })elif function_name == "web_reader": result = requests.post("https://open.bigmodel.cn/api/paas/v4/web_reader", headers={"Authorization": f"Bearer {API_KEY}"}, json={"url": function_args['url']} ).json() tool_results.append({"tool_call_id": tool_call['id'],"role": "tool","content": json.dumps(result) })# 6. 将工具结果回传 messages = [ {"role": "user", "content": user_question}, resp['choices'][0]['message'] ] messages.extend(tool_results)# 7. 获取最终回答 final_resp = requests.post("https://open.bigmodel.cn/api/paas/v4/chat/completions", headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}, json={"models": "glm-4.6", "messages": messages} ).json()print("\n最终回答:")print(final_resp['choices'][0]['message']['content'])else:# 不需要调用工具,直接返回答案print(resp['choices'][0]['message']['content'])九、常见问题
Q9:工具调用会额外收费吗?
结论:工具调用本身不收费,但会消耗对话的 token。
计费说明:
工具定义和判断:消耗输入 token 工具执行结果:消耗输入 token 最终回答生成:消耗输出 token
Q10:可以同时调用多个工具吗?
结论:可以,AI 会根据问题需要,同时调用多个工具。
示例:
问"北京和上海今天天气怎么样" → 同时调用两次搜索工具 问"这篇文章的价格和发布日期" → 先调用网页阅读,再调用解析工具
Q11:工具调用失败怎么办?
结论:系统会自动重试,也可以手动处理错误。
错误处理:
try: result = requests.post("https://open.bigmodel.cn/api/paas/v4/web_search", headers={"Authorization": f"Bearer {API_KEY}"}, json={"search_engine": "search_pro", "search_query": "测试"} ).json()except Exception as e:# 工具调用失败,返回错误信息给 AI tool_results.append({"tool_call_id": tool_call['id'],"role": "tool","content": json.dumps({"error": str(e)}) })十、最佳实践
Q12:如何提高工具调用准确率?
结论:优化工具描述和参数定义。
优化建议:
工具描述要清晰准确,说明工具的用途和限制 参数描述要详细,说明参数的类型、格式、取值范围 使用示例参数,帮助 AI 理解如何调用 避免工具功能重叠,每个工具专注一个功能
示例:
# ❌ 不好的描述{"name": "search","description": "搜索","parameters": {"query": {"type": "string"} }}# ✅ 好的描述{"name": "web_search","description": "网络搜索工具,用于获取最新的互联网信息。支持搜索新闻、文章、产品信息等。","parameters": {"type": "object","properties": {"search_query": {"type": "string","description": "搜索关键词,建议使用简洁明确的关键词,比如'北京天气'、'iPhone 15 价格'" } },"required": ["search_query"] }}更新日志
日期
版本
更新内容
2026-08-29
v1.0
初始版本,专注工具调用使用指南
文档维护:本指南将持续更新,如有问题或建议,请联系团队。
今日上昨日知识库模拟链接大家可以试试 点击页面两侧任意工具进入子页面查看