实现 AI chatbot 那篇实现了一个带工具的聊天机器人,它能自动判断什么时候该调用天气查询工具。
你可能已经意识到了:这个 chatbot 能自己决定是否调用工具,是不是已经算 Agent 了?
广义上说确实算,但它有一个关键限制,让它还够不上真正的 Agent。这篇文章就从这个限制出发,把 chatbot 改造成一个能自主写代码、修 bug 的编程 Agent。改动不大,核心就一行。
chatbot 的局限
回顾 chatbot 第二版的核心逻辑:
while True:
user_input = input("你: ")
messages.append({"role": "user", "content": user_input})
response = client.chat.completions.create(
model="deepseek-v4-flash", messages=messages, tools=tools,
extra_body={"thinking": {"type": "disabled"}}
)
assistant_message = response.choices[0].message
# 模型决定调用工具
if assistant_message.tool_calls:
# 执行工具,把结果塞回上下文
...
# 再调一次模型,生成最终回答
response = client.chat.completions.create(...)
assistant_message = response.choices[0].message
messages.append({"role": "assistant", "content": assistant_message.content})
print(f"AI: {assistant_message.content}")看到问题了吗?模型只有一次调用工具的机会。调完工具拿到结果后,就必须直接生成文本回复了。
如果任务需要多个步骤呢?比如你说「buggy.py 里有个 bug,帮我修一下,改完跑个测试确认」,这需要连续三步:读文件看代码 → 写文件改 bug → 执行命令跑测试。我们的 chatbot 只能调一次工具就得交卷,后面的步骤做不了。
这就是 chatbot 和 Agent 的核心区别。chatbot 是一问一答,Agent 能自主循环执行多个步骤,直到任务完成。