AI领域新趋势:从提示(Prompt)工程到上下文(Context)工程
在人工智能领域,尤其是与大型语言模型(LLM)相关的应用开发中,一个新兴的概念正在逐渐取代传统的提示工程(Prompt Engineering),那就是上下文工程(Context Engineering)。本文将深入探讨这一转变背后的原因、上下文工程的内涵以及它对AI应用开发的重要意义。
一、什么是上下文工程?
上下文工程是一种构建动态系统的过程,目的是为LLM提供正确格式的信息和工具,使其能够合理地完成任务。这与传统的提示工程有着本质的区别。提示工程主要关注于如何巧妙地措辞提示,以期从LLM中获得更好的答案。然而,随着应用的复杂性不断增加,人们逐渐意识到,向AI提供完整且结构化的上下文比任何巧妙的措辞都更为重要。
上下文工程是一个系统,而不是简单的字符串。它是一个在主LLM调用之前运行的系统,能够从多个来源获取上下文,包括应用开发者、用户、之前的交互、工具调用或其他外部数据。这个系统是动态的,可以根据不同的任务和情境动态地构建最终的提示。它强调提供正确的信息和工具,如果输入的信息不准确或不完整,输出的结果也必然不可靠。同时,信息和工具的格式也至关重要,就像与人类沟通一样,清晰、简洁的格式更容易被理解和处理。
二、上下文工程的重要性
当基于LLM的智能体系统(Agent)出现问题时,很多时候并非模型本身的问题,而是因为没有向模型提供适当的上下文。随着模型技术的不断进步,模型本身的错误越来越少,而上下文错误却成为了主要问题。上下文可能存在问题的原因包括:缺少模型做出正确决策所需的关键上下文信息;上下文格式不佳,影响模型对数据的理解和处理。
例如,想象一个AI助手被要求根据一封简单的电子邮件安排会议。如果这个助手只有用户请求的上下文,而没有其他相关信息,如日历信息、过去的电子邮件往来、联系人列表等,那么它生成的回复可能是无用且机械的。相反,如果能够在调用LLM之前,将这些相关的信息作为上下文提供给模型,那么生成的回复就会更加智能和实用。
三、上下文工程与提示工程的关系
虽然提示工程是上下文工程的一个子集,但上下文工程的范围更广。提示工程更多地关注于如何将上下文以最佳的方式组织在提示中,以适应动态数据并正确地格式化它们。而上下文工程则不仅包括提示的构建,还包括从多个来源收集和整合上下文信息,以及确保这些信息和工具的格式适合LLM处理。
四、上下文工程的实践案例
一些基本的上下文工程实践包括:
- 工具使用:确保代理在需要访问外部信息时,有相应的工具可以使用,并且这些工具返回的信息格式要便于LLM理解和处理。
- 短期记忆:在长时间的对话中,创建对话摘要,并在后续对话中使用这些摘要。
- 长期记忆:能够获取用户在之前对话中表达的偏好。
- 提示工程:在提示中清晰地列举代理的行为指令。
- 检索:动态地检索信息,并在调用LLM之前将其插入到提示中。
五、LangGraph和LangSmith如何助力上下文工程
LangGraph是一个以可控性为目标构建的代理框架,它允许开发者完全控制代理的运行步骤、输入LLM的内容以及输出的存储位置。这种高度的可控性使得开发者可以进行各种复杂的上下文工程操作。而LangSmith则是一个LLM应用的可观测性和评估解决方案,其关键功能之一是能够追踪代理调用。通过LangSmith,开发者可以看到代理运行的所有步骤,以及输入和输出LLM的确切内容,从而调试上下文是否包含了完成任务所需的所有相关信息和工具。
六、结论
上下文工程的兴起反映了AI应用开发的一个重要转变。它强调了为LLM提供高质量上下文的重要性,这不仅包括正确的信息和工具,还包括这些信息和工具的格式和动态性。随着模型技术的不断发展,上下文工程将成为AI工程师必须掌握的关键技能。通过构建动态的上下文系统,我们可以使LLM更好地完成各种复杂任务。
七、参考资料
- The rise of “context engineering”
- The New Skill in AI is Not Prompting, It’s Context Engineering