LLM 模型 Prompt 工程

目录

1、Prompt 基础概念

2、Prompt 主要构成

3、Prompt 相关技术

3.1、思维链

3.2、自洽性

3.3、思维树


1、Prompt 基础概念

        Prompt 工程是通过设计和优化自然语言提示(Prompt),引导LLM生成符合特定任务需求的输出的技术。其核心目标是以最小化标注数据和计算资源,最大化模型在复杂任务(如问答、推理、生成)中的性能。

        通过给 LLM 进行角色定义,并步骤会话上下文,可以让大模型的输出更精准。例如,若需模型生成产品摘要,Prompt需包含明确的角色(如“你是一位市场分析师”)、任务描述(“总结产品功能”)、输出格式(“50字以内,幽默风格”)。

核心优势:

(1)高效适应新任务:仅需少量示例即可调整模型,无需重新训练。

(2)降低开发成本:省去传统NLP流程中的数据集构建和微调步骤。

主要特点:

(1)性能提升机制:

        降低信息熵:通过明确的上下文和示例减少模型生成的不确定性,提高输出相关性。

        涌现能力激发:复杂Prompt(如思维链)可激活模型在预训练中未显式学习的推理能力。

(2)局限性:

        依赖预训练知识:若任务涉及领域专有知识(如医学诊断),需结合检索增强生成(RAG)补充外部信息。

        无法替代训练:模型的核心能力(如zero-shot学习)仍需通过预训练获得,Prompt工程仅优化表层交互。

2、Prompt 主要构成

主要构成:

  • 角色:给 AI 定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」
  • 指示:对任务进行描述
  • 上下文:给出与任务相关的其它背景信息(尤其在多轮交互中)
  • 例子:必要时给出举例,学术中称为 one-shot learning, few-shot learning 或 in-context learning;实践证明其对输出正确性有帮助
  • 输入:任务的输入信息;在提示词中明确的标识出输入
  • 输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、XML)

注意事项:

(0)对角色的定义要求清晰、具体,可通过不断调试进行优化;

(1)大模型对 prompt 开头和结尾的内容更敏感。先定义角色,其实就是在开头把问题域收窄,减少二义性;

(2)对话模型是静态的,不会记录历史对话,所以我们每次对话的时候需要将历史对话一起传递给聊天模型;

(3)「给例子」很常用,效果特别好;

(4)一切问题先尝试用 prompt 解决,往往有四两拨千斤的效果;

(5)可以添加 NO COMMENTS. NO ACKNOWLEDGEMENTS. 避免废话;

(6)添加「请一步一步分析以下对话」、「Let's think step by step」开启思维链;

示例代码如下:

