大话大模型应用(二)--让大模型听话:Prompt Engineering&Context Engineering

随着大模型的普及,AI也渐渐走进人们的日常生活中。相信朋友们都有使用AI解决问题的经历,但是你是否也遇到过这种情况:同样是用ChatGPT,有人能让它像专业顾问一样输出清晰报告,而你却只能得到一堆模糊的回答?很多人第一次用ChatGPT都以为它全能,但当你真正想让它帮你写方案、分析数据时,结果往往不尽如人意。实际上,差距往往不在AI本身,而在你给出的"提示词"。这正是提示词工程要解决的核心问题------如何把模糊的想法,翻译成AI能真正理解并执行的指令。

上篇文章中,我们引出并介绍了AI Agent的概念,理论上,AI Agent可以"自主决策,执行任务"。但在实践中,很多Agent会显现出一种现象--聪明但不听话。在复杂的workflow中,不是理解错目标,就是执行错方向。其根本原因之一,就是Agent的背后的模型需要**"提示词"** 来理解任务。如果提示词设计得不好,智能体的能力就会被严重限制。实际上,提示词工程RAG (检索增强生成),FT(模型微调)是三种非常关键的模型优化手段,各自具备不同的特点,但提示词工程无需在模型参数层面进行调整,成本最低也相对简单。

通过这些现象,相信朋友们也能够意识到合理设计提示词的关键性了。提示词是工具,而提示词工程则是一种合理利用工具的方法论。那么今天我们就来了解一下提示词工程的相关知识~

一.与AI沟通的艺术--提示词工程

提示词(Prompt)的概念很简单,就是用户在使用大模型时向其提供的输入,引导模型生成特定格式或特定类型的输出。提示词的形式是多样的,可能是一个问题,若干关键词,还有可能是上下文信息。提示词本质上仍属于自然语言(NL)的范畴。

在实践中,精良的提示词一般包含以下要素。实际上,并不是所有设计精良的提示词都必须具备下面的要素,我们应依照具体问题具体分析,不过下面这些要素是我们进行提示词优化需要考虑的Point.我们以"假如你(大模型)是一个系统架构师,给你(大模型)一篇后端技术文档(Word),帮我概括出里面技术选型的要点,并总结成表格"的示例向大家进行介绍。

·指示与案例:用户让大模型做的事情,以及一些案例提示(让模型学习),在示例中是"帮我概括出里面技术选型的要点"。

·上下文:主要是外部信息和背景,在示例中是"假如你是一个系统架构师"。

·输入数据:用户向大模型提供的输入,在示例中是"后端技术文档"。

·输出提示(规范):用户提出的对模型输出的期望或规范,在示例中是"总结成表格"。

这四个要素就是提示词的组成维度, 属于结构层 的概念。这四个维度决定了AI要做什么,基于什么,输入是什么,输出长什么样。常见的提示词工程分为直接提示,链式提示,生成类提示,图谱提示,集成式提示。接下来我将分别对这五类提示词工程进行介绍:

第一种方式是直接提示 --最基础且直观的方式。给模型一句明确、简洁的任务指令,不拆解任务一步到位。所以我们需要明确指令输入输出格式 ,而且给出必要的上下文。这种方式适合任务结构简单、目标明确、逻辑路径不复杂的场景。

其次是链式提示 ,本质上是对任务进行了拆解,可以看作"多轮提示+中间加工 "。其关注LLM内部逻辑,比如说思维链,多模态思维链,思维树等。并会始终关注过程中的逻辑自洽,并进行反思(reflexion)。关键就在于**将任务合理拆解为多个可执行的子任务,**每一步提示明确其输入是什么、期望输出是什么,且输出要可作为下一步的输入。这种方式适合任务较为复杂、需要中间结果校验或多步逻辑的情况。

在直接提示中,我们给模型的指令一般是让模型完成一个十分具体的任务,如果约束十分严格,模型并没有太多自由发挥的空间。在生成类提示 中,任务更多的是"让模型自由生成 "或者"让模型帮我们生成结构/内容/知识",而不仅仅是简单完成一个指令。其任务边界较宽,适合创造性的任务。

接下来是图谱提示 。其和链式提示方式非常相似,也非常关注LLM的内部逻辑。其在提示词设计中引入"知识图谱 "或"关系网络 "结构,使模型基于结构化知识或图谱关系进行推理或生成为主。知识图谱( KG)是一种用"节点 + 关系"来表达世界知识的结构化表示方式,常见形式是个三元组,比如说**(马斯克,创立,特斯拉)**。这样机器就能以"图"的形式来理解世界,而不只是文字。这种提示方法的关键就是明确知识图谱的结构,节点之间的关系。这种方式适合需要结构化知识、复杂推理、关系分析的场景。

