上下文工程实战指南:超越提示工程的7大核心组件,打造企业级可扩展LLM AI代理  第1张

书写上下文意味着协助您的代理捕捉并保存相关信息,这些信息以后可能会有用。书写上下文类似于人类在尝试解决问题时做笔记,这样他们就无需将所有细节都记在脑子里。

例如,在 FitCoach 的示例中,代理不会只是向用户提问然后就忘记用户的答案。代理会在对话过程中实时记录用户的年龄、目标、饮食偏好和其他信息。这些笔记(也称为便笺簿)存在于即时对话窗口之外,允许代理在任何时间点回顾已经发生的事情。书写上下文可能存储在文件、数据库或运行时内存中,但书写上下文可以确保代理在制定针对特定用户的计划时不会忘记重要信息。

只有当代理能够在需要时找到正确的信息时,收集信息才有价值。想象一下,如果 FitCoach 记住了所有用户的所有细节,但却无法找到某个用户的详细信息。

选择上下文恰恰就是只引入与当前任务相关的信息。

例如,当 FitCoach 生成锻炼计划时,它必须选择包含用户身高、体重和活动水平等任务上下文细节,同时忽略所有不相关的信息。这可能包括从便笺簿中选择一些可识别的事实,同时从长期记忆中检索记忆,或者依靠确定代理应如何行为的示例。正是通过选择性记忆,代理才能保持专注和准确。

有时,对话会变得过长,超出了 LLM 的记忆窗口。这时我们就需要压缩上下文。其目的是在保留重要细节的同时,将信息量压缩到尽可能小的程度。

代理通常通过总结对话的早期部分来实现这一点。例如,在与用户来回发送了 50 条消息后,FitCoach 可以将所有信息总结成几句简洁的句子:

The user is a 35-year-old male, weighing 180 lbs, aiming for muscle gain, moderately active, no injury, and prefers a high protein diet.

通过这种方式,即使对话可能持续了数百轮,代理仍然可以将关于用户的关键信息融入 LLM 的庞大上下文窗口中。在对话出现逻辑断点时,递归地总结或在正确的断点处进行总结,应该可以让代理保持高效并确保其保留关键信息。

隔离上下文意味着将信息分解成独立的部分,以便单个代理或多个代理能够更好地执行复杂的任务。开发人员通常会将上下文拆分到专门的子代理甚至沙盒环境中,而不是将所有知识塞进一个巨大的提示中。

例如,在 FitCoach 用例中,一个子代理可以专注于收集锻炼信息,而另一个子代理则专注于饮食偏好等。每个子代理都在其所属的上下文中运行,因此不会超负荷,对话可以保持专注和目的性。同样,像沙盒这样的技术解决方案允许代理在隔离环境中运行代码或执行 API 调用,同时只向 LLM 报告重要的结果。这避免了将不必要或潜在的敏感数据泄露到主上下文窗口,并只为系统的每个部分提供其严格需要的信息:不多不少。

编写、选择、压缩和隔离上下文:这些都是生产级 AI 代理设计的基础实践。这些实践将帮助开发者安全、准确、有目的地实现 AI 代理,以回答用户问题。无论是创建单个聊天机器人,还是创建一组间歇性并行运行的代理,情境工程都能将人工智能从实验性玩物提升为能够根据现实世界需求进行扩展的严肃工具。

在这篇文章中,我分享了从即时工程到情境工程的经验。单靠即时工程本身并不能为在不断变化的人工智能领域构建可扩展、可投入生产的解决方案奠定基础。为了真正发挥现代人工智能的能力,构建和管理围绕 LLM 的整个情境系统至关重要。刻意进行情境工程让我能够将原型维护为强大的企业级应用程序,这对于我从基于即时的修补转向情境驱动的工程至关重要。我希望分享我的心路历程,能够帮助其他人从即时驱动的工程扩展到情境工程。