聊天机器人只会说话,智能体会做事。它能自己判断“现在该查天气”,调用工具拿到结果,再决定“要不要提醒带伞”。智能体开发听起来高深,核心其实就一句话:大模型 + 工具 + 循环。
一个能跑的智能体,通常包含四样东西:
少了循环,它只是会调函数的模型;少了工具,它只是会聊天的模型。两者合在一起,才像“智能体”。
下面这段 Python 只有十几行,演示了智能体最核心的 ReAct 循环:模型先输出动作,程序执行工具,再把观察结果喂回模型。
import os, re
from openai import OpenAI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
tools = {"天气": lambda city: f"{city}:晴,25℃"}
def run(q):
prompt = f"可用工具:天气。格式:Action: 天气 / Action Input: 北京\n问题:{q}"
for _ in range(3):
msg = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}]
).choices[0].message.content
if "Action:" not in msg:
return msg
name = re.search(r"Action:\s*(.+)", msg).group(1).strip()
arg = re.search(r"Action Input:\s*(.+)", msg).group(1).strip()
prompt += f"\n{msg}\nObservation: {tools[name](arg)}"
return "达到最大步数"
print(run("北京天气怎么样?"))运行前把 API Key 放进环境变量。它会先让模型决定是否调用“天气”工具,执行后再把结果交回模型,直到模型给出最终回答。真实项目里,你可以换成 function calling、LangGraph 或 AutoGen,但底层逻辑不变。
智能体最容易翻车的地方,不是代码,而是提示词。一个好提示词要写清四件事:
例如:“你是任务助手。可用工具:天气(city)。需要天气时,只输出 Action 和 Action Input;否则直接回答。最多行动3次。” 这比堆一堆框架参数更有效。
没有记忆的智能体,每轮都像失忆。短期记忆可以保存对话历史;长期记忆可以用向量数据库存知识;任务状态可以用 JSON 记录“已完成、待办、失败原因”。但别一上来就上复杂架构,先用列表和字典把单任务跑通。
多智能体很火,但两个智能体互相聊天,很容易变成“开会不干活”。更稳的做法是:先做一个能调用工具的单智能体,再按职责拆分。比如“研究员”负责搜资料,“写手”负责成稿,“审查员”负责查事实。每个智能体只做一件事,通过明确格式交接。
智能体开发不是“跑通一次”就结束。你要持续看四个指标:任务成功率、平均步数、单次成本、危险操作次数。涉及发邮件、删文件、付款等工具,必须加权限确认和日志。否则,智能体越能干,闯祸越快。
智能体开发,代码可以很少,但责任很大。大模型负责想,工具负责做,循环负责推进,你负责定义边界。先写一个十几行的最小循环,再慢慢加工具、记忆和评测。
记住:智能体不是更长的提示词,而是让模型在“思考”和“行动”之间来回走。代码只是脚手架,真正决定它价值的,是你给它的目标和约束。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。