新闻详情

新闻详情

首页 / 资讯中心 / 详情

新手小白 Agent 开发第4课:让 AI 学会用工具,Tool Calling 第一步

发布时间:2026/9/28 20:12:21来源:尧图网络
新手小白 Agent 开发第4课:让 AI 学会用工具,Tool Calling 第一步
前面三课我们的程序会聊天、有记忆但它始终只会「动嘴」——不能查、不能算、不能替你做任何实际操作。这一课我们给它装上第一件工具计算器。做完之后你的程序就不再只是聊天机器人而是迈出了 Agent 的第一步。一、先建立项目结构现在的项目应该长这样my-agent/ │ ├── .venv/ │ ├── main.py │ └── tools.py其中main.py负责Agent 的「大脑」调用模型、协调流程tools.py负责Agent 的「工具」真正干活的函数这种「大脑」和「手」分离的结构是 Agent 后面能不断扩展工具的基础。二、先写一个计算器打开tools.pydef calculator(a, b, operation): if operation add: return a b elif operation subtract: return a - b elif operation multiply: return a * b elif operation divide: return a / b else: return 不支持的运算先单独测一下。在tools.py末尾加两行print(calculator(10, 20, add)) print(calculator(10, 20, multiply))运行python tools.py看到30 200说明工具本身没问题。然后把这两行测试代码删掉。三、让 DeepSeek「认识」这个工具现在是关键我们不是写if 用户输入里带乘号就调用计算器而是把工具描述给模型让它自己决定用不用。在main.py里这样告诉模型tools [ { type: function, function: { name: calculator, description: 进行数学计算, parameters: { type: object, properties: { a: {type: number, description: 第一个数字}, b: {type: number, description: 第二个数字}, operation: { type: string, enum: [add, subtract, multiply, divide], description: 要执行的运算 } }, required: [a, b, operation] } } } ]这段看着复杂但不用背。你只要理解我们是在给模型写一份「说明书」我有一个工具名字叫 calculator 作用是数学计算 需要三个参数a、b、operation 其中 operation 只能是 add / subtract / multiply / divide。于是当用户问「100 × 200 等于多少」时模型就可能输出{ name: calculator, arguments: {a: 100, b: 200, operation: multiply} }这就叫Tool Calling工具调用。四、让模型做决定然后真正执行接着把请求发出去并检查模型是否要求调用工具messages [ {role: user, content: 12345 × 6789 等于多少} ] response client.chat.completions.create( modeldeepseek-chat, messagesmessages, toolstools ) message response.choices[0].message if message.tool_calls: tool_call message.tool_calls[0] function_name tool_call.function.name arguments json.loads(tool_call.function.arguments) if function_name calculator: result calculator( arguments[a], arguments[b], arguments[operation] ) print(计算结果, result) else: print(message.content)运行后你会看到计算结果 83810205五、一个必须理解的分工模型思考Python 执行这里有一个特别容易误解的点DeepSeek 并没有真正执行 Python 计算。它只是告诉我们「我想使用这个工具参数是这些。」真正去调用calculator的是我们写的 Python 代码。┌─────────────┐ │ DeepSeek │ 负责思考、选择工具 └──────┬──────┘ │ Tool Call我要用 calculator ↓ ┌─────────────┐ │ Python │ 真正执行工具 └─────────────┘一句话概括模型负责「想」代码负责「做」两者各司其职。六、对比一下你就懂差在哪了维度聊天机器人会 Tool Calling 的程序能做的事只会生成文字能计算、查询、调用 API谁决定用不用工具无没工具模型自己决定判断逻辑无由模型生成非硬编码本质文本生成向 Agent 靠近一句话概括给模型一件工具它就从「回答者」变成了「行动者」。总结这一课的核心模型负责决策Python 负责执行。我们用一个计算器跑通了 Agent 最关键的机制——Tool Calling。但现在还有个问题我们的代码只会执行一次工具就结束。如果任务需要「先搜索、再计算」一次根本不够。下一课我们就来手搓整个系列最重要的东西——Agent Loop。下一课预告第5课手搓 Agent Loop让 AI 自己循环执行工具。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Effective HTML终极组合:Plannotator批注+tot分享链接的完整工作流 2026/9/28 20:51:20

Effective HTML终极组合:Plannotator批注+tot分享链接的完整工作流

Effective HTML终极组合:Plannotator批注tot分享链接的完整工作流 【免费下载链接】effective-html Agent skills for useful HTML artifacts, wireframes, interactive prototypes, plans, and diagrams. 项目地址: https://gitcode.com/gh_mirrors/ef/effective…

阅读更多 →
网页为什么做不到真正静默打印:安全模型、伪方案与本地代理 2026/9/28 20:51:20

网页为什么做不到真正静默打印:安全模型、伪方案与本地代理

产品经理说「点一下就出纸,别弹窗」。前端一搜 silent print,装两个库,框还在。再搜 Chrome 静默打印,看到 kiosk、策略、扩展,好像只要改设置就能交差。最后上线,办公室电脑一片「打印没反应」或「还是弹出…

阅读更多 →
Lap重复照片清理完整指南:从分组审查到批量删除 2026/9/28 20:51:19

Lap重复照片清理完整指南:从分组审查到批量删除

Lap重复照片清理完整指南:从分组审查到批量删除 【免费下载链接】lap An offline-first photo manager for large local libraries 项目地址: https://gitcode.com/GitHub_Trending/lap3/lap Lap 是一款开源、本地优先的照片管理工具,它的重复照片…

阅读更多 →
基于SpringBoot+VUE+AI的文物管理系统的设计与实现 2026/9/28 20:51:19

基于SpringBoot+VUE+AI的文物管理系统的设计与实现

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参…

阅读更多 →
美团优选关停后,社区团购的活路在哪?答案藏在“私域信任“里 2026/9/28 20:51:18

美团优选关停后,社区团购的活路在哪?答案藏在“私域信任“里

美团优选关停后,社区团购的活路在哪?社区团购的风口就在当下? 一、美团优选退场,不是社区团购的终局 2025年12月15日,美团优选完成全国撤仓,连最后运营的广东、浙江区域也全面关停。这个曾覆盖全国 90%以…

阅读更多 →
PY32F002B串口通信实战:printf重定向与嵌入式调试技巧 2026/9/28 20:51:12

PY32F002B串口通信实战:printf重定向与嵌入式调试技巧

1. PY32F002B到底是颗什么样的芯片:先回答“为什么要玩它”如果你最近在电商平台搜过单片机开发板,大概率刷到过 PY32F002B 这块小板子。便宜是真的便宜,整块开发板的价格还不到一杯奶茶钱,芯片一颗更是低到可以按“毛”来算。很多…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