大语言模型(LLM),如ChatGPT、Gemini和Claude,已经成为AI领域的核心驱动力。然而,这些模型的能力并非与生俱来,其效能很大程度上取决于输入指令的有效性。仅仅拥有优秀的提示词(Prompt)是不够的,更重要的是提供正确的上下文信息。上下文工程应运而生,它决定了我们如何构建和优化支持性信息,从而引导模型高效完成任务。本文将深入探讨上下文工程的概念、重要性以及最佳实践,助您在构建基于大模型的应用时游刃有余。

什么是上下文工程?超越Prompt的AI赋能

Prompt,即提示词,负责告诉LLM需要执行的任务。而上下文则提供了完成任务所需的背景信息。可以将其理解为:Prompt是指令,而上下文是完成指令的原料和工具。

上下文工程是一种设计和优化支持性信息的实践,它包括决定哪些信息应该包含,如何格式化这些信息,以及如何将这些信息传递给模型,传递方式包括Prompt直接输入、检索、内存、工具调用等。

举例来说,假设我们希望LLM分析客户支持工单数据,并总结2025年第二季度客户面临的前三大问题,并提出可行的解决方案。以下是一个缺乏上下文的Prompt:

“分析我们的客户支持工单数据,并总结2025年第二季度客户面临的前三大问题。 建议可行的解决方案,以减少未来的工单量。”

虽然这个Prompt是有效的,但它缺乏上下文。LLM需要以下信息才能有效地执行任务:

  • 数据源:来自支持工单的实际或样本数据(CSV/JSON或粘贴的表格),包含诸如ticket_id、timestamp、issue_category、description、resolution_time、customer_segment等字段。
  • 时间范围:确认分析周期——在本例中为2025年第二季度(4月1日至6月30日)。
  • 期望的输出风格:要点、执行摘要还是表格格式?
  • 业务目标:目标是减少工单量、缩短响应时间还是识别产品问题?

通过向初始Prompt添加上下文,我们可以为LLM提供更清晰的指导。以下是一个改进后的Prompt,包含了必要的上下文

“以下是来自优质客户的2025年第二季度(4月至6月)的支持工单数据。 每个条目都包含问题类别和描述。 请:(1)确定前3个经常出现的问题;(2)总结其根本原因;(3)建议有针对性的措施以在第三季度预防这些问题。 输出应以要点形式呈现,并使用可供管理层使用的可操作语言。”(数据粘贴在下方或上传CSV文件)

这是一个上下文感知的Prompt,也是良好上下文工程的产物。

上下文窗口:LLM的“记忆”空间

大语言模型(LLM)的上下文窗口是指模型一次可以“看到”或处理的最大文本量(输入+输出)。这包括:

  • 你的Prompt
  • 你提供的任何上下文(文档、示例、之前的消息)
  • 模型自己的回应

简而言之,上下文窗口定义了LLM在生成输出时可以考虑的信息范围。上下文窗口越大,模型就能够处理更复杂、更长篇幅的任务,并更好地理解问题的细微差别。

上下文窗口中包含的内容取决于你的用例,可能包括:

  • Prompt指令
  • 任务相关数据(文档、表格、代码)
  • 先前的聊天记录
  • 工具或API输出
  • 通过RAG(检索增强生成)检索的文档
  • 应用状态

现代LLM支持大型上下文窗口。 GPT-3.5的上下文窗口为4,096个token,GPT-4的上下文窗口为8,192-128,000个token,Claude 3 Opus的上下文窗口为200,000个token,而Gemini 1.5 Pro的上下文窗口为100万个token。这意味着模型可以处理相当复杂的任务。

然而,上下文窗口是有限的,而且更长的输入成本更高。因此,仔细选择输入的内容至关重要。 例如,在处理法律文件时,将所有相关法律条文和案例摘要放入上下文窗口,可以帮助模型更准确地分析文件并提供法律建议。

上下文工程的重要性:保障AI输出的准确性和行为的可控性

LLM本质上是随机的——它们的输出取决于它们收到的确切输入。 如果你想要准确、相关和有用的响应,你需要:

  • 设置正确的角色(例如,“充当产品经理……”)
  • 提供明确的说明和约束
  • 包含示例、支持数据或先前的对话
  • 通过RAG(检索增强生成)检索相关文档或结果
  • 传入应用程序状态、API响应或工具输出

上下文工程在构建由LLM驱动的AI代理、聊天机器人、副驾驶或应用程序时变得至关重要。 如果没有适当的上下文,LLM可能会产生不准确、不相关甚至有害的输出。

举例说明:一个医疗诊断AI,如果缺乏患者的病史、症状描述、体检结果等上下文信息,就可能做出错误的判断,导致误诊或漏诊。 因此,上下文工程在医疗、金融等高风险领域尤为重要。

