随着生成式 AI 在各行各业的深入应用,Prompt(提示词)工程成为连接人类意图与 AI 模型产出之间的桥梁。SpringAI 作为 Spring 生态下的 AI 集成框架,提供了强大的 Prompt 管理与工程能力,极大提升了开发者与 AI 模型的交互效率和质量。

概述

随着 OpenAI 等公司推动 AI 模型能力跃升,Prompt 工程成为 AI 开发的核心环节。SpringAI 项目由 Spring 团队发起,旨在让 Java 开发者以最熟悉的方式集成和管理 AI 模型。SpringAIPrompt 系统借鉴了 Spring MVC 的视图渲染、JDBC 的数据访问理念,实现了模板化、结构化、可扩展的 Prompt 管理。

什么是提示词工程

简单的来说,提示词工程就是输入给 AI 的指令。

比如下边这段内容,就是提示词:

请问如何学算法?

提示词工程,就是设计和优化你给 AI指令问题(也就是提示词),让 AI 能更好地理解你的意图,并输出更准确、有用、符合你期望的结果的艺术和技巧。

工程之所以叫工程,说明不是随便问一句那么简单,而是需要动脑筋、有方法、不断尝试和优化,就像工程师设计一个系统一样。提示词就是你输入给 AI 的那段文字。

提示词工程能做什么

  1. 精准引导模型输出: 模糊的指令导致随机结果,精准的提示词能明确任务目标,确保模型生成符合用户真实需求的内容。
  2. 控制输出质量和特性: 通过提示词可指定所需的风格、语气、格式、结构、内容深度和范围,确保输出满足特定标准(如专业、简洁、无偏见)。
  3. 释放模型最大潜力: 好的提示词能有效调用模型内嵌的海量知识和强大能力(如推理、创意),将其转化为实际价值,避免模型能力浪费。
  4. 克服模型固有缺陷: 精心设计的提示词有助于减少模型“幻觉”(编造信息)、处理知识过时问题,并澄清指令中的歧义。
  5. 提升效率和降低成本: 优秀的提示词减少生成错误结果的迭代次数,节省时间和计算资源(尤其对按量计费的 API),并可能自动化复杂流程。
  6. 实现任务定制化和专业化: 提示词能将模型定制为特定角色(如律师、客服),融入领域知识(如医疗、编程),满足高度专业化或个性化任务需求。

发展历史

Prompt 的发展历史可以概括为从一个普通英语单词演变为人工智能时代核心概念的历程,其演变与大模型技术的进步紧密相连。

Prompt 一词源自拉丁语 promptus,意为在前面的领先的,在现代英语中常表示及时的迅速的催促的

随着大模型技术的发展,Prompt 的含义发生了根本性转变,其发展主要经历了以下几个阶段:

  • 萌芽阶段(2020年以前)‌:早期的研究发现,通过在输入中嵌入任务描述,可以影响模型的输出,但当时模型的能力有限,效果并不显著。‌
  • 飞跃起点(2020年)‌:GPT-3 模型的发布是一个重要里程碑。其论文《Language Models are Few-Shot Learners》展示了通过精心设计提示词,模型能够在零样本或小样本学习场景下解决多种自然语言处理任务,这标志着 Prompt 真正成为一种通用技能。
  • 走向系统化(2021-2022年)‌:研究者开始探索更系统的提示工程方法。例如,2021年提出了 P-Tuning 方法,用可训练的连续向量提示来调优模型。同时,2022年谷歌提出的“链式思维(Chain-of-Thought)”提示技术,通过引导模型输出推理步骤,显著提升了其解决复杂推理问题的能力。‌
  • 普及与成熟(2022年底至今)‌:ChatGPT 等对话式大模型的推出,将提示工程推向大众视野。Prompt 从一种研究技巧演变为构建 AI 应用的关键实践。近年来,Prompt 技术继续向更复杂的架构演进,例如从单个 Prompt 发展到以固定流程串联模型与工具的 ‌Chain‌ 阶段,再到让模型自主规划、调用工具的 ‌Agent‌ 阶段,以及处理复杂任务的 ‌Multi-Agent‌ 协作阶段。‌

