Agent
Agent(model)实战
类似于 RL 的过程
Agent(WorkFlow)相关理论+实战
类似于设计有向无环图
https://qiankunli.github.io/2018/09/04/technology_manage.html
从头实现一个基于 LLM 的 Agent 是一个系统工程,对一个初学者来说要学习的太多,本文结合个人思考从学术研究到常见框架进行总结。
https://github.com/KelvinQiu802/llm-mcp-rag
流式输出:GitHub - ZejunCao/bilibili_code: bilibili 视频讲解所使用的课件代码记录
初学者网站:
0. Motivation
搭建可自我修正、持续优化的 Agent 系统。
可能的关键点:
1.上下文动态调整机制
Context 决定了 LLM 在各个场景中的实际表现。上下文包含:User Query、History Messages、Prompt、Search Results、Tool Call Results 等等。尽管 LLM 的 Attention 与自回归生成可以改变 context,但实践证明这种机制还不足够,现有 LLM 依然需要精细 context 设置才能更好完成任务。分治、专注:相比使用单个复杂 Prompt,将复杂任务拆解为简单子任务,并为每个子任务设置独立的 Prompt 更容易优化,取得更好的整体效果。多尺度上下文:将 Context 中的冗余信息进行压缩或扩充。
2.反思与适应机制
1.大模型常见工具、平台
分布式训练框架:Accelerate(初始化)、DeepSpeed、MegaTron-LM、Colossal-AI、FairScale
推理框架:vLLM、LMDeploy、TensorRT-LLM、TGI、DeepSpeed-IF3
分布式任务调度框架:Ray
LLM 微调框架:OpenRLHF、LLaMA Factory、VeRL
GPT给出的VeRL与其他模块的关系
数据 → SFT → Reward Model → Preference Data → PPO / DPO / IPO → 微调完成
↑ ↑ ↑ ↓
DeepSpeed Accelerate Ray Tune (可选) 模型 API 暴露,供 LangChain 调用
应用开发框架:LangChain、pydantic_ai Web UI:Gradio、Streamlit、FastAPI、Flask
2.相关概念
Agent = LLM + Planning + Memory + Tools + Action
这里头 LLM 当然是核心,其推理、规划等能力都要出色,也可以使用多个 LLM 来联合完成任务。Planning 是
2.1.Agent System
大模型没那么大:ACL 2025 | 大模型提示词不是「随便写」!这篇文章告诉你:每句话都在重塑 AI 的「思考路径」
LLM 基座的选择很重要,因为有的模型推理能力不足,或者缺乏具备创造/调用工具的能力,难以支持复杂的 Agent 任务。除了基座选择以外,Prompt 也是重要的一环,是让 Agent 实现自主的关键。具体来说,Prompt 可以同时起到角色定位、陈述性和流程性等记忆(用户喜好、工具定义、可行的工具流程)、思维能力增强(CoT 能力、反思能力、抽象思维、发散思维、归纳思维、思维结构塑造)和内外部感知(工具、环境的感知)等作用,优化速度很快而且成本很低。因此 Prompt 微调相比参数微调对 Agent 更为重要,更适合测试时适应,而且给用户的反馈是最直接的。参数微调则更适合在获得大量数据后将知识内化。CoT 实际上也可以看做一种自己 Prompt 自己的过程【论文】,有序化搜索空间,提升泛化能力,因此理论上来说存在不需要任何 System Prompt 的 Agent。【想法:Prompt 太多了也不好,每次推理速度很慢,如何实现 Prompt 的内化?可以将 Prompt LLM 的能力蒸馏到 w/o Prompt LLM 中,通过对比两个模型的性能来实现自我学习。或者自己将 Prompt 进行总结,对比总结前后的性能来有效提升 LLM 能力】
Prompt 也会起到 负面作用,比如我在设计 Agent 的时候,一开始就只设定了其智能助理的身份,结果 LLM 就丧失了利用自身知识的对话能力。比如,询问我设计的 Agent 某个动漫每一集的内容,它无法回答出来,而在无 Prompt 的情况下就可以很好的回答问题。最后,我 在 Prompt 中引入了一个知识库的身份,引导其可以利用自身知识来回答问题,才部分解决了这一问题。还有比如 Prompt 如果包含不合理的工作流,也会让 LLM 效果更差。
2.2.Memory:RAG、记忆系统
看完 Cursor 记忆功能提示词后,我发现了 AI 智能体记忆设计的秘诀
首次全面复盘 AI Agents 记忆系统:3 大类,6 种操作!
2.3.Tools:Function Call、Model Context Protocol (MCP)
不理不理:Qwen Function Calling 的对话模板及训练方法总结
MCP、function calling 这两者有什么区别?与 AI Agent 是什么关系?
战士金:大模型工具调用(function call)原理及实现
MCP 的 Github 链接:
https://github.com/modelcontextprotocol/python-sdk
@mcp.tools 的实现
LastWhisper:MCP (Model Context Protocol),一篇就够了。
https://github.com/liaokongVFX/MCP-Chinese-Getting-Started-Guide?tab = readme-ov-file
MCP 的 Prompt(未确认)
Tool: {self.name}
Description: {self.description}
Arguments:
{chr(10).join(args_desc)}
2.4.Planning:WorkFlow、Chain of Thought (CoT)
简单来讲,就是通过将问题进行分解并依次求解,来提升复杂问题的处理能力,例如做数学题、编写代码。CoT 的发展历程为 IO (Input-Output) -> CoT -> ToT (Tree of Thought)。实现方式包括:
Prompt
3.相关研究
3.1.Agent 的仿生启发
吕阿华:【AI Agent 研究综述】《基础智能体的进展与挑战:从脑启发智能到进化、协作和安全系统》(全文)
3.2.Agent 综述
LinguaMind:万字长文!何谓 Agent,为何 Agent?
3.3.Agent 前沿
自动驾驶之心:思维链再进化!极简推理范式 Chain of Draft:推理 token 爆砍 80%~
机器之心:OTC‑PO 重磅发布 | 揭开 o3 神秘面纱,让 Agent 少用工具、多动脑子!
3.3. Agent 项目与系统
https://github.com/Fosowl/agenticSeek
如何快速理解已有 Github 项目,并用于自己的项目中?
Claude code 的逆向工程:
https://github.com/shareAI-lab/analysis_claude_code
4.实战
4.1. Prompt 设计心得
Prompt 一方面给予了模型引导,另一方面也会限制模型能力
4.1.常见格式
模型训练-sharegpt,保存为 jsonl:
{
"conversations": [
{
"from": "human",
"value": "人类指令"
},
{
"from": "function_call",
"value": "工具参数"
},
{
"from": "observation",
"value": "工具结 果"
},
{
"from": "gpt",
"value": "模型回答"
}
],
"system": "系统提示词(选填)",
"tools": "工具描述(选填)"
}
]
conversations 是一个列表,每个元素包含一个 from 和一个 value,分别代表发言的角色以及内容。conversations 中奇数 列为外部环境反馈(human、observation),偶数列为 Agent 的 Action(gpt、funciton_call)。system 和 tools 是其他参数。
sharegpt 还可以设置偏好数据集,其中 conversations 为多轮对话(奇数个,需要模型输出回答)。chosen 和 rejected 则为正负样本对。
[
{
"conversations": [
{
"from": "human",
"value": "人类指令"
},
{
"from": "gpt",
"value": "模型回答"
},
{
"from": "human",
"value": "人类指令"
}
],
"chosen": {
"from": "gpt",
"value": "优质回答"
},
"rejected": {
"from": "gpt",
"value": "劣质回答"
}
}
]
模型训练-alpaca,保存为 jsonl 或者 json:
{
"instruction": "Describe the benefits of exercise.",
"input": "",
"output": "Exercise improves mental and physical health..."
}
LLaMA 2 / ChatLLaMA 格式(Meta 官方推荐)
huggingface 上 llama 2 chat 格式是多轮 messages 模式:
{
"conversations": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What's the weather like?"},
{"role": "assistant", "content": "It's sunny and warm."}
]
}
Vicuna(基于 LLaMA + ShareGPT)
Vicuna 用的是 ShareGPT 格式,类似 messages 列表。
{
"conversations": [
{"from": "human", "value": "Tell me a joke."},
{"from": "gpt", "value": "Why did the chicken cross the road? To get to the other side!"}
]
}
Baichuan / Qwen / ChatGLM 格式
一般也采用 messages 数组结构,但 role 命名不同。
{
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What's AI?"},
{"role": "assistant", "content": "AI stands for Artificial Intelligence..."}
]
}
4.1.基础 Agent 实现
无涯:基于本地知识的问答机器人 langchain-ChatGLM
RedHerring:手搓一个最小的 Agent 系统 — Tiny Agent
wx1997:AI Agent 系列二:Agent 基础技术篇(ReACT、ReST、AgentTuning、Reflexion)
摇一摇:我也复刻了一个 Manus,带高仿 WebUI 和沙盒
4.1.结合模型训练的 Agent
4.2.NLP 奇幻之旅:vLLM 入门(一)初始 vLLM
4.3
字节跳动开源了 Deep Research 项目 DeerFlow,这将如何影响开源社区和技术发展?
SkyRL:首个现实环境、长周期 LLM Agent 的端到端 RL 流水线框架
设计 action space 接近于帮 LLM agent 的抽象出它的 skills
设计 state space 接近于帮 LLM 选择需要置入 上下文的内容或者写提示词
reward function 相当于帮 LLM 设计 evaluation 和 verify 模块,直接决定 它的自行迭代环路的 转动速度