最后一种提示方式是集成式提示 。其核心特征是让多个提示协同工作,而不是单一提示一次性完成任务。一种方式是让LLM与通过外部资源进行交互,解决较为复杂的问题,比如通过RAG,Function Calling等。还有一种是组合前面我们提到的几种提示方式,从而得到更稳健、更高质量的输出。

实际上,我曾经陷入过一个误区,粗浅地认为提示词工程只停留在用户层面,由用户来根据自己的需求不断地组织语言供大模型理解,不关开发者的事。但实际上在AI Agent开发中,这样的想法就大错特错了。在AI Agent开发中,模型的"人格"和"行为"是不稳定的,就像一个没有固定工作职责的闲散人员。而用户的输入往往是动态并与任务强相关的,这样可能会导致模型的输出逻辑,风格,语气都不相同。而且假如给模型输入一些不法操作,假如模型在系统层面没有约束而去真的照做,那安全隐患不言而喻。在实际AI Agent开发中,提示词不仅由结构决定,还需考虑其在系统中的"角色"。于是我们引入用户提示词系统提示词 的概念,属于角色层 的概念。系统提示词一般由Agent应用开发工程师编写,在系统层面进行约束,告诉大模型"你是一个什么样的人";而用户提示词旨在告诉模型"你需要做的事情"。假如没有系统提示词,那么AI Agent就像一个不熟悉业务的实习生,确实能够完成简单的工作,但是无法保证稳定和安全。实际上,用户提示词和系统提示词在功能上是等价的 。系统提示词存在的意义并不是"提供额外能力",而是解耦上下文职责。从另一层面来讲,系统提示词的存在也加强了AI应用的易用性,降低了用户提示词的编写难度,提升了用户的使用体验。

在工程实践中,如LangChain,Eino等框架提供了提示词模板 。提示词模板并非模型的原生特性,而是由框架提供的。其规范提示结构,支持变量替换将用户提示词与系统提示词进行整合 ,抽象出提示工程逻辑方便复用。让提示词工程真正进入模块化,可维护的阶段。提示词模板功能由其 Prompt 组件(位于 eino/components/prompt 包)提供,核心接口是**ChatTemplate** 。这个接口定义了一个 Format(ctx context.Context, vs map[string]any, opts ...Option) ([]*schema.Message, error) 方法,用于将变量注入模板、构造最终的消息列表 。Eino 内置三种模板格式内置三种模板化方式:FString (python的字符串格式化方式),GoTemplate (go语言的模板方式),Jinja2(适用于更复杂的场景)。这里我给出一个小demo朋友们可以进行参考。

Go 复制代码
template := prompt.FromMessages(
		schema.FString,
		schema.SystemMessage("你是一个{role},你的任务是{task},请参考之前对话历史回答问题"),
		schema.MessagesPlaceholder("history", false),
		schema.UserMessage("{question}"),
	)

相信通过上面的介绍,朋友们对提示词工程在结构层和角色层上建立了基本的认知。那么接下来的话题可能是非技术类同学们比较感兴趣的,那就是优化提示词的策略 。首先是零/一/少样本提示(Zero-/One-/Few-Shot) ,这实际上是一种"样本驱动 "的策略,在提示里放入 0、1 或若干对「输入→输出」示例,帮助模型学会我们需要的任务模式。当任务规则不复杂但需要模型模仿特定格式或风格时,使用这种策略是很合适的。第二种策略是思维链(COT), 让模型在给出结论前显式写出中间推理步骤(思考过程)。一般我们需要在系统提示词或示例中给出**"演示性"CoT** (few-shot CoT),示范如何拆步,对复杂任务,限制单步长度避免"跳跃式"推理。第三种方式是自一致(self-consistency) ,不是让模型只输出一次,而是多次独立生成思维链/结论,然后对所有候选取"众数"或通过投票/打分选出最稳健答案 。在多次采样时用temperaturetop-k 控制生成多样性,当任务具有多种解法或模型单次输出不稳定(例如复杂推理、开放式问答)时适合采用这个策略。最后一种方式是反思提示(Reflexion),由模型先生成初稿,然后对初稿进行审查、修正或补充,尤其在追求严谨性输出的场景下非常适用。

2024年后,OpenAI-o1的诞生,宣告了在传统大语言模型的基础上,衍生出推理模型 。其在生成内容之前,先会在内部形成思维链(COT) ,进行显式或隐式的推理,然后根据推理内容进行回答。其重点并非"语言生成",而是"逻辑推演 + 结构化思考 "。推理模型的兴起,也对提示词工程有潜移默化的影响,提示词工程的重点逐渐从**"教它怎么回答"** ,到让模型**"知道要推理什么"** 。推理模型能主动规划步骤,但如果提示词没有明确边界,它可能"过度推理"或走偏。所以提示词工程需要指定思维边界,提供结构模板 。推理模型需要记住之前的推理链、理解问题的语境、动态整合外部知识,也就是说其强依赖上下文,那我们该如何管理和优化这些上下文呢?于是一个新的工程概念被引出了--上下文工程(Context Engineering)