分类

AI ؜对话中,基于角色的⁠分类是最常见的,通‏常存在3种主要‌类型的 Promp‏t

  • 用户 Prompt

    这是用户向 AI 提供的实际问题、指令或信息,传达了用户的直接需求。

    用户:帮我书写一个九九乘法表的代码。
  • 系统 Prompt

    这是设置 AI 模型行为规则和角色定位的隐藏指令,用户通常不能直接看到。

    系统:你是一位经验丰富的软件工程师,擅长分析代码问题并提供建设性建议。
    回答时保持专业性,但避免使用过于学术的术语,确保新手能够理解你的建议。
  • 助手 Prompt

    这是 AI 模型的响应内容。在多轮对话中,之前的助手回复也会成为当前上下文的一部分,影响后续对话的理解和生成。

    系统:你是编程导航的专业编程导师,擅长引导初学者入门编程并制定学习路径。
    
    使用友好鼓励的语气,解释复杂概念时要通俗易懂,适当使用比喻让新手理解,避免过于晦涩的技术术语。
    
    用户:我完全没有编程基础,想学习编程开发,但不知道从何开始,能给我一些建议吗?
    
    助手:欢迎加入编程的世界!作为编程小白,建议你可以按照以下步骤开始学习之旅...
    
    【多轮对话继续】

使用

SpringAI 中如何使用提示词呢?

简单提示词使用

最简单的设置固定系统提示词和用户提示词的用法如下:

return zhiPuChatClient
        .prompt()
        .system("你是一名陕西文理大学的一名大三学生,请以风趣幽默的方式回答问题") // 设置系统提示词
        .user(question) // 设置用户提示词
        .stream().content();

其中,系统提示词也可以设置为全局的,这样在每次调用时就不用单独设置了。

ChatClient.builder(zhiPuAiChatModel)
        .defaultSystem("你是一名陕西文理大学的一名大三学生,请以风趣幽默的方式回答问题")
        .build();

动态提示词使用

所谓的动态提示词指的是需要进行动态参数替换的提示词,它的基本使用如下:

PromptTemplate promptTemplate =
        new PromptTemplate("你是一个{role},讲一个关于{question}的故事");
Prompt prompt = promptTemplate.create(Map.of("role", "讲故事的助手",
        "question", question));
return zhiPuChatClient
        .prompt(prompt)
            .user(question) 
        .stream().content();

这里的 user(question) 是可选项。

传参数还有另一种写法:

List
<String> list = List.of("你是一名陕西文理大学的大三学生", "是请以风趣幽默方式回答问题", "回答时可以加入一些宝鸡当地的方言");
String content = """
        请根据以下上下文进行回答:
        {content}
        用户的问题是:
        {question}
        """;
PromptTemplate promptTemplate =
        new PromptTemplate(content);
promptTemplate.add("content", list.stream().collect(Collectors.joining("\n")));
promptTemplate.add("question", question);
Prompt prompt = promptTemplate.create();
return zhiPuChatClient
        .prompt(prompt)
        .user(question) //可以添加,可以省略
        .stream().content();

从文件中读取动态提示词

动态提示词如果比较短,我们可以像上面一样写到代码里面,如果比较长,我们可以把它单独放的某个文件模版中进行读取使用,具体实现如下:

@Value("classpath:first-prompt.txt")
private Resource txtPrompt;

PromptTemplate promptTemplate = new PromptTemplate(txtPrompt);
Prompt prompt = promptTemplate.create();
return zhiPuChatClient
        .prompt(prompt) 
        .stream().content();

注意:这里把提示词和问题都写到文件中了,所以省略了 user(question) 内容。如果提示词和问题拆开写,需要引入 user(question) 描述问题,prompt(prompt) 中只书写提示词。

Lambda 表达式提示词

当提示词比较短的时候,除了可以使用 PromptTemplate 设置提示词之外,我们还可以使用 Lambda 表达式来实现动态提示词的设置,具体使用如下:

