提示词工程:引导AI高效完成任务的艺术
提示词工程(Prompt Engineering)是人工智能时代的一项关键技能,它研究如何设计最佳提示词,以引导大型语言模型产生我们所需的结果。本文将深入探讨提示词工程的核心概念、组成部分及其与微调的区别,并通过实际代码展示如何实现提示词工程。
提示词与微调:两种提升模型表现的方法
提示词和微调都是用来提高模型表现的方法,但它们的工作方式有本质区别:
- 提示词:通过给模型提供特定的指令或上下文,直接引导模型生成合适的回答。这种方法灵活便捷,无需额外训练,但需要精心设计提示内容。
- 微调:需要对模型进行额外的训练,使用特定任务的数据来调整模型参数,使其在该任务上表现更佳。这种方法需要更多时间和计算资源,但可以使模型在特定领域获得持久的能力提升。
提示工程的核心概念
提示(Prompt)是用户提供的文本输入,用以引导模型的输出。提示工程则研究如何设计出最佳提示词,使语言模型能高效完成特定任务。
一个完整的提示通常包含三个关键要素:指令 + 问题 + 输出标准。

提示词的四大组成部分
一个有效的提示词通常由以下四个部分组成:
- 指令(Instruction):告诉模型需要执行的具体任务或指令
- 上下文(Context):提供额外的背景信息,帮助模型更好地理解任务
- 输入数据(Input Data):用户输入的具体问题或内容
- 输出指示(Output Indicator):指定期望输出的类型或格式
提示词工程的代码实现
以下是一个Python实现的提示词工程示例,展示了如何将提示词的四个组成部分封装到代码中:
from openai import OpenAI
from dotenv import load_dotenv
from typing import List, Dict
load_dotenv()
client = OpenAI()
class PromptSession:
def __init__(self, instruction: str):
"""初始化:设置系统指令"""
self.messages: List[Dict[str, str]] = [{
"role": "system",
"content": instruction
}]
def add_user_input(self, user_input: str):
"""输入数据(Input Data)"""
self.messages.append({
"role": "user",
"content": user_input
})
def get_response(self, model: str = "gpt-3.5-turbo") -> str:
"""输出指示(Output Indicator)"""
response = client.chat.completions.create(
model=model,
messages=self.messages
)
reply = response.choices[0].message.content
self.messages.append({
"role": "assistant",
"content": reply
})
return reply
def run_interactive(self):
"""运行交互式对话"""
print("开始对话(输入 '退出' 结束)")
while True:
user_input = input("你:")
if user_input.lower() == "退出":
print("对话结束。")
break
self.add_user_input(user_input)
reply = self.get_response()
print(f"melon:{reply}")
if __name__ == "__main__":
instruction = "你是一个名叫 melon 的 AI 助手,你可以帮助用户解决各种问题,包括写代码、查资料、日常建议等。"
session = PromptSession(instruction)
session.run_interactive()
代码中的提示词组成部分对应关系

