入门篇 · 第 5 天 / 共 7 天
让 AI 用工具(Agent 雏形)
前几天你的 AI 一直在"动嘴"——它只会说话。今天是个转折点:我们让它第一次"动手",学会喊你的程序帮它干活。这个"会用工具的 AI",就是这两年最火的词——Agent(智能体)的雏形 🛠️。
1234567
你在第 5 天
①
痛点:AI 算不准、查不到
试着问 AI:123456 × 789 等于几? 你会发现它经常算错。再问它今天几号、现在几点,它也答不上来。它明明这么聪明,怎么连算术都不会?
🧠 AI 是"博学的偏科生"
大模型靠"接话"输出答案,它不是在真的计算,只是凭语感"猜"一个看起来像答案的数字——所以大数相乘经常翻车。实时信息(几点了、股价多少)更是它训练完之后发生的事,它根本不可能知道。就像一个满腹诗书、但不带计算器也不看手机的偏科学霸。
👶 那让它算数、查东西不就没用了?
🧑🏫 反过来想:算数交给计算器,查时间交给时钟,这些电脑最擅长!我们要做的,就是让 AI 学会"喊工具来帮忙"——难的判断它来做,精确的活儿交给工具。这才是聪明的用法。
②
本质:想 → 用工具 → 看结果 → 再答
"让 AI 用工具"听起来高大上,其实就是一个四步小循环:
① 想:AI 看你的问题,判断"这题我得用工具"。
② 说要用:它不直接瞎答,而是说一句"我要用计算器算 123456×789"。
③ 你的程序动手:你的代码看到它想用工具,真的去算,拿到准确结果。
④ 回填 + 再答:把结果塞回去告诉它,它再用人话组织成最终回答。
② 说要用:它不直接瞎答,而是说一句"我要用计算器算 123456×789"。
③ 你的程序动手:你的代码看到它想用工具,真的去算,拿到准确结果。
④ 回填 + 再答:把结果塞回去告诉它,它再用人话组织成最终回答。
🍽️ 像"厨师喊传菜员"
AI 是厨师,脑子好、会调味,但够不着冰箱。它喊一句"给我拿两个鸡蛋"(说要用工具),传菜员(你的程序)跑腿把鸡蛋递过去(执行 + 回填),厨师拿到食材再继续做菜(最终回答)。AI 负责动脑,工具负责跑腿。
💡 说明业界有一套正式的 "function calling / 工具调用" API 来做这件事,但对新手太绕。今天我们用最朴素的手写版,让你先把"工具调用"的本质看清楚——原理一模一样。
③
动手:给 AI 一个计算器
思路:我们用提示词跟 AI 约定一个暗号——遇到算术,它别自己算,只回复 CALC:表达式。我们的程序看到这个暗号,就用 Python 精确算出来,再把结果发回去让它用人话回答。新建 agent.py:
from openai import OpenAI
client = OpenAI(api_key="你的钥匙", base_url="https://api.deepseek.com")
# 关键:用提示词跟 AI 约定暗号——算术只回 CALC:表达式,别自己算
rule = "遇到需要算术时,不要自己计算,只回复一行 CALC:表达式,例如 CALC:12*34"
question = input("你问:")
messages = [{"role": "system", "content": rule}, {"role": "user", "content": question}]
reply = client.chat.completions.create(model="deepseek-chat", messages=messages).choices[0].message.content
if reply.startswith("CALC:"): # 检测到 AI 想用"计算器"
expr = reply[5:].strip() # 取出暗号后面的表达式
result = eval(expr) # 你的程序动手,精确算出结果
messages.append({"role": "assistant", "content": reply}) # 记下它的请求
messages.append({"role": "user", "content": f"计算结果是 {result},请用一句话回答"}) # 回填结果
reply = client.chat.completions.create(model="deepseek-chat", messages=messages).choices[0].message.content
print("AI:" + reply)
运行,问它一道大数乘法:
python agent.py
输入 123456 乘以 789 等于几?——AI 会先吐出 CALC:123456*789,你的程序算出 97406784,回填给它,它最后用人话答给你。这次的数字是精确的!
🎉 见证时刻
你第一次让 AI"动手"了!它不再硬着头皮瞎猜,而是学会了"这活我不行,喊工具"。这个"AI 判断 → 调工具 → 拿结果 → 再作答"的循环,就是 Agent 的心脏。你手里这几十行,已经是一个最小的 Agent 了。
你第一次让 AI"动手"了!它不再硬着头皮瞎猜,而是学会了"这活我不行,喊工具"。这个"AI 判断 → 调工具 → 拿结果 → 再作答"的循环,就是 Agent 的心脏。你手里这几十行,已经是一个最小的 Agent 了。
👶 eval() 是啥?听说它不安全?
🧑🏫 eval("12*34") 就是让 Python 把这串字符当算式真的算一遍,很方便。它确实不适合用在真实产品里(会执行任意代码,有风险),但今天只在你自己电脑上练手,完全没问题。真做产品时会换成更安全的算法,这是进阶篇的事。
④
小结
今天你解锁了 AI 开发里最重要的一个观念:
💡 Agent = 会用工具的 AI
AI 负责动脑(判断、组织语言),工具负责动手(精确计算、查资料、发邮件……)。把这个"想→用工具→看结果→再答"的循环套在不同工具上,就能造出各种各样的 Agent。你今天给的是计算器,换成"查天气""发邮件"也是同一套。
🎯 今天你收获了什么
✅ 明白了 AI 的短板——算不准、查不到实时信息;
✅ 看懂了工具调用的本质——AI 说要用工具 → 程序执行 → 回填结果 → AI 再答;
✅ 亲手做出了一个会用计算器的最小 Agent——你第一次让 AI"动手"干活了!
✅ 明白了 AI 的短板——算不准、查不到实时信息;
✅ 看懂了工具调用的本质——AI 说要用工具 → 程序执行 → 回填结果 → AI 再答;
✅ 亲手做出了一个会用计算器的最小 Agent——你第一次让 AI"动手"干活了!
AI 会用工具了,但它还有个盲区:它不知道你的私事——你公司的文档、你自己的笔记,它一概不知。明天我们教它"看着你的资料回答",这就是大名鼎鼎的 RAG 📚
Day 6 · 让 AI 读资料答题 →