String str = """
        请按照以下上下文回答问题:
        {content}
        问题:
        {question}
        """;

return zhiPuChatClient
        .prompt()
        .user(s -> s.text(str).param("content", "你是一名陕西文理大学大三学生").param("question", question))
        .stream().content();

提示词是用户和大模型交互的直接手段,所以在程序中用好提示词是至关重要的。

优化

Prompt 是你输入给大模型的文本信息,用于明确地告诉模型你想要解决的问题或完成的任务,也是大语言模型理解用户需求并生成相关、准确回答或内容的基础。 为了帮助你更高效地使用 LLM ,下来我们来讲解一系列实用的技巧,帮助你设计和优化 Prompt

设计 Prompt

构建清晰明确的 Prompt

想象一下,如果您在给一个同事指派工作任务时,只给了一句话来描述需求,他的任务完成效果可能很难达到您的预期。但如果您提供了明确的目的、建议的思考方向和执行策略等更多参考信息,他更有可能以高标准完成任务。

使用 LLM 也一样,您的任务描述(Prompt)越清晰、具体、没有歧义,LLM 的表现越能符合您的期望。

模糊的 Prompt 清晰具体的 Prompt
我想推广公司的新产品。我的公司名为阿里云百炼,新产品名为 Zephyr Z9,是一款轻薄便携的手机。帮我创建一条微博帖子。 请为我司“阿里云百炼”最新推出的“Zephyr Z9”轻薄便携手机设计一条吸引眼球的微博推广帖。内容需彰显Zephyr Z9的独特卖点,如极致轻薄设计、高性能配置及用户便利性,同时融入创意元素以提升观众兴趣和互动意愿。记得提及阿里云百炼品牌声誉,激发受众好奇心,引导他们探索更多产品信息或直接进行购买。贴文应简洁有力,符合微博平台的风格与字数限制,适宜社交媒体传播。
你是一位资深PHP编程专家,现在接到一个明确的开发任务。诉求是:${require}。请使用PHP语言详细描述一种实现该诉求的算法或方法,并考虑在实现过程中可能遇到的边界情况和错误处理,以及如何通过高效且安全的代码来满足此需求。 作为一位经验丰富的PHP编程专家,您面临的具体开发任务为:${require}。请运用您的专业知识,详细阐述一种利用PHP实现该任务需求的高效算法或方法论。在您的描述中,请务必涵盖以下几点:- 具体实现步骤,包括必要的函数、类及数据结构的选择与设计。- 边界条件分析,识别并解释潜在的边缘案例及如何妥善处理这些情况。- 错误处理机制,描述如何在代码中实施健壮的错误检测与异常处理逻辑,以确保程序稳定性。- 安全性考量,讨论可能的安全威胁及推荐的防范措施,确保代码执行过程中的数据安全与隐私保护。- 性能优化建议,提出提高代码执行效率的方法,包括但不限于算法优化、资源管理和缓存策略。请确保您的解答不仅技术准确,而且条理清晰、易于理解,以便其他开发者能够快速掌握并应用于实际项目中。

使用 Prompt 框架

为了系统化地向 LLM 提供明确背景和目的,这里推荐您使用 Prompt 框架规范化您的 Prompt。该框架用于帮助您方便、快速地设计 Prompt 结构。该模板充分考虑了会影响 LLM 输出有效性和相关性的各个方面,能显著提升模型表现。

20260701170732

其内容组成为:

  • 背景:介绍与任务紧密相关的背景信息。这一环节有助于 LLM 深入理解讨论的具体环境,从而保证其生成内容与话题高度相关。
  • 目的:明确指出您期望 LLM 完成的具体任务。通过设定清晰、精确的目标指令,可引导 LLM 聚焦于实现既定任务,提升输出的有效性。
  • 风格:指定您希望 LLM 输出的写作风格,可以是某个具体名人、具体流派或者某类专家的写作风格。
  • 语气:定义输出内容应有的语气,比如正式、诙谐、温馨、关怀等,以便适应不同的使用场景和使用目的。
  • 受众:明确指出内容面向的读者群体,无论是专业人士、入门学习者还是儿童等,这样 LLM 就能调整语言和内容深度,使之更加贴合受众需求。
  • 输出:规定输出内容的具体形式,确保 LLM 提供的成果能直接满足后续应用的需求,比如列表、JSON 数据格式、专业分析报告等形式。
