Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何给ChatGPT写提示词

如何给ChatGPT写提示词

作者头像
Michael阿明
发布于 2023-05-09 09:56:23
发布于 2023-05-09 09:56:23
88100
代码可运行
举报
运行总次数:0
代码可运行

提示原则

  • 原则1:编写清晰明确的说明
  • 原则2:给模型留出“思考”的时间

编写清晰明确的说明

策略

  • 策略1:使用分隔符清晰地表示输入的不同部分 分隔符可以是任何东西,比如:""", < >, <tag> </tag>, :
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import openai
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

openai.api_key  = os.getenv('OPENAI_API_KEY')

def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0.1, 
        # this is the degree of randomness of the model's output
    )
    return response.choices[0].message["content"]

例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
text = f"""
你应该通过提供尽可能清晰和具体的指令来表达你希望模型完成的任务。
这将引导模型朝着期望的输出方向发展,并减少接收到无关或不正确响应的机会。
不要混淆编写清晰提示与编写简短提示。
在许多情况下,更长的提示提供更多的清晰度和上下文信息,
这可能导致更详细和相关的输出。
"""
prompt = f"""
将由三个反引号分隔的文本总结成一句话。
```{text}```
"""
response = get_completion(prompt)
print(response)

输出: 编写清晰、具体的指令可引导模型朝期望输出方向发展,不要混淆简短和清晰,更长的提示提供更多上下文信息,有助于更详细、相关的输出。

  • 策略2:使用结构化输出 json、html 等

例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
prompt = f"""
生成三本虚构书籍的书名、作者和类型,并以JSON格式提供,
包括以下键:book_id、title、author和genre。
"""
response = get_completion(prompt)
print(response)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "book1": {
    "book_id": "001",
    "title": "The Lost City",
    "author": "Emily Brown",
    "genre": "Adventure"
  },
  "book2": {
    "book_id": "002",
    "title": "The Secret Garden",
    "author": "Lucy Smith",
    "genre": "Fantasy"
  },
  "book3": {
    "book_id": "003",
    "title": "The Time Traveler's Wife",
    "author": "Olivia Green",
    "genre": "Romance"
  }
}
  • 策略3:要求模型检查是否满足条件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
text_1 = f"""
泡一杯茶很简单!首先,你需要把一些水烧开。
在水烧开的过程中,拿一个杯子并放入一个茶包。
一旦水够热,只需把水倒在茶包上。
让茶包浸泡一会儿,以便茶叶充分沉淀。
几分钟后,拿出茶包。如果你喜欢,可以加一些糖或牛奶调味。
然后就完成了!你可以享受美味的一杯茶。
"""
prompt = f"""
你将会得到用三个引号括起来的文本。如果它包含一系列的指令,则按以下格式重新编写这些指令:

步骤1 - ...
步骤2 - ...
...
步骤N - ...

如果文本不包含一系列的指令,则只需写"未提供步骤"。

\"\"\"{text_1}\"\"\"
"""
response = get_completion(prompt)
print("完成 Text 1:")
print(response)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
完成 Text 1:
步骤1 - 把一些水烧开。
步骤2 - 在水烧开的过程中,拿一个杯子并放入一个茶包。
步骤3 - 一旦水够热,只需把水倒在茶包上。
步骤4 - 让茶包浸泡一会儿,以便茶叶充分沉淀。
步骤5 - 几分钟后,拿出茶包。
步骤6 - 如果你喜欢,可以加一些糖或牛奶调味。
步骤7 - 然后就完成了!你可以享受美味的一杯茶。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
text_2 = f"""
今天阳光明媚,鸟儿在欢唱。这是去公园散步的好天气。
鲜花盛开,树木在微风中轻轻摇晃。
人们在外面尽情享受美好的天气,有些人在野餐,
有些人在玩游戏,还有些人在草地上放松身心。
这是一个在户外度过时光,欣赏大自然之美的完美日子。
"""
prompt = f"""
你将会得到用三个引号括起来的文本。
如果它包含一系列的指令,则按以下格式重新编写这些指令:

步骤1 - ...
步骤2 - ...
...
步骤N - ...

如果文本不包含一系列的指令,则只需写"未提供步骤"。

\"\"\"{text_2}\"\"\"
"""
response = get_completion(prompt)
print("完成 Text 2:")
print(response)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
完成 Text 2:
未提供步骤
  • 策略4:少样本提示
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
prompt = f"""
你的任务是以一致的风格回答。

<孩子>: 教我耐心的道理。

<祖父母>: 挖掘最深谷的河流源于一处不起眼的泉眼; 
最壮丽的交响乐从一个音符开始演奏; 
最复杂的挂毯则始于一根孤单的线头。

