上下文工程旨在构建动态的系统,以合适的格式提供准确的信息和工具,从而使大语言模型能够有效完成任务

最近看到了一个166页的讲上下文工程的综述论文《A Survey of Context Engineering for Large Language Models》,一边感叹还是学术圈严谨,一边默默点击了关闭按钮

如果你只是想用上下文工程的理念构建自己的Agent,那大可不必这么体系化的啃论文,其实LangChain的blog《The rise of “context engineering”》写的非常简单清晰,用一句话定义就是:上下文工程旨在构建动态的系统,以合适的格式提供准确的信息和工具,从而使大语言模型能够有效完成任务。

关键词我已经在配图圈出来了,逐字解读一下:

1、上下文工程是一个系统工程。这里的Context上下文可以来自很多数据源,比如历史文档知识、工具返回的结果、用户的输入等,把这些数据源整合成一段上下文,是一个复杂的系统性工作

2、这个系统是动态的。许多上下文信息是动态获取的,这点跟静态的提示词工程Prompt Engineering不同。提示词工程主要聚焦在用各种奇技淫巧把提示词写好,最后prompt甚至成了玄学。上下文工程每次组装的提示词也是动态的,比如把某次工具执行的报错信息直接放到提示词的末尾,让大模型再决策下一步动作

3、你需要准确的信息。你的Agent表现不佳不一定是基础模型推理能力不行,更可能是你没有给到大模型足够有效的信息。大模型不会读心术

4、你需要合适的工具。大模型的能力有限,工具是连接大模型和真实世界的桥梁。大模型通过工具查询更多专有数据,或者执行特定的动作

5、格式也非常重要。简短但描述清晰的错误信息,远比一大段看似结构化的JSON数据更有价值。工具调用也是一样,入参尽可能简单没有歧义,是让大模型正确调用的关键

6、这个任务有可能完成吗?Agent把事情搞砸是因为信息缺失、工具不足?还是因为这件任务根本就无解?人都不知道怎么做的事情,就不要“强AI所难”了