未使用 Prompt 框架 使用 Prompt 框架
Prompt 我想推广公司的新产品。我的公司名为阿里云百炼,新产品名为 Zephyr Z9,是一款轻薄便携的手机。帮我创建一条微博帖子,简洁而深具影响力。 #背景#
我想为公司的新产品做广告。我公司的名字叫阿里云百炼,产品叫阿里云百炼 Zephyr Z9,是一款轻薄便携的手机。
#目的#
为我创建一个微博帖子(限制:500字),旨在让人们有兴趣点击产品链接购买。
#风格#
遵循黑米等成功公司为类似产品做广告的写作风格。
#语气#
有说服力
#受众#
我公司在微博上的受众通常是年轻一辈人。定制你的帖子,保证喜欢数码产品的人能快速关注到你的帖子。
#输出#
微博上的帖子,简洁而有影响力。
输出 【轻启未来,风起云涌】image阿里云百炼新品,Zephyr Z9震撼上市!imageimage携手Zephyr Z9,让科技与轻盈同行。这不仅是一部手机,它是你探索世界的轻便伴侣。厚度挑战极限,设计引领风尚,Z9在手中,灵感随时迸发。image超越想象的性能,搭载极速处理器,流畅如风,无论是工作狂飙还是游戏征途,Zephyr Z9都是你的首选座驾。续航强劲,让每一份热情持续燃烧!image捕捉生活每一刻,Z9相机创新升级,夜景、人像、广角,每一拍都是封面大片,让美好记忆永不褪色。Trees 轻薄,重在体验。#百炼ZephyrZ9# ,为不凡而生,为你而来。立即拥抱未来,开启属于你的轻盈科技时代!官方网站:[www.bailian.com/Z9] (请替换为实际网址)#轻薄旗舰 #科技新风尚 #掌中艺术品 image【独家揭秘】阿里云百炼Zephyr Z9,轻薄界的颠覆者来了!在这个快节奏的时代,每克重量都是对自由的负担。百炼深谙此道,匠心打造了Zephyr Z9——一款专为追求极致轻盈与强大性能平衡的你而生的手机!悬浮般的手感,一触难忘!image
image【超薄设计,尽在掌握】Zephyr Z9以其令人惊叹的纤薄机身,重新定义了“轻薄”。仅X.Xmm的厚度,轻松滑入口袋,是你日常出行的完美伴侣。携带它,就像带着未来穿梭于都市丛林!image
image【顶尖配置,性能怪兽】别看它轻,内核全是硬实力!搭载最新的XXXX处理器,流畅度爆表,无论是多任务处理还是大型游戏,Z9都能游刃有余,让你时刻处于科技最前沿。imageimage【摄影大师,记录生活】配备XXMP超感光镜头,夜晚也清晰。AI智能场景识别,让每一张照片都堪比大片。用Zephyr Z9,记录每一个不凡瞬间,让你的朋友圈从此与众不同。imageimage【续航无忧,能量满满】小身材,大能量!Zephyr Z9内置高效能电池,搭配XXX快充技术,片刻充电,长久陪伴。告别电量焦虑,你的创意和灵感不再受限。⚡
image【限时福利,不容错过】前100名通过链接购机的用户,将享受神秘大礼包!包含定制保护壳、XXX会员年卡等多重好礼,只为尊贵的你!image立刻行动,让百炼Zephyr Z9成为你探索世界的全新伙伴!点击下方链接,开启轻盈新纪元!image
image[立即抢购百炼Zephyr Z9] [产品链接]
#百炼ZephyrZ9 #轻薄旗舰 #科技美学 #数码潮流 #性能怪兽