二.与AI共创的环境设计--上下文工程

在早期的对话系统中,我们总是强调"如何写好提示词"。指令要明确、角色要清晰、输入要完整等,这些方面的要点我们在前文已经介绍过了。但当我们进入推理模型时代,一个新的问题出现了:模型的表现不再仅仅取决于单条提示,而取决于它所拥有的上下文 。换句话说,AI 不只是根据一句话回答问题,而是根据"它眼中看到的世界"来思考。而这个"世界"------正是由上下文工程 设计出来的。提示词教会模型"该如何思考",而上下文工程则让它"有条件地思考"。 提示词工程解决的是语言如何表达意图 的问题,而上下文工程解决的是知识如何被组织与理解 的问题。上下文工程,简单来说,就是如何让模型在合适的语境中工作。它关注的不只是提示词,而是整个输入环境的构建与管理。Andrej Karpathy认为LLM就像一个新型操作系统,LLM如同CPU,其上下文窗口如同RAM,作为模型的工作内存。正如操作系统管理RAM一样,我们可以将"上下文工程"视为扮演类似的角色。

在一次 AI 交互中,"上下文"可能包括:用户的历史对话与意图,当前任务目标与约束,外部知识库或工具信息,系统角色设定与推理历史等。上下文决定了模型能"看到什么";提示词决定了模型"要做什么"。因此,上下文工程是提示词工程的延伸与升维------从单点指令,走向语境编排。

首先,对于上下文管理而言,输入的内容是一门大学问。模型需要的信息越准确、越相关,它的输出就越可靠。这就要求我们对上下文进行筛选与压缩 ,例如利用向量检索(embedding) 找到最相关的知识片段,或者在多轮对话中保留关键事实、丢弃无关细节。其次,随着推理模型具备多轮思考与反思能力,上下文不再是静态的。它像记忆一样,需要被动态更新。上下文工程的任务之一,就是设计模型的"记忆策略":哪些内容要被长期保留?哪些只在当前任务有效?这又会涉及到 memory、state management、甚至外部数据库(如向量存储)的使用。

上下文工程作为一个新兴的工程概念,同样也存在很多挑战。首先是上下文的窗口限制

即使模型支持 128K tokens,也无法无限制地加载信息。如何取舍、抽象和压缩,是核心问题。其次是语义一致性 :不同来源的上下文信息往往存在冲突。模型需要一种"语境优先级"来判断谁更可信。最后是动态管理:随着推理任务进展,上下文应能实时更新------这正是 Agent 框架中"Memory 模块"的核心功能。

结语

无论是提示词工程 还是上下文工程 ,它们的核心目标都是让人工智能"更好地理解人类的意图"。前者教会模型如何被指令驱动 ,后者让模型在合适的语境中思考。提示词是显性的沟通方式,而上下文是隐性的语义土壤------两者相辅相成,缺一不可。随着推理模型、智能体(AI Agent)和多模态系统的发展,提示词工程正在从"编写指令的技巧"转向"语境设计的系统工程"。未来,我们作为 AI 应用开发者,不仅需要会写出精准的 Prompt,更需要有构建出丰富、有层次的 Context的能力,让模型思考的不只是词句,而是世界本身。有不当之处还请多多批评指正,我们一起成长!

相关推荐
JJJJ_iii2 小时前
【机器学习16】连续状态空间、深度Q网络DQN、经验回放、探索与利用
人工智能·笔记·python·机器学习·强化学习
leafff1232 小时前
AI研究:大语言模型(LLMs)需要怎样的硬件算力
大数据·人工智能·语言模型
Wu Liuqi2 小时前
【大模型学习】第一章:自然语言处理(NLP)核心概念
人工智能·学习·自然语言处理·大模型·大模型转行
新智元2 小时前
全球十大AI杀入美股!最新战况曝光,第一名太意外
人工智能·openai
新智元2 小时前
ICML 2026史上最严新规:LLM不得列为作者,滥用AI直接退稿
人工智能·openai
后端小肥肠2 小时前
10W+育儿漫画是怎么做的?我用n8n搭建了自动化工作流,3分钟生成到本地磁盘
人工智能·aigc·agent
钛投标免费AI标书工具3 小时前
【官方认证】2025年AI标书工具:免费、零废标、安全
大数据·人工智能·安全
盼小辉丶3 小时前
视觉Transformer实战——Vision Transformer(ViT)详解与实现
人工智能·深度学习·transformer
爱思德学术3 小时前
第二届中欧科学家论坛暨第七届人工智能与先进制造国际会议(AIAM 2025)在德国海德堡成功举办
人工智能·算法·机器学习·语言模型