结语
提示词工程是与大型语言模型有效交互的关键技能。通过精心设计提示词的各个组成部分,我们可以引导AI模型产生更加准确、有用的回答,从而更好地满足特定任务需求。相比微调,提示词工程更加灵活,不需要额外的模型训练过程,是快速适应各种AI应用场景的有效方法。
随着人工智能技术的发展,掌握提示词工程的技巧将成为每个与AI打交道的开发者、研究者和普通用户的必备技能。
提示词工程:引导AI高效完成任务的艺术的更多相关文章
- 免费Midjourney AI绘画Prompt提示词平台合集
Midjourney AI绘图最关键的地方在于Prompt提示词写的好,一个好的提示词可以让AI模型创造出更优质的绘图,以下是8个免费的Midjourney Prompt提示词辅助平台. 编辑切换 ...
- AI绘画提示词创作指南:DALL·E 2、Midjourney和 Stable Diffusion最全大比拼 ⛵
作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 自然语言处理实战系列:https://www.showmeai.tech ...
- Midjourney 提示词工具(10 个国内外最好最推荐的)
Midjourney,是一个革命性的基于人工智能的艺术生成器,可以从被称为提示的简单文本描述中生成令人惊叹的图像.Midjourney已经迅速成为艺术家.设计师和营销人员的首选工具(包括像我这样根本不 ...
- Semantic Kernel 入门系列:🥑突破提示词的限制
无尽的上下文 LLM的语言理解和掌握能力在知识内容的解读和总结方面提供了强大的能力. 但是由于训练数据本身来自于公共领域,也就注定了无法在一些小众或者私有的领域能够足够的好的应答. 因此如何给LLM ...
- SublimeCodeIntel 所有代码提示和补全插件 All Autocomplete 插件搜索所有打开的文件来寻找匹配的提示词
SublimeCodeIntelSublimeCodeIntel 作为一个代码提示和补全插件,支持 JavaScript.Mason.XBL.XUL.RHTML.SCSS.Python.HTML.Ru ...
- 《花雕学AI》17:关注提示工程—本世纪最重要的技能可能就是与AI人工智能对话
本文目录与主要结构 引言:介绍提示工程的概念和背景,说明为什么它是本世纪最重要的技能之一. 正文: 一.提示工程的基本原理和方法:介绍什么是提示.如何设计和优化提示.如何使用提示与语言模型进行交互. ...
- 学会提示-AI时代职场必修课
作者:京东 何雨航 " 上个时代要学会提问,这个时代要学会提示." 引言 当你在写提数代码时,小张已经完成了数据分析:当你正在整理材料时,小王却在和对象逛环球影城:述职时,你发现小 ...
- 最新版本 Stable Diffusion 开源 AI 绘画工具之中文自动提词篇
目录 标签生成器 提示词自动补全 标签生成器 由于输入正向提示词 prompt 和反向提示词 negative prompt 都是使用英文,所以对学习母语的我们非常不友好 使用网址:https://t ...
- Js_Ajax_输入词提示
输入"1",有提示,否则没有 suggest.jsp #suggest { background-color: #e0e0e0; width: 200px; } var xhr; ...
- 【English】主语从句的引导词是如何选择?
在英语中,主要有三大从句,即名词性从句(包括主语从句,宾语从句,表语从句,同位语从句).形容词性从句(即定语从句).副词性从句(即状语从句,包括时间.条件.结果.目的.原因.让步.地点.方式等). 引 ...
随机推荐
- 三分钟构建高性能WebSocket服务 | 超优雅的Springboot整合Netty方案
前言 每当使用SpringBoot进行Weboscket开发时,最容易想到的就是spring-boot-starter-websocket(或spring-websocket).它可以让我们使用注解, ...
- mysql - 视图的操作 创建,修改,删除,查看
只保存sql逻辑,不保存查询结果 视图可以看作是封装了多条sql语句,之后使用的时候就像普通表一样,而这个表上的字段则是创建视图时,select 后边跟的字段,支持列的别名. 创建 语法: creat ...
- java web 传输视频流代码锦集
方案一 //path为本地文件路劲 public void play(String path, HttpServletRequest request, HttpServletResponse resp ...
- docker login harbor x509: certificate signed by unknown authority
前言 docker login harbor x509: certificate signed by unknown authority 解决 打开 /etc/docker/daemon.json,如 ...
- Golang 入门 : 字符串及底层字符类型
字符串 基本使用 在 Go 语言中,字符串是一种基本类型,默认是通过 UTF-8 编码的字符序列,当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节,比如中文编码通常需 ...
- DVWA靶场学习
暴力破解Brute Force low 输入密码就正常抓包放字典破解得了 uploading-image-528180.png medium 同样的操作发现响应速度变慢了,但是还是能暴力破解,不多说了 ...
- Docker Swarm多节点环境的搭建(二): Docker的集群调配
Docker的集群调配在上篇文章中介绍了如何如何在多个CentOS中安装Docker应用.本文章为大家介绍如何实现对已安装的这一堆机器实现集群化.Docker Swarm运行Spring Cloud应 ...
- Delphi 增加/获得windows用户帐号
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- 继承内存图--java进阶 day01
主方法进栈,有new进堆 堆内存中先存自己类中有的变量 又因为继承了父类,所以父类中的变量也要存入 即使被私有化,依旧可以继承,只是没有权限使用! 创建对象时,会调用构造方法,所以走构造方法,实参传形 ...
- Debian 9 更换源
Debian 全球镜像站 # 先备份源列表文件 mv /etc/apt/sources.list /etc/apt/sources.list.bak # 生成新的源列表文件(用的国内源镜像) echo ...