在未使用 Prompt 框架时,LLM 输出虽表现尚可,但显得过于泛化,缺乏必要的细节和针对特定群体的吸引力。而在使用 Prompt 框架时,框架不仅提醒您考虑需求的其它方面,特别是一般 Prompt 中缺少的风格、语气和受众,还帮助 LLM 生成更针对年轻群体、细节更多、语言表达更加富有张力的输出。

优化 Prompt

技巧一:为模型提供输出样例

Prompt 中提供您期望的输出示例,可以让 LLM 模仿我们所要求的规范、格式、概念、文法、语气进行输出。同时,提供样例可以让大模型多次输出的结果更一致,从而稳定模型表现。

未添加样例 添加样例
Prompt #背景#
你很擅长编写小红书种草笔记,喜欢增加丰富的emoji元素。
#目的#
请生成一篇小红书种草笔记,推广强森吹风机。吹风机的优点是:体积小、高颜值、风力大、干的快、智能控温不伤发。
#受众#
喜欢追求时尚的年轻人,尤其是年轻女性
#输出#
小红书文章格式,充满emoji元素,简洁但内容充实
#背景#
你很擅长编写小红书种草笔记,喜欢增加丰富的emoji元素。
#目的#
请生成一篇小红书种草笔记,推广强森吹风机。吹风机的优点是:体积小、高颜值、风力大、干得快、智能控温不伤发。
#受众#
喜欢追求时尚的年轻人,尤其是年轻女性#输出#小红书文章格式,充满emoji元素,简洁但内容充实
#语气与风格#
1. 我亲测过+n种好物+谁适合谁受益 这个秘诀让你的话语超有信服力! 比如:亲自尝试了很多美白神器,终于挖到宝!仅俩月,肌肤变得嫩滑透亮,自我感觉飘飘欲仙~ 此法特为想大晒体验的小伙伴们量身定制,还能精准安利,助人避坑!
2. 难题出没+揭秘原因+终极解药 这公式助你条理清晰地分享,内容价值爆棚! 案例:渴望秀发如丝?揭秘时刻来啦!原来我一直遗漏关键一步,直到遇见它!换用这款洗发水,秀发显著改善,光泽get! 此法逻辑严密,不仅分享秘籍,还引导读者找到问题破解之道。
3. 独到见解+深度剖析+巧妙推荐 这公式帮你自然流露心声,还能温馨种草! 示例:我觉得每个女孩都该有份挚爱,生活因此而精彩。手帐成了我的小确幸,每当提笔,幸福指数飙升! 它助你畅所欲言,同时不经意间传递心头好,双赢策略!
4. 亲身经历+成果展示 这公式让你的情感表达鲜活又感人! 场景:回想起夏夜海边的蚊灾,满身红包的绝望,直到遇见救星!现在,光滑肌肤让我裙摆飞扬,自信回归! 它让你的故事活灵活现,分享喜悦与感恩之情,触动人心!
输出 标题:image强森小巧魔力风机,速干护发新宠儿image
正文:
Hey宝贝们!今天要给你们种草一颗美发界的璀璨新星image —— 强森吹风机!它不仅仅是个工具,简直是随身携带的美发沙龙image
image体积小巧,旅行必备 image
首先,它的迷你身材直接击中我心!旅行包包再满也能轻松塞进,不占空间,随时随地凹造型image
image 高颜值,时尚出街 image
看这设计,简直就是艺术品呀!无论是极简白还是高级粉,拿在手里就是街头最靓的崽!手机?不,这是我的新时尚配饰imageimage
image风力强劲,速干神器 image
别看它小,风力可一点都不含糊!早上赶时间?强森帮你5分钟搞定出门发型,效率MAX!image
image干得快,还护发 image
智能控温技术,温柔呵护你的每一根秀发。告别热损伤,只留下柔顺光泽,每次吹发都像做了次沙龙护理~image
image智能控温,细心之选 image
懂你的不只是风力,还有温度。根据发质自动调节最适宜的热量,守护秀发健康,长期使用也不怕伤发image总之,强森吹风机就是那个能让你爱不释手的小可爱!赶紧加入购物车,给你的美丽加速吧!image#强森吹风机 #美发达人 #快速护发秘籍标记你的朋友,让她们也来感受这份轻巧与高效吧!image记得,爱护自己从“头”开始,强森与你一起,绽放自信光彩!image
image吹风机也能成为美发时尚单品?强森小钢炮告诉你答案!image
image自从我用了image强森吹风机image,不仅旅行包轻便多了image,每次吹发都变成享受时光image!用了几次后,朋友们都夸我发质看起来好了不止一个度,就像刚从沙龙出来的样子image。它绝对是短途出游或宿舍生活的完美伴侣哦!适合所有追求高效护发的宝贝们~image
image面对湿漉漉的长发瀑布,每次都得耗时半小时以上?image别怕,强森智能控温科技来了image!它能迅速吹干每一根发丝,而且风力强劲却不伤发,秘密就在于它能智能调节温度,保护你的秀发不受热损伤image。从此,快速出门不再是梦!
image我一直认为,好的造型工具是美丽态度的体现image。强森这枚高颜值吹风机不单是个工具,更是梳妆台上的一件艺术品image。每次用它吹发,都像是在进行一场个人风格的仪式感升级。不妨也给自己来点这样的小奢侈,毕竟,美好的一天从头开始嘛!image
image记得那次临时接到晚宴邀请image,急匆匆从健身房出来,头发还滴着汗。正当焦虑之际,幸好有强森吹风机紧急救援!我迅速将湿润的乱发吹整得服服帖帖,走进宴会厅的那一刻,自信满满image,好像刚做完高级沙龙护理似的。多亏了这小巧却强大的美发神器,我的美丽不再受限于时间!image快来把这吹风机界的时尚小钢炮加入购物车吧!image让我们一起做个风一样的女子,优雅又效率,从头开始闪耀每一天!image
#强森吹风机 #高颜值美发神器 #智能护发新体验 #速干不伤发 #时尚必备