<孩子>: 教我关于韧性的道理。
"""
response = get_completion(prompt)
print(response)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<祖父母>: 韧性不是一时的勇气,而是在困难面前坚持不懈的毅力。
就像一棵树在风雨中弯曲,但不会折断,最终成为一棵高大的树。
所以,无论遇到什么困难,都要坚持下去,相信自己能够克服它们。

给模型留出“思考”的时间

  • 策略1:指定完成任务所需的步骤
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
text = f"""
在一个迷人的村庄里,兄妹杰克和吉尔踏上了从山顶井口取水的任务。
他们边唱着欢快的歌,边攀爬着,
但不幸降临了——杰克绊倒在一块石头上,
滚下了山坡,吉尔也紧随其后。
尽管略有些摔伤,他们依然回到家里,获得了温暖的拥抱。
尽管发生了这样的不幸,他们的冒险精神仍然没有消退,他们继续欢快地探索着。
"""

prompt_1 = f"""
执行以下操作:
1 - 用一句话总结由三个反引号包围的文本。
2 - 将总结翻译成法语。
3 - 在法语总结中列出每个名字。
4 - 输出一个JSON对象,其中包含以下键:french_summary,num_names。

请用换行分隔您的答案。

文本:
```{text}```
"""
response = get_completion(prompt_1)
print("Completion for prompt 1:")
print(response)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Completion for prompt 1:
1 - 兄妹在山顶井口取水时发生了意外,但最终平安回家并继续探索。
2 - Les frères et sœurs ont eu un accident en allant chercher de l'eau à la source de la montagne, mais sont finalement rentrés chez eux en sécurité et ont continué à explorer joyeusement.
3 - Jack, Jill
4 - {"french_summary": "Les frères et sœurs ont eu un accident en allant chercher de l'eau à la source de la montagne, mais sont finalement rentrés chez eux en sécurité et ont continué à explorer joyeusement.", "num_names": 2}

特定格式输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
prompt_2 = f"""
你的任务是执行以下操作:
1 - 用一句话总结由<>括起来的文本。
2 - 将总结翻译成法语。
3 - 在法语总结中列出每个名字。
4 - 输出一个JSON对象,其中包含以下键:french_summary,num_names。

请使用以下格式:
文本:<要总结的文本>
总结:<总结>
翻译:<总结的翻译>
名称:<意大利语总结中的名称列表>
输出JSON<包含总结和num_names的JSON对象>

文本: <{text}>
"""
response = get_completion(prompt_2)
print("\nCompletion for prompt 2:")
print(response)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Completion for prompt 2:
总结:兄妹在山上取水时发生意外,但最终平安回家并继续探险。
翻译:Les frères et sœurs ont eu un accident en prenant de l'eau sur la montagne, mais sont rentrés chez eux en sécurité et ont continué à explorer joyeusement.
名称:杰克,吉尔
输出JSON{"french_summary": "Les frères et sœurs ont eu un accident en prenant de l'eau sur la montagne, mais sont rentrés chez eux en sécurité et ont continué à explorer joyeusement.", "num_names": 2}
  • 策略2:指导模型在匆忙得出结论之前先自己解决问题
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
prompt = f"""
判读学生的答案是否正确

问题:
---
我正在建造一个太阳能电站,我需要帮助计算财务。

土地成本为每平方英尺100美元
我可以以每平方英尺250美元的价格购买太阳能电池板
我谈判了一份维护合同,每年的费用为固定的10万美元,以及每平方英尺额外的10美元
第一年的运营总成本是多少?
--- 
学生的求解:
---
让x为安装面积的大小。
成本:
土地成本:100x
太阳能电池板成本:250x
维护成本:100,000 + 100x
总成本:100x + 250x + 100,000 + 100x = 450x + 100,000
---
"""
response = get_completion(prompt)
print(response)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
这个学生的答案是正确的。(实际是错误的,模型答错了)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
prompt = f"""
你的任务是确定学生的解答是否正确。
要解决这个问题,请执行以下步骤:

首先,自己解决问题。
然后将自己的解决方案与学生的解决方案进行比较,
并评估学生的解决方案是否正确。
在自己解决问题之前不要决定学生的解决方案是否正确。

使用以下格式:
问题:
---
问题
---

学生的求解:
---
学生的求解
---

正确解:
---
解题步骤和你的求解方法
---

学生的求解和你的是否一样:
---
是 或者 不是
---

学生答案是否正确:
---
正确 或者 错误
---

问题:
---
我正在建造一个太阳能电站,我需要帮助计算财务。

土地成本为每平方英尺100美元
我可以以每平方英尺250美元的价格购买太阳能电池板
我谈判了一份维护合同,每年的费用为固定的10万美元,以及每平方英尺额外的10美元
作为面积的函数,第一年的运营总成本是多少?
---

