第 1 课:Agent Core
下面是 Agent Core(智能体本体) 在“工程应用层面必须掌握的 完整知识清单”。
我把所有知识分为 10 大模块(每一项都是工程必备)。 这是专业 Agent 系统(AutoGPT、DeepSeek-R1、LangGraph、OpenAI Swarm、Meta Agent)共同需要的核心能力。
(一)什么是 Agent
1. 什么是 Agent
一个 LLM 模型只能在对话中给你提供信息,相当于很聪明的顾问,却只能在一问一答的模式中提供答案,不能联网,不能记忆,不能执行具体的任务(比如去按下某个web 页面中的某个 Submit 按钮)。
而 Agent 则是一个能自主完成任务的“智能执行者”。他以 LLM 模型 作为核心的决策系统(类似于人的大脑),但是给其配置了可以解决现实问题的工具(类似于人的身体四肢)。由此以来, LLM 不再仅仅停留在 “只能想不能做”,而是可以真正被整合到工作流中,成为 行为体(Actor),可以进行任何计算机上的操作,包括:推理需求,规划任务步骤,调用搜索引擎,运行代码,存储记忆,自动纠正Bug,控制状态机。
2. Agent 的架构
-
“认知”:Agent 的“大脑”来自 LLM(如 GPT-4、Llama 3),负责:推理,判断,做决定,拆解任务
-
“工具”:Agent 能调用 API / 浏览网页 / 执行代码,一般会打包成 工具函数
- “记忆”:长期/短期记忆让 Agent 不忘事
- 短期记忆:对话中最近的内容
- 长期记忆:通过向量数据库保存知识
- 反思记忆:Reflexion 策略记录失败经验
- “行动循环”:Reason → Act → Observe
3. 现实中的例子
自动购买机票的 Agent(行动型任务)**
你告诉 Agent:
帮我查最近从芝加哥到洛杉矶的最便宜机票,并帮我预定。
Agent 会:
- 调用 LLM 分析需求,确认需 求和 操作流程
- 使用浏览器工具打开 Expedia
- 输入日期和城市
- 抓取价格
- 比较不同航班
- 选择最便宜的
- 自动填入你的常旅客信息
- 下单
- 返回订单号
这是“自动化执行者”。
(二)基本 API 调用
我们使用 CometAPI 作为演示。这个平台整合了多家的 API,并且统一使用 Open AI 的 协议。
1. 可用模型 ID
查询你当前账号在 CometAPI 上“可用的所有模型 ID”
Endpoint
GET https://api.cometapi.com/api/models
返回格式
{
"data": [
{
"id": "gpt-4o", #模型的唯一标识符
"object": "model", #表示这是一个 model 对象,不用管
"created": 1626777600, #这个模型“记录”创建时间,可用于“选最新模型”
"owned_by": "openai",
"permission": [
{
"allow_sampling": true, #能不能生成文本
"allow_logprobs": true, #是否支持 logprobs
"allow_fine_tuning": false, #是否允许微调(一般 false)
...
}
],
"root": "gpt-4o", #该模型所属的“根模型”
"parent": null
}
...模型列表... ],
"success": true
}
调用代码
import requests
import json
BASE_URL = "https://api.cometapi.com"
def get_models():
url = f"{BASE_URL}/api/models"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
resp = requests.get(url, headers=headers, timeout=10)
resp.raise_for_status() # 非 200 会抛异常
data = resp.json()
if not data.get("success", False):
raise RuntimeError("Failed to fetch models")
return data["data"]
if __name__ == "__main__":
models = get_models()
# print(json.dumps(models, indent=2, ensure_ascii=False)) # 格式化输出字典结构
model_id_list = [model["id"] for model in models]
print(", ".join(model_id_list))
2. 单次对话
macOS / Linux 先在系统里设置环境变量
export COMET_API_KEY="你的新 Key"
import os
import requests
import json
import time
API_KEY = os.getenv("COMET_API_KEY")
BASE_URL = "https://api.cometapi.com/v1/chat/completions"
if not API_KEY:
raise RuntimeError("COMET_API_KEY not set")
def single_chat(prompt: str):
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
payload = {
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt},
],
"temperature": 0.2,
"max_tokens": 300,
}
resp = requests.post(
BASE_URL,
headers=headers,
json=payload,
timeout=30,
)
resp.raise_for_status()
data = resp.json()
return data["choices"][0]["message"]["content"]
if __name__ == "__main__":
time_set = time.time()
reply = single_chat("What is an AI agent?")
time_end = time.time()
print(reply)
print(f"Time Used:{time_end - time_set}")
3. 多次对话
同一个 messages 列表持续累积(这就是“记忆性”的本质)。
示例会进行 三轮对话,并在第 3 轮明确引用第 1 轮你告诉它的信息,从而验证它“记住了”。
说明:这属于 短期记忆(Short-term memory),即通过
messages传回完整历史实现。长期记忆(向量库)是下一步。
import os
import requests
API_KEY = os.getenv("COMET_API_KEY")
BASE_URL = "https://api.cometapi.com/v1/chat/completions"
if not API_KEY:
raise RuntimeError("COMET_API_KEY not set. In Jupyter, use: os.environ['COMET_API_KEY']='...' or %env")
def chat_once(messages, model="gpt-4o", max_tokens=120, temperature=0.2):
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
payload = {
"model": model,
"messages": messages,
"max_tokens": max_tokens,
"temperature": temperature,
}
r = requests.post(BASE_URL, headers=headers, json=payload, timeout=30)
r.raise_for_status()
data = r.json()
return data["choices"][0]["message"]["content"] # 获取回答
if __name__ == "__main__":
# 1) 初始化对话(系统提示 + 第一轮用户)
messages = [
{"role": "system", "content": "You are a concise assistant. Keep answers short."},
{"role": "user", "content": "My name is HeiHe. Im an engineer."}
]
# 第 1 轮
a1 = chat_once(messages)
messages.append({"role": "assistant", "content": a1})
print("Round1 Assistant:", a1)
# 第 2 轮:引入一个偏好(让“记忆性”更明显)
messages.append({"role": "user", "content": "When explaining, use bullet points."}) # 加入问题
a2 = chat_once(messages)
messages.append({"role": "assistant", "content": a2}) # 加入回答
print("\nRound2 Assistant:", a2)
# 第 3 轮:验证它能利用前两轮信息(名字 + 偏好)
messages.append({"role": "user", "content": "What is my name, and summarize our conversation so far in 2 bullet points."})
a3 = chat_once(messages, max_tokens=140)
messages.append({"role": "assistant", "content": a3})
print("\nRound3 Assistant:", a3)
这段代码“记忆性”体现在哪里?
- 关键在于:每一轮都把历史消息(含 assistant 的回复)追加回
messages- 第 3 轮询问“我叫什么 + 总结对话”,模型能答出来,是因为它在当前请求里看到了第 1、2 轮的内容。
(三)Agent 架构模式
后续我们的学习会按照 十个 模块进行
-
模块 1:LLM 作为决策引擎(Decision Engine)
-
模块 2:ReAct 架构(Reason + Act)
-
模块 3:Chain-of-Thought(CoT Agent)
-
模块 4:Reflexion 架构(带反思的 Agent)
-
模块 5:Memory(记忆系统)
-
模块 6:Tool Use(工具调用)
-
模块 7:Planner(规划器)与 Executor(执行器)
-
模块 8:状态机(State Machine)与可控 Agent
-
模块 9:Agent 日志、可视化与调试
-
模块 10:Agent Core 的整体架构模式
行业中所有 Agent 系统都来自以下 4 个核心架构:
架构 A:ReAct Agent(最基础)
优点:简单,可控 缺点:容易跑 偏,不知道自己错了
架构 B:Reflexion Agent(会反思)
优点:能修正错误 缺点:速度变慢
架构 C:Planner–Executor(最强工程架构)
像 ChatGPT 的 Tool Use 一样:
- 一个 Planner 做计划
- Executor 执行工具
- 最终结果由 Planner 整理
优点: ✓ 稳定 ✓ 可控 ✓ 适合复杂任务
架构 D:状态机 / LangGraph(企业级)
每个节点 = 一个 Agent。 可形成图结构(Graph)。 适用于:
- 分布式爬虫
- 舆情分析
- 多 agent 协作
- 自动化 pipeline(如 MemeMiner)