最近在学习 AI Agent 开发,简单记录下。
目前仍未学完,持续更新中。
Agent
四个关键的能力:大脑、记忆、工具、规划
LLM充当大脑,负责推理、决策
记忆可以分为短期和长期,短期记忆可以简单理解为当前会话的上下文,长期记忆一般通过向量数据库来实现,把过去的经验、只是存起来,需要的时候通过RAG召回。
工具是Agent和普通LLM最大的区别,它的本质就是暴露了一堆函数,可以提供给llm调用。有了工具,通过tool calling机制,LLM可以输出一段约定格式的文本数据,告诉程序他需要调用什么方法、传递什么参数,在运行后再把运行结果返回给llm。
规划可以理解为思考的链路,常见的有ReAct、Plan and Solve、Reflection
ReAct
结合推理和行动,形成一个 '思考-行动-观察' 的循环。
提示词设计
这个是hello agent的教学版提示词:
# ReAct 提示词模板
REACT_PROMPT_TEMPLATE = """
请注意,你是一个有能力调用外部工具的智能助手。
可用工具如下:
{tools}
请严格按照以下格式进行回应:
Thought: 你的思考过程,用于分析问题、拆解任务和规划下一步行动。
Action: 你决定采取的行动,必须是以下格式之一:
- `{{tool_name}}[{{tool_input}}]`:调用一个可用工具。
- `Finish[最终答案]`:当你认为已经获得最终答案时。
- 当你收集到足够的信息,能够回答用户的最终问题时,你必须在Action:字段后使用 Finish[最终答案] 来输出最终答案。
现在,请开始解决以下问题:
Question: {question}
History: {history}
"""
在实际生产中,一般会设计成这样:
system prompt → tools → Few-shot examples-> conversation history → current question-> Agent scratchpad / intermediate steps.
这样的目的有两个:
注意力机制,llm对开头和结尾的关注度比较高,对中间部分的关注地相对低。
更好的利用缓存机制来降低llm api的调用费用、以及提升响应速度。【不变的在前,变化的在后】
参考资料
hello agent:https://datawhalechina.github.io/hello-agents/#/