学生的求解:
---
让x为安装面积的大小。
成本:
土地成本:100x
太阳能电池板成本:250x
维护成本:100,000 + 100x
总成本:100x + 250x + 100,000 + 100x = 450x + 100,000
---

正确解:
"""
response = get_completion(prompt)
print(response)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
成本:
土地成本:100x
太阳能电池板成本:250x
维护成本:100,000 + 10x(每平方英尺额外的费用)+ x(安装面积)
总成本:100x + 250x + 100,000 + 10x + x = 361x + 100,000

第一年的运营总成本是361倍安装面积加上10万美元。
---

学生的求解和你的是否一样:
------

学生答案是否正确:
---
正确

模型幻觉

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
prompt = f"""
火花思维这家公司的口碑怎么样?
"""
response = get_completion(prompt)
print(response)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
作为AI语音交互领域的领先企业,火花思维在行业内口碑较好。
其产品和技术得到了广泛的认可和好评,
尤其是在智能客服、智能语音交互、智能语音识别等领域,
火花思维的技术和产品表现出色,得到了客户和用户的高度评价。
同时,火花思维也积极参与行业标准制定和技术创新,
为行业发展做出了积极贡献,因此在行业内具有较高的声誉和影响力。

这个回答好像是自己胡编乱造的吧

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【吴恩达-AIGC/ChatGPT提示工程课程】第二章 - 编写 Prompt 的原则
本章的主要内容为编写 Prompt 的原则,在本章中,我们将给出两个编写 Prompt 的原则与一些相关的策略,你将练习基于这两个原则来编写有效的 Prompt,从而便捷而有效地使用 LLM。
元壤教育
2023/05/01
7050
【吴恩达-AIGC/ChatGPT提示工程课程】第二章 - 编写 Prompt 的原则
OpenAI 官方提示工程指南【中文版】
这份指南分享了如何更有效地利用像如 GPT-4 这样的大语言模型(有时候也叫 GPT 模型)来获得更好的结果。介绍的方法可以相互结合,以发挥更大的作用。我们鼓励你进行实验,寻找最适合你的技巧。
轩辕镜像
2024/09/29
2770
OpenAI官方提示词教程与实战指南
该指南分享了获取更好结果的策略和战术,适用于像GPT-4这样的大型语言模型(有时也称为GPT模型)。这里描述的方法有时可以组合使用以获得更好的效果。我们鼓励进行试验,找到最适合您的方法。
山行AI
2023/12/28
9430
OpenAI官方提示词教程与实战指南
ChatGPT提示词攻略之基本原则
下面是调用openai的completion接口的函数。但在本文中并不是重点。了解一下就好。
首飞
2023/06/04
5270
ChatGPT提示词攻略之基本原则
ChatGPT Prompt Engineering for Developers
Load the API key and relevant Python libaries.
Cellinlab
2023/05/17
1.2K0
ChatGPT Prompt Engineering for Developers
Prompt learning 教学技巧篇:通过增加示例、引导词、特殊符号指令等方式让chatgpt输出更好的答案
在问答场景里,为了让 AI 回答更加准确,一般会在问题里加条件。比如让 AI 推荐一部电影给你 Recommend a movie to me 。但这个 prompt 太空泛了,AI 无法直接回答,接着它会问你想要什么类型的电影,但这样你就需要跟 AI 聊很多轮,效率比较低。
汀丶人工智能
2023/05/13
2.1K0
Prompt learning 教学技巧篇:通过增加示例、引导词、特殊符号指令等方式让chatgpt输出更好的答案
纯干货——《面向开发者的 ChatGPT Prompt工程》学习笔记
此教程的主要目的是为大家介绍如何在自己的应用开发过程中,创建合适的 prompt。那么为什么会重点介绍 prompt?其实接触过 llm 的同学应该都很清楚,想要开发一款强大的 llm 应用,优秀的 prompt是至关重要的,熟练掌握 prompt 编写的人,就可以更好的让 model 理解需求。
聪明鱼
2023/12/09
1.6K0
《ChatGPT Prompt Engineering for Developers》学习笔记
本笔记是 deeplearning.ai 最近推出的短期课程《ChatGPT Prompt Engineering for Developers》的学习总结。
口仆
2023/08/28
7410
《ChatGPT Prompt Engineering for Developers》学习笔记
GPT 官方最佳实践指南
本指南分享了从 GPT 获得更好结果的策略和战术。有时可以结合使用此处描述的方法以获得更好的效果。我们鼓励进行实验以找到最适合您的方法。
成江东
2023/06/09
1.2K0
GPT 官方最佳实践指南
吴恩达 prompt 课程笔记
举例:生成三个虚构的图书标题,以及它们的作者和流派,使用以下键名以JSON格式提供:书籍ID、标题、作者和流派。
operator开发工程师
2023/11/16
5280
Prompt learning 教学[进阶篇]:简介Prompt框架并给出自然语言处理技术:Few-Shot Prompting、Self-Consistenc
看完基础篇的各种场景介绍后,你应该对 Prompt 有较深的理解。之前的章节我们讲的都是所谓的「术」,更多地集中讲如何用,但讲「道」的部分不多。高级篇除了会讲更高级的运用外,还会讲更多「道」的部分。高级篇的开篇,我们来讲一下构成 prompt 的框架。
汀丶人工智能
2023/05/12
2.3K0
吴恩达《 提示工程》学习笔记
ChatGPT出圈后,网上有很多提示词大全,这些提示词库里的提示词通常用于实现一次性的特定任务。但是从开发人员视角来看,使用大语言模型API来快速构建应用程序的能力还没得到充分的利用。
windealli
2023/06/02
3K1
吴恩达《 提示工程》学习笔记
学习笔记 | ChatGPT Prompt Engineering for Developers 2
学习笔记|ChatGPT Prompt Engineering for Developers 2
做数据的二号姬
2023/09/06
2080
学习笔记 | ChatGPT Prompt Engineering for Developers 2
迭代prompt提示词
learn from https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/3/iterative
Michael阿明
2023/05/09
7150
迭代prompt提示词
【吴恩达-AIGC/ChatGPT提示工程课程】第四章 - 文本概括 Summarizing
当今世界上有太多的文本信息,几乎没有人能够拥有足够的时间去阅读所有我们想了解的东西。但令人感到欣喜的是,目前LLM在文本概括任务上展现了强大的水准,也已经有不少团队将这项功能插入了自己的软件应用中。
元壤教育
2023/05/01
4650
【吴恩达-AIGC/ChatGPT提示工程课程】第四章 - 文本概括 Summarizing
【吴恩达-AIGC/ChatGPT提示工程课程】第三章 - 迭代式提示开发
当使用 LLM 构建应用程序时,我从来没有在第一次尝试中就成功使用最终应用程序中所需的 Prompt。但这并不重要,只要您有一个好的迭代过程来不断改进您的 Prompt,那么你就能够得到一个适合任务的 Prompt。我认为在提示方面,第一次成功的几率可能会高一些,但正如上所说,第一个提示是否有效并不重要。最重要的是为您的应用程序找到有效提示的过程。
元壤教育
2023/05/01
8080
【吴恩达-AIGC/ChatGPT提示工程课程】第三章 - 迭代式提示开发
AI大模型全栈工程师课程笔记 - 提示词工程
课程学习自 知乎知学堂 https://www.zhihu.com/education/learning
Michael阿明
2023/11/18
4910
AI大模型全栈工程师课程笔记 - 提示词工程
【吴恩达-AIGC/ChatGPT提示工程课程】第五章 - 推断 Inferring
这些任务可以看作是模型接收文本作为输入并执行某种分析的过程。这可能涉及提取标签、提取实体、理解文本情感等等。如果你想要从一段文本中提取正面或负面情感,在传统的机器学习工作流程中,需要收集标签数据集、训练模型、确定如何在云端部署模型并进行推断。这样做可能效果还不错,但是这个过程需要很多工作。而且对于每个任务,如情感分析、提取实体等等,都需要训练和部署单独的模型。
元壤教育
2023/05/01
3610
【吴恩达-AIGC/ChatGPT提示工程课程】第五章 - 推断 Inferring
近期四项研究,人工智能又搞出了哪些新材料?
编辑 | 萝卜皮 目录 无监督机器学习工具加速真正新材料的发现 识别新材料的高通量方法 通过结合深度学习和约束推理来自动化晶体结构相映射 人工智能方法加速热电材料的发现 无监督机器学习工具加速真正新材料的发现 利物浦大学的研究人员创建了一种协作人工智能工具,可以减少发现「真正新材料」所需的时间和精力。 据报道,这种新工具已经发现了四种新材料,包括一系列可传导锂的新固态材料。这种固体电解质可以应用于固态电池开发,为电动汽车提供更长的续航能力。 发现新的功能材料是一个高风险、复杂且非常耗时的旅程;通过组合元素周
机器之心
2023/03/29
5260
近期四项研究,人工智能又搞出了哪些新材料?
AI大模型全栈工程师课程笔记 - RAG 检索增强生成
课程学习自 知乎知学堂 https://www.zhihu.com/education/learning
Michael阿明
2023/12/09
1.6K0
AI大模型全栈工程师课程笔记 - RAG 检索增强生成
推荐阅读
相关推荐
【吴恩达-AIGC/ChatGPT提示工程课程】第二章 - 编写 Prompt 的原则
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验