观察输出时,您可以发现,LLM 学习了样例的要求并针对性地生成了符合格式要求的种草文。

技巧二:设定完成任务的步骤

对于许多复杂任务,提醒 LLM 如何完成任务是非常必要的。

数学题:

又到了周日,小明像以往一样去爷爷奶奶家玩,小明于早上八点整步行出发,已知小明每分钟行走50米,走了12分钟后,小明的父亲发现小明忘记带作业了,于是便骑车去追小明,已知小明的爸爸每分钟骑行200米,等到追上小明后,爸爸决定骑车带上小明,已知小明坐自行车的路程是走路路程的5倍,请问,小明和他爸爸几点到爷爷家的呢?(小明8点36分到爷爷家)

Prompt(通过添加 #任务步骤# 告诉 LLM 如何完成任务):

#背景#
又到了周日,小明像以往一样去爷爷奶奶家玩,小明于早上八点整步行出发,已知小明每分钟行走50米,
走了12分钟后,小明的父亲发现小明忘记带作业了,于是便骑车去追小明,已知小明的爸爸每分钟骑行200米,
等到追上小明后,爸爸决定骑车带上小明,已知小明坐自行车的路程是走路路程的5倍,
#目的#
小明什么时候到爷爷家?
#任务步骤#
1. 先计算小明被爸爸追上时的时间和移动的距离。
2. 再计算小明去爷爷家剩余的距离和需要的时间。
3. 最后计算小明到爷爷家的时间。

OutputLLM 清晰地从提示词中获取到了任务步骤,并基于规定的步骤生成了正确结果):

要解答这个问题,我们首先需要根据给定的信息分步骤来解决。

