What is Context Engineering & Harness Engineering?
On this page
1 What in the Context?
- User Prompt: 用户的输入文本,通常是一个自然语言的查询或者指令。
- System Prompt: 系统的输入文本,通常是一个预定义的文本,用来引导模型生成特定类型的输出。
System Prompt 里面应该包含什么
- Dialogue History(Short Term Memory): 之前的对话内容,可以帮助模型理解当前的对话上下文。
- Long Term Memory: 长期记忆,可以帮助模型在更长时间范围内保持对话的一致性和上下文理解。
- Other Information:从RAG,或者其他外部知识库中检索到的信息,可以帮助模型生成更准确和相关的输出。
- Tool Use:模型在生成输出的过程中,可能需要调用一些工具或者API来获取更多的信息或者执行一些操作,这些工具的使用信息也应该包含在System Prompt中。 (Prompt):
- 如何使用工具
- 特定工具的使用方法
eval() 可以执行工具
Computer Use
Reasoning Process
2 Context Engineering
Context Engineering主要是减少Context的长度,以及冗余信息。尽管现在的模型号称的Context Length已经达到了100K tokens,但是在实际的应用中,过长的Context会导致模型的效率降低,甚至无法处理。
可以发现,资料越来越多,模型的表现并没有表现的更好。
Context Engineering 的实现,基本就是一句话:
把需要的东西放进去,不需要的东西清理出来
2.1 Select
别把所有的东西都放进去,挑选出最相关的东西放进去。比如在RAG的场景中,检索到的资料可能有很多,但是并不是所有的资料都是相关的,我们需要通过一些方法来挑选出最相关的资料放入Context中。
除了RAG,我们还可以通过用LLM的方法,挑选我们需要的关键字,将其传入搜索引擎,并且用一个小的LLM来挑选出最相关的资料放入Context中,这个过程叫做Reranking
Tool RAG 当我们工具越来越多的时候 ,模型需要调用的工具也会越来越多,这时候我们就需要通过一些方法来挑选出最相关的工具放入Context中,或者说在模型生成输出的过程中,模型需要调用哪些工具,这些工具的信息也应该包含在Context中。
Memory RAG 当我们有一个长时间的对话或者交互的时候,模型需要记住之前的对话内容或者交互内容,这些内容可以帮助模型理解当前的对话上下文,这些内容也应该包含在Context中。
按需加在 用AI动态输出自己需要什么工具
2.2 Compress
也叫Compact 将久远的对话内容或者交互内容进行压缩,提取出其中的关键信息,放入Context中,这样可以减少Context的长度,同时又能保留重要的信息。 什么时候压缩? - 当每多少回合对话或者交互之后,就进行一次压缩,提取出其中的关键信息,放入Context中。 - 固定一段时间就压缩
2.2.1 Tool Use Compression
Computer Use的过程中时非常琐碎的内容,可能会有很多的细节信息,这些信息对于模型来说可能并不是非常重要,我们可以通过一些方法来压缩这些信息,提取出其中的关键信息,放入Context中,这样可以减少Context的长度,同时又能保留重要的信息.
也可以把其放入RAG或者Log.txt
两个可以结合起来使用
可以把Tool的输出存在Log.txt 中
2.3 Context Collapse
在压缩的时候,可能会损失一些重要的信息。
当然,可以专门训练一个LLM来进行模型的压缩
2.4 When to Compress?
模型很难自己压缩,所以我们需要通过一些方法来判断什么时候需要压缩,什么时候不需要压缩,这样可以减少Context的长度,同时又能保留重要的信息。
2.5 Multi-Agent
当我们有多个Agent的时候,每个Agent可能需要不同的Context信息,这时候我们就需要通过一些方法来挑选出每个Agent需要的Context信息,放入Context中,这样可以减少Context的长度,同时又能保留重要的信息。
比如Sub-agent,我们可以丢弃sub-agent的对话内容,只保存sub-agent的关键信息,返回Main Agent当中,这样可以减少Context的长度,同时又能保留重要的信息。



