AI 时代,你可能听说过提示词工程、RAG、记忆等术语。但是很少有人提及上下文工程(context engineering)。
其实,这一术语并不新鲜,近两年很多智能体构建者一直在关注这个事情。至于重要性,下面这张图很好地概括了上下文工程与提示词工程、RAG 等的关系。
在传统的提示工程中,开发者通常侧重于精心设计提示语,以期得到更好的答案。然而,随着应用的复杂度不断增加,逐渐显现出单纯依赖提示已无法满足现代智能体的需求。如今,提供完整且结构化的上下文信息比任何巧妙的提示词更为重要。
上下文工程就是为此诞生的。
上下文工程是构建动态系统,以正确的格式提供合适的信息和工具,从而使得 LLM 能够合理地完成任务。
大多数时候,当一个智能体没有很好地执行任务时,根本原因是没有向模型传达适当的上下文、指令和工具。LLM 应用正在从单一的提示演变为更复杂、动态的智能系统。
因此,上下文工程正在成为 AI 工程师可以发展的最重要技能。
上下文工程是指构建动态系统,以合适的格式提供准确的信息和工具,使 LLM 能够合理完成任务。
上下文工程是一个系统。复杂的智能体可能需要从多个来源获取上下文。这些上下文可能来自应用开发者、用户、先前的交互记录、工具调用结果或其他外部数据。将这些内容整合起来需要一个复杂的系统。
上下文工程是动态的。许多上下文信息是动态生成的。因此,构建最终提示的逻辑也必须是动态的,而不仅仅是一个静态模板。
必须提供准确的信息。智能体系统表现不佳的常见原因往往是缺乏正确的上下文。LLM 无法「读心」—— 因而你必须为它们提供准确的信息。输入的是垃圾,输出的也只会是垃圾。
需要提供合适的工具。并不是在所有情况下,LLM 仅凭输入就能够解决任务。在这些情况下,如果你希望赋能 LLM 来完成任务,你需要确保它拥有合适的工具。这些工具可以是用来查找更多信息、采取行动,或者介于两者之间的任何东西。为 LLM 提供合适的工具和提供正确的信息一样重要。
格式很重要。就像与人类沟通一样,如何与 LLM 沟通也很重要。在确保 LLM 能够使用这些工具时,工具的输入参数非常重要。
当智能体系统出错时,通常是因为 LLM 出错。从第一性原理思考,LLM 出错有两个原因:
随着技术的不断优化,更多情况下(尤其是当模型变得更强大时)模型的错误是由第二个原因造成的。传递给模型的上下文可能由于以下几种原因导致性能下降:
为什么要从提示工程到上下文工程转变?早期,开发者专注于巧妙地给出提示以引导模型给出更好的答案。但随着应用变得更加复杂,现在越来越明显的是,提供完整且结构化的上下文比任何巧妙的措辞更为重要。
我们可以将提示工程视为上下文工程的一个子集。即使你拥有所有的上下文,如何在提示中组装它仍然至关重要。区别在于,你不仅仅是在设计一个与单一输入数据有效的提示,而是要处理一组动态数据并将其正确格式化。
上下文的一个关键部分通常是关于 LLM 应该如何表现的核心指令。这通常也是提示工程的一个重要部分。
好的上下文工程应该包括:
原文链接:
https://blog.langchain.com/the-rise-of-context-engineering/
文章来自于微信公众号“机器之心”。
【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。
项目地址:https://github.com/browser-use/browser-use
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0