上下文工程的最佳实践:打造卓越AI应用

以下是一些上下文工程的最佳实践,可帮助你构建卓越的AI应用:

  1. 设计清晰、具体的Prompt: Prompt是与LLM沟通的桥梁。一个清晰、具体的Prompt能够引导模型朝着正确的方向前进。Prompt应该简洁明了,避免使用含糊不清的术语,并明确模型的期望行为。

    • 设置AI的角色
    • 指定输出格式
    • 提供所需数据或参考示例

    例如,不要仅仅说“写一篇关于气候变化的文章”,而是应该说“以科学记者的身份,用简洁明了的语言写一篇关于气候变化对全球粮食生产影响的文章,字数控制在500字以内,并引用至少三篇学术论文。”

  2. 利用LLM辅助构建上下文: LLM本身也可以成为上下文工程的助手。

    • 询问模型它需要哪些信息
    • 让它生成中间推理步骤

    例如,在处理一个复杂的文本摘要任务时,可以先询问LLM“为了生成高质量的摘要,你需要了解哪些关键信息?”,然后根据LLM的回答,补充相应的上下文信息。

  3. 自动化上下文组装: 对于复杂的任务,自动化上下文组装可以显著提高效率。

    • 指定模型应如何检索数据、使用工具或组合中间结果

    例如,在构建一个客户支持聊天机器人时,可以设置自动化流程,根据客户的问题,从知识库中检索相关的文档和FAQ,并将其作为上下文信息传递给LLM。

  4. 控制数据来源: 确保模型仅使用真实且经过验证的信息。

    • 避免使用来源不明或未经证实的数据

    例如,在构建一个新闻摘要应用时,应该只使用来自信誉良好的新闻机构的数据,并对数据进行验证,以避免传播虚假信息。

  5. 验证模型操作:

    • 分解工作流程并在每个步骤确认输出,端到端测试系统。

    在构建一个代码生成工具时,应该对生成的代码进行严格的测试,确保其能够正确运行,并满足需求。

上下文工程案例分析:RAG在知识问答领域的应用

RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索与文本生成相结合的技术,是上下文工程的重要应用。在知识问答领域,RAG可以显著提升LLM的性能。

传统的LLM在回答问题时,依赖于其训练数据中包含的信息。如果问题涉及LLM未曾见过的知识,或者需要最新的信息,LLM往往无法给出准确的答案。

RAG通过以下步骤解决这个问题:

  1. 检索相关文档: 当用户提出问题时,RAG系统首先会使用信息检索技术(例如,向量搜索)从知识库中检索与问题相关的文档。
  2. 增强Prompt: 将检索到的文档作为上下文信息添加到Prompt中,从而为LLM提供更全面的信息。
  3. 生成答案: LLM根据增强后的Prompt生成答案。

通过这种方式,RAG能够利用外部知识库来弥补LLM自身的不足,从而提高答案的准确性和相关性。

例如,当用户询问“最新的新冠疫苗有哪些副作用?”时,RAG系统可以从最新的医学文献和官方报告中检索相关信息,并将这些信息作为上下文传递给LLM,从而生成包含最新信息的答案。

上下文工程的未来趋势:持续进化,赋能更智能的AI

上下文工程是一个不断发展的领域。随着LLM技术的不断进步,上下文工程也在不断进化。

未来的上下文工程将更加注重以下几个方面:

  • 自动化上下文优化: 利用AI技术自动优化上下文,例如,自动选择最佳的检索策略、自动调整上下文窗口的大小等。
  • 多模态上下文: 将图像、音频、视频等多模态数据纳入上下文,从而增强LLM对复杂场景的理解能力。
  • 个性化上下文: 根据用户的个性化需求,定制上下文,从而提供更精准的服务。

随着上下文工程的不断发展,我们将能够构建更加智能、更加强大的AI应用,为人类带来更大的价值。

总结:精雕细琢,成就AI卓越

上下文工程是驾驭大模型,成就卓越AI应用的关键。它超越了简单的Prompt设计,强调了背景信息的重要性,并提供了一系列最佳实践来优化AI模型的性能。理解上下文窗口的限制,并通过精心设计的上下文信息来指导LLM,能够显著提高AI输出的准确性和相关性。

从设计清晰的Prompt,到利用LLM辅助构建上下文,再到自动化上下文组装和控制数据来源,每一步都至关重要。通过RAG等技术,我们可以将外部知识融入LLM,从而构建更强大的知识问答系统。

总之,上下文工程是一门精雕细琢的艺术,需要我们不断学习和实践。只有掌握了这门艺术,才能真正释放大模型的潜力,构建出能够解决实际问题,创造商业价值的AI应用。