步骤1: 计算小明被爸爸追上时的时间和移动的距离
小明每分钟行走50米。
爸爸出发时(即小明走了12分钟后),小明已经走了 12×50=600 米。
从这一刻起,小明继续以每分钟50米的速度前进,而爸爸则以每分钟200米的速度追赶。
设从小明父亲开始追赶直到追上小明所需时间为 t分钟,则有方程:[200t = 50t + 600] (左边是爸爸的总行程,右边是小明在相同时间内走过的距离加上初始的600米领先)
解这个方程得:[150t = 600] [t = 4] 分钟。这意味着爸爸用了4分钟就追上了小明。
在这4分钟里,小明又走了 4×50=200 米。
因此,当爸爸追上小明时,小明总共走了 600+200=800 米。
步骤2: 计算小明去爷爷家剩余的距离和需要的时间
根据题意,“小明坐自行车的路程是走路路程的5倍”,这里可以理解为从爸爸追上小明的地方到爷爷家的路程是之前步行路程(800米)的5倍,即 800×5=4000 米。
由于之后是骑车前往,速度为每分钟200米,因此到达爷爷家还需要时间 4000/200=20 分钟。
步骤3: 最后计算小明到爷爷家的时间
小明于早上八点整出发。
到爸爸追上他时,共过去了 12+4=16 分钟。
再加上骑车前往爷爷家所需的20分钟,总共耗时 16+20=36 分钟。
因此,小明将在出发后的第36分钟到达爷爷家,即早上 8:00+36 分钟 = 8:36 到达爷爷家。

技巧三:使用分隔符号区分单元

在构建复杂的 Prompt 时,采用特定的分隔符来界定不同内容单元是极为关键的,这一做法显著增强了 LLMPrompt 正确解析的能力。随着任务复杂度的增加,合理利用分隔符越能提升 LLM 的表现。

分隔符的选择应着眼于那些在自然语言文本中罕见的、独特的字符组合,例如:###、===、>>>等。这些特殊符号序列并无固定规则,关键在于其辨识度高,确保模型能够明确区分这些符号是作为内容区域的界限标识,而非文本中的普通标点或语法组成部分。

未使用分隔符 使用分隔符
Prompt 请简短总结以下影评。
曾经意气风发的张志强在生活的重压下,中年“失速”偏离了原本的生活轨迹,一时意气用事的决定,让他瞬间从家人的“小骄傲”变成了社会的“边角料”。
然而,他未曾料到,这仅是他中年人生道路上的起点。接连不断的变故如疾风骤雨般袭来,迫使他不得不重新面对自我。当生活的重担真正压肩,他选择成为一名快递员,从新的起点重新出发,穿梭于都市大街小巷的高志垒在路上结识了一众志同道合的伙伴。
在共度的时光里他深切的体会到了人间的冷暖真情,逐渐在这条充满磨砺的“逆行道”中找回曾经丢失的勇气与信念,重新定义人生新的方向。
请简短总结以下影评。
###
曾经意气风发的张志强在生活的重压下,中年“失速”偏离了原本的生活轨迹,一时意气用事的决定,让他瞬间从家人的“小骄傲”变成了社会的“边角料”。
###
然而,他未曾料到,这仅是他中年人生道路上的起点。接连不断的变故如疾风骤雨般袭来,迫使他不得不重新面对自我。当生活的重担真正压肩,他选择成为一名快递员,从新的起点重新出发,穿梭于都市大街小巷的高志垒在路上结识了一众志同道合的伙伴。
###
在共度的时光里他深切的体会到了人间的冷暖真情,逐渐在这条充满磨砺的“逆行道”中找回曾经丢失的勇气与信念,重新定义人生新的方向。
###
输出 电影讲述了一个中年危机故事,主角张志强因生活压力偏离正常生活轨道,经历一系列挑战后,他成为一名快递员,在新朋友的帮助下重拾勇气与信念,找到了生活的新方向。影片展现了逆境中的成长与自我救赎。 主人公张志强中年遭遇生活困境,一次冲动的决定使他社会地位骤降。随后,面对重重挑战,他担任快递员重新起步,在此过程中与同行建立深厚情谊,并在磨难中找回勇气和信念。最终,在艰难和挑战中,为自己的人生找到了新的意义和方向。

您可以在输出中发现明显差别,在使用了分隔符的输出中,LLM 不仅理解了三段话的逻辑关系,还正确识别了分隔符,并根据分隔符的段落生成了三段强相关的总结。

技巧四:引导模型“思考”

