- A+
1 Prompt 工程
Prompt 即提示词,可以让 LLM 扮演角色,比如猫娘,其中有一个非常出名的角色扮演工具 SillyTavern。
1.1 概述
Prompt 分为两个部分:系统提示词(system prompt)和用户提示词(user prompt),系统提示词一般为大模型厂商内置,无法修改;用户提示词则为聊天框中输入的内容。
系统提示词 + 用户提示词 = 提示词工程,用于约束 LLM 的行为,减少错误回答。
提示词工程分为两种类型:Zero-Shot 和 Few-Shot
1.2 Zero-Shot
在提示词中只给出具体要求或问题,不给出相应具体实例。
1.3 Few-Shot
在提示词中加入几个具体的实例供 LLM 参考。在需要 LLM 返回特定格式的结果时有较大作用,例如 Json 格式信息。
1.4 Chain-of-Thought (CoT)
又称思维链,在提示词中分解问题,引导 LLM 逐步解决问题。
2 Context 工程
2.1 概述
LLM 本身没有上下文记忆功能,其上下文的能力通过 用户 和 LLM 之间的 AI Agent 实现,该 Agent 每次都会保留 用户 和 LLM 之间的对话记录,在产生新的对话时,都会将之前的所有对话记录一起发送给 LLM。Agent 中完整的历史对话记录则称为 上下文(Context),而如何管理和修改这段历史记录的技巧则称为上下文工程(Context Engineering)。
2.2 核心问题
LLM在与Agent工具集交互的过程中,会使用Toolcall命令调用指定工具(例如搜索引擎),Agent 会返回 Toolresponse (例如 <html/>网页) 给LLM,这样来回往复交互时,提供给 LLM 的上下文会越来越长(充斥着越来越多的无关中间信息),可能会导致 LLM 的行动方向跑偏,从而忘记自己的任务。上述即为上下文工程需要解决的核心问题。
2.3 解决方案
2.3.1 记笔记(保存Context)
记住每次更新的核心内容,并存放到内存/硬盘中。
2.3.2 选择Context
分为静态选择和动态选择。
- 静态选择表示必须要遵守的信息全部放入 Context 中(例如Cursor Rules 文件、CLaude.md文件,这些文件包含了编码必须要遵守的规范等基本信息)。
- 动态选择表示选择与用户问题最相关的内容放入 Context 中(例如挑选记忆、挑选工具等),其中代表性方法有 RAG。
2.3.3 精简上下文(压缩Context)
方式1:删除过于久远的消息,只保留新的消息。
方式2:压缩历史上下文
- 让 LLM 总结/提炼 历史上下文中的关键信息,然后替换历史上下文。
- 另外一种方法将过长的 toolresponse(比如长文章)存入向量数据库中,然后LLM调用query_doc工具只需查询文章中的感兴趣的片段即可。
- 直接优化 toolresponse 的内容/返回值,例如去掉不必要的HTML标签,减少原始信息冗余。
2.3.4 隔离Context
在一个 Multi-Agent 系统中,存在一个 Lead Agent(例如用于任务下发+归纳总结) 和多个 Subagent(例如 Subagent1 用于搜索PDF;Subagent2 用于搜索网页;Subagent3 用于搜索图片),这些 Subagent 都有其各自独立的工具、独立的运行历史;它们拥有各自的Context,这些Context是相互隔离,互不影响的。
3 参考
[2] Cognition | Don’t Build Multi-Agents