# 加载环境变量
import os
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv# 读取本地 .env 文件,里面定义了 OPENAI_API_KEY
_ = load_dotenv(find_dotenv())  client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"),base_url=os.getenv("OPENAI_BASE_URL")
)# 基于 prompt 生成文本
def get_completion(prompt, model="gpt-3.5-turbo"):messages = [{"role": "user", "content": prompt}]response = client.chat.completions.create(model=model,messages=messages,temperature=0,  # 模型输出的随机性,0 表示随机性最小)return response.choices[0].message.content# Prompt 构成instruction = """
你的任务是识别用户对手机流量套餐产品的选择条件。
每种流量套餐产品包含三个属性:名称(name),月费价格(price),月流量(data)。
根据用户输入,识别用户在上述三种属性上的倾向。
"""# 输出描述
output_format = """
以JSON格式输出。
1. name字段的取值为string类型,取值必须为以下之一:经济套餐、畅游套餐、无限套餐、校园套餐 或 null;2. price字段的取值为一个结构体 或 null,包含两个字段:
(1) operator, string类型,取值范围:'<='(小于等于), '>=' (大于等于), '=='(等于)
(2) value, int类型3. data字段的取值为取值为一个结构体 或 null,包含两个字段:
(1) operator, string类型,取值范围:'<='(小于等于), '>=' (大于等于), '=='(等于)
(2) value, int类型或string类型,string类型只能是'无上限'4. 用户的意图可以包含按price或data排序,以sort字段标识,取值为一个结构体:
(1) 结构体中以"ordering"="descend"表示按降序排序,以"value"字段存储待排序的字段
(2) 结构体中以"ordering"="ascend"表示按升序排序,以"value"字段存储待排序的字段只输出中只包含用户提及的字段,不要猜测任何用户未直接提及的字段,不输出值为null的字段。
"""examples = """
便宜的套餐:{"sort":{"ordering"="ascend","value"="price"}}
有没有不限流量的:{"data":{"operator":"==","value":"无上限"}}
流量大的:{"sort":{"ordering"="descend","value"="data"}}
100G以上流量的套餐最便宜的是哪个:{"sort":{"ordering"="ascend","value"="price"},"data":{"operator":">=","value":100}}
月费不超过200的:{"price":{"operator":"<=","value":200}}
就要月费180那个套餐:{"price":{"operator":"==","value":180}}
经济套餐:{"name":"经济套餐"}
"""context = f"""
客服:有什么可以帮您
用户:有什么100G以上的套餐推荐
客服:我们有畅游套餐和无限套餐,您有什么价格倾向吗
用户:{input_text}
"""# 传给 AGI 的 prompt 格式,基本介绍、输出格式、举例、用户输入
prompt = f"""
{instruction}{output_format}例如:
{examples}# 启动思维链
#请一步一步分析以下对话用户输入:
{context}
"""response = get_completion(prompt)
print(response)

3、Prompt 相关技术

3.1、思维链

        思维链( Chain of Thoughts, CoT ),是大模型涌现出来的一种独特能力。它是偶然被「发现」(对 OpenAI 的人在训练时没想过会这样)的。有人在提问时以「Let's think step by step」开头,结果发现 AI 会自动把问题分解成多个步骤,然后逐步解决,使得输出的结果更加准确。

思维链的原理:

(1) 让 AI 生成更多相关的内容,构成更丰富的「上文」,从而提升「下文」正确的概率;

(2)对涉及计算和逻辑推理等复杂问题,尤为有效;

(3)输入 Tokens 越多,输出越准确;

        注意,对于推理性模型,例如 DeepSeek R1 内置了思维链,在提问时会根据任务类型自动选择不同的推理策略(如数学问题使用分布规则分解,逻辑任务进行自我验证)。这类模型的输出不仅包含答案,还会展示中间推理步骤(即思维链),用户无需手动触发即可获得完整的逻辑链条。

3.2、自洽性

        自洽性是对思维链的扩展,通过生成多条并行推理链(如5-10条),并基于多数投票或评分机制选择最优解,以提升结果的鲁棒性和一致性。例如,在解决数学题时,模型生成多个不同解题路径,最终选择出现频率最高的答案。

        一种对抗「幻觉」的手段。就像我们做数学题,要多次验算一样。

        (1)同样 prompt 跑多次

        (2)通过投票选出最终结果

3.3、思维树

        思维树由 Google DeepMind 与普林斯顿大学提出,将问题解决过程建模为树状结构,允许模型在每一步生成多个候选思路,并通过搜索算法(如广度优先、深度优先)回溯和评估路径,最终选择最优解。其核心思想是模仿人类“试错-回溯”的认知过程。思维树更适合高复杂性任务,系统性探索更多可能性。但需要多次调用 LLM 模型评估路径,需要更多 Tokens。

技术实现:

(1)树形结构分解:根节点为初始问题,每个节点代表一个中间状态(Partial Solution),分支为可能的推理方向。

(2)搜索与评估:通过启发式评分(Heuristic Evaluation)筛选路径,并结合搜索算法扩展树结构。例如,在论文写作任务中,模型可能生成引言、方法、结果等不同章节的多个草稿版本,选择逻辑最连贯的组合。

(3)动态调整:支持对死胡同路径的回溯,重新探索其他分支。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/30632.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot基础篇(4):自动配置原理

1 自动配置原理剖析 1.1 加载配置类的源码追溯 自动配置的触发入口&#xff1a; SpringBootApplication 组合注解是自动配置的起点&#xff0c;其核心包含 EnableAutoConfiguration&#xff0c;该注解使用AutoConfigurationImportSelector 实现配置类的动态加载。 启动类的注…

【大模型系列】开发工具Cursor使用配置及备忘

开发工具cursor使用过程的配置备忘 最近一段时间大模型开发工具cursor是比较火爆的&#xff0c;其提供的一个比较有价值的特性就是其ai辅助功能&#xff0c;其内部集成了若干大模型 提供免费使用期&#xff1b; 做大模型开发这个话题应该是绕不过的&#xff0c;就像开发java使…

vtkAppendPolyData vtkMultiBlockDataGroupFilter 区别 合并数据

Summary: vtkAppendPolyData vtkMultiBlockDataGroupFilter 区别 两个都是合并数据&#xff1b; 用于处理多块数据集的两种不同的过滤器&#xff08;filters&#xff09;&#xff0c;它们在处理和合并多块数据集方面有不同的用途和实现方式。 Part2:区别 它们的主要区别在于…

C++入门——输入输出、缺省参数

C入门——输入输出、缺省参数 一、C标准库——命名空间 std C标准库std是一个命名空间&#xff0c;全称为"standard"&#xff0c;其中包括标准模板库&#xff08;STL&#xff09;&#xff0c;输入输出系统&#xff0c;文件系统库&#xff0c;智能指针与内存管理&am…

定制开发开源AI智能名片S2B2C商城小程序:以“晒”为桥,构建信任,助力社交新零售飞跃

摘要&#xff1a;随着互联网的深入发展和社交媒体的普及&#xff0c;社交新零售逐渐成为商业领域的新热点。在这个充满机遇与挑战的时代&#xff0c;如何快速建立与陌生消费者的信任关系&#xff0c;成为决定商业成功的关键。本文将以定制开发开源AI智能名片S2B2C商城小程序为研…

【Linux】Linux Progress Pulse-进度条

> &#x1f343; 本系列为Linux的内容&#xff0c;如果感兴趣&#xff0c;欢迎订阅&#x1f6a9; > &#x1f38a;个人主页:【小编的个人主页】 >小编将在这里分享学习Linux的心路历程✨和知识分享&#x1f50d; >如果本篇文章有问题&#xff0c;还请多多包涵&a…

Zypher Network :基于零知识证明方案为 AI 赋予可信框架

Zypher Network 提出的系列方案正逐步成为破解这一困局的关键&#xff0c;其不仅为 LLM 和 AI Agent 等采用提供了一个可信的框架&#xff0c;也为其在更广泛行业中的应用铺平了道路。 LLM 的 “黑盒特性” 像 ChatGPT、DeepSeek、Grok 等大型语言模型&#xff08;LLM, Large …

从Manus到OpenManus:多智能体协作框架如何重构AI生产力?

文章目录 Manus&#xff1a;封闭生态下的通用AI智能体OpenManus&#xff1a;开源社区的闪速复刻挑战与未来&#xff1a;框架落地的现实边界当前局限性未来演进方向 OpenManus使用指南1. 环境配置2. 参数配置3. 替换搜索引擎4. 运行效果 协作框架开启AI生产力革命 Manus&#xf…

深入理解与配置 Nginx TCP 日志输出

一、背景介绍 在现代网络架构中&#xff0c;Nginx 作为一款高性能的 Web 服务器和反向代理服务器&#xff0c;广泛应用于各种场景。除了对 HTTP/HTTPS 协议的出色支持&#xff0c;Nginx 从 1.9.0 版本开始引入了对 TCP 和 UDP 协议的代理功能&#xff0c;这使得它在处理数据库…

Python - 轻量级后端框架 Flask

Flask是什么&#xff1f; Flask是一个轻量级的Python Web框架&#xff0c;用于构建Web应用程序和API。简单、灵活、易扩展&#xff0c;适合小型项目或需要快速开发的应用。 接口的输入和输出 输入&#xff1a;request GET参数、POST JSON数据、POST表单 from flask import…

<论文>MiniCPM:利用可扩展训练策略揭示小型语言模型的潜力

一、摘要 本文跟大家一起阅读的是清华大学的论文《MiniCPM: Unveiling the Potential of Small Language Models with Scalable Training Strategies》 摘要&#xff1a; 对具有高达万亿参数的大型语言模型&#xff08;LLMs&#xff09;的兴趣日益增长&#xff0c;但同时也引发…

好玩的谷歌浏览器插件-自定义谷歌浏览器光标皮肤插件-Chrome 的自定义光标

周末没有啥事 看到了一个非常有意思的插件 就是 在使用谷歌浏览器的时候&#xff0c;可以把鼠标的默认样式换一个皮肤。就像下面的这种样子。 实际谷歌浏览器插件开发对于有前端编程基础的小伙伴 还是比较容易的&#xff0c;实际也是写 html css js 。 所以这个插件使用的技术…

3.使用ElementUI搭建侧边栏及顶部栏

1. 安装ElementUI ElementUI是基于 Vue 2.0 的桌面端组件库。使用之前&#xff0c;需要在项目文件夹中安装ElementUI&#xff0c;在终端中输入以下命令&#xff0c;进行安装。 npm i element-ui -S并在main.js中引入ElementUI 2. 使用elmentUI组件进行页面布局 2.1 清空原…

调研:如何实现智能分析助手(Agent)(AutoCoder、FastGPT、AutoGen、DataCopilot)

文章目录 调研&#xff1a;如何实现智能分析助手&#xff08;Agent&#xff09;&#xff08;AutoCoder、FastGPT、AutoGen、DataCopilot&#xff09;一、交互流程二、数据流程三、架构分类四、开源产品4.1 AutoCoder&#xff08;知识库变体&#xff09;4.2 FastGPT&#xff08;…

matlab常见的配图代码实现1

1. 折线图 x linspace(0, 10, 100); y1 sin(x);y2 cos(x); figure; plot(x, y1, -o, LineWidth, 2, MarkerSize, 6, MarkerFaceColor, b); hold on;plot(x, y2, -s, LineWidth, 2, MarkerSize, 6, MarkerFaceColor, r); title(折线图); xlabel(X轴); ylabel(Y轴); legend(s…

【汇编语言】单片机程序执行过程

一、任务需求 指示灯LED4闪烁&#xff0c;亮0.5秒&#xff0c;灭0.5秒&#xff0c;无限循环 二、针对硬件的编程 1、确定原理图2、确定硬件的物理关系 三、设计步骤 1.用自己的语言描述工作流程 1.1指示灯LED4亮1.2延时0.5秒1.3指示灯LED4灭1.4延时0.5秒1.5跳转到1.1步 …

从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(十二) socketio 消息处理

1.后端 在message.controller.js中 在sendMessage方法中 每当我们发送消息 需要socketio把这个消息转发给 接收人 加入转发逻辑 // 把消息发给指定的用户的socket const receiverSocketId getReceiverSocketId(receiverId); if(receiverSocketId) { io.to(receiverSocket…

【大模型】WPS 接入 DeepSeek-R1详解,打造全能AI办公助手

目录 一、前言 二、WPS接入AI工具优势​​​​​​​ 三、WPS接入AI工具两种方式 3.1 手动配置的方式 3.2 Office AI助手 四、WPS手动配置方式接入AI大模型 4.1 安装VBA插件 4.1.1 下载VBA插件并安装 4.2 配置WPS 4.3 WPS集成VB 4.4 AI助手效果测试 4.5 配置模板文…

SmolVLM2 - 将视频理解带到每个设备

本文翻译整理自&#xff1a;SmolVLM2: Bringing Video Understanding to Every Device https://huggingface.co/blog/smolvlm2 文章目录 TL;DR: SmolVLM 现在可以观看 &#x1f4fa; 并拥有更好的视觉理解一、关于 SmolVLM2二、 技术细节1、SmolVLM2 2.2B: 我们新的视觉和视频明…

Cocos Creator Shader入门实战(三):CCEffect参数配置讲解

引擎版本&#xff1a;3.8.5 您好&#xff0c;我是鹤九日&#xff01; 回顾 稍微回顾下前面两篇博客讲解的内容&#xff1a; 一、Cocos渲染效果的实现需要Material材质和Effect资源的互相配合。 二、Effect资源负责Shader片段的编写和属性配置&#xff0c;Material材质负责对E…