对于逻辑推理和语境学习的复杂任务来说,简单的 Prompt 技巧可能无法满足任务需求。但您可以通过引导模型生成推理过程或帮助模型拆解复杂任务并逐步推理的方式,让模型在生成推理结果前生成更多的推理依据,从而提升模型在复杂问题上的表现。

这里为您先介绍思维链(Chain of ThoughtCOT),它是一种使用起来较为简单的引导方法,但能够显著提高大模型在复杂场景下的推理能力。

任务目的:解析一个复杂的 JSON 结构体

#背景#
JSON 输入:
{"web-app": {
  "servlet": [   
    {
      "servlet-name": "cofaxEmail",
      "servlet-class": "org.cofax.cds.EmailServlet",
      "init-param": {
      "mailHost": "mail1",
      "mailHostOverride": "mail2"}},
    {
      "servlet-name": "cofaxTools",
      "servlet-class": "org.cofax.cms.CofaxToolsServlet",
      "init-param": {
        "templatePath": "toolstemplates/",
        "log": 1,
        "logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
        "logMaxSize": ""}}],
  "servlet-mapping": {
    "cofaxEmail": "/cofaxutil/aemail/*",
    "cofaxTools": "/tools/*"},

  "taglib": {
    "taglib-uri": "cofax.tld",
    "taglib-location": "/WEB-INF/tlds/cofax.tld"}}}

#目的#
根据 JSON 判断是否完全符合以下要求:
1. 是否每个 servelet 都有 init-param
2. 是不是 servelet-mapping 中元素都在 servlet 中都有匹配
3. servelet 的 cofaxTools 中有三个以“log” 开头的参数,且 “log” 参数小于 10
不使用思维链 使用思维链
#输出#
如果全部符合要求,只输出 “符合要求”,否则只输出 “不符合要求”。
#输出#
先输出针对各要求的思考判断过程。 如果全部符合要求,再输出 “符合要求”,否则输出 “不符合要求”。
不符合要求 首先,我们来逐步分析给定的JSON数据,以判断它是否符合所有提到的要求。
思考过程
1. 检查每个servlet是否有init-param
……..(这里内容过长,省略了)
结论:每个servlet都有init-param,满足要求1。
2. 检查servlet-mapping中的元素是否都在servlet中有匹配
……..
结论servlet-mapping 中的所有元素都能在 servlet 中找到匹配,满足要求2。
3. 检查cofaxTools servlet中是否有三个以”log”开头的参数,且”log”参数小于10
……..
结论:虽然关于”logMaxSize”是否算作以”log”开头的有效参数可能有歧义(因为它没有实际数值),但基于最直接的解读,我们可以认为是满足了至少存在三个以”log”开头的参数这一条件,且明确指定的”log”参数值为1,小于10,因此大体上满足要求3,尽管”logMaxSize”的处理依据具体情况可能有所不同。
输出:基于以上分析,虽然关于”logMaxSize”的处理可能存在解释空间,但主要条件基本得到满足。
因此,如果对”logMaxSize”不作严格要求(比如,不强制要求它必须有一个有效数值且小于10),则可以认为整体符合要求。如果有对”logMaxSize”的具体数值要求,则需要进一步澄清后决定。但在标准解读下,答案应为:“符合要求”。

除了思维链,启发 LLM 进行思考的实用方法还有提示链(Prompt Chaining。提示链通过多轮对话,引导 LLM 思考方向,让 LLM 从简单任务开始,沿着设计好的思考方向逐步完成一个复杂推理。

提示链虽然相对思维链来说构建模式更加复杂,但模型表现更好,准确率更高。它非常适合逻辑复杂但能按照固定模式拆解的困难任务。

Prompt 测试与迭代

生成最优 prompt 是一个高度实验性的过程,需要不断尝试和调整各种方法。整个 prompt 工程的优化过程可概括如下:

20260701170803

此外,值得注意的是,除了精心设计的 prompt 外,用户提供的反馈和修正也是获取模型最佳输出的关键因素之一。即使在 prompt 优化完成后,持续地在线上环境中接收反馈并作出相应调整,才能使模型更好地理解和满足用户需求。

By admin

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注