吴恩达|chatgpt 提示词工程师学习笔记。

news2024/11/27 20:58:59

目录

一、提示指南

写提示词的2大原则:

模型的限制

二、迭代

三、总结

四、推断

五、转换

六、扩展

七、对话机器人


吴恩达和openai团队共同开发了一款免费的课程,课程是教大家如何更有效地使用prompt来调用chatgpt,整个课程时长1个半小时,也提供了对应的环境和代码,大家可以去学习。

课程链接:ChatGPT Prompt Engineering for Developers - DeepLearning.AI

(小伙伴也可以在B站自行搜索,有搬运的视频)

推荐重点看下一、二和代码的demo,其他的是一些case,对我来说价值没那么大

一、提示指南

  • 写提示词的2大原则:

    • 原则1:书写清晰具体的指令        
      • 使用分隔符,帮助chatgpt更好地分辨指令和内容
      • 让chatgpt提供结构化的输出,比如html,json
      • 让chatgpt做任务前,确认当前条件是否满足
      • few-shot prompting,给几个完成任务的成功案例,然后让模型照葫芦画瓢
    • 原则2:给模型一些意见去思考
      • 将任务拆解成几个具体的步骤,让chatgpt按步骤完成任务
      • 让模型自己想出问题的解法,而不是直接给个答案问是否正确。
  • 模型的限制

    • 模型会尝试编造一些不存在的回答
      • 让模型找到相关信文档,再基于文档回答问题。追溯文档可以帮助你快速定位是否会虚假回答

二、迭代

步骤:

  1. 给出清晰具体的prompt --给出一把中世纪椅子的产品说明
  2. 分析为什么结果不符合预期--太长了
  3. 按照修改思路和prompt--将产品说明限定在50字之内
  4. 重复上述过程,直至获得满意的结果

后面的几节课给出了如何使用prompt+chatgpt完成一些常见的NLP任务。基本实例如下,每节课根据目标不同,prompt也要做出相应的修改。

import openai
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file

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


def get_completion(prompt, model="gpt-3.5-turbo", temperature=0): 
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=temperature, 
    )
    return response.choices[0].message["content"]


prompt = f"""
Translate the following English text to Spanish: \ 
```Hi, I would like to order a blender```
"""
response = get_completion(prompt)
print(response)

三、总结

给出的例子是让chatgpt总结用户的评论,

后续修改prompt,让它为物流、定价部门总结评论,那对应的结果也会不同

四、推断

现在可以用chatgpt+prompt做一些文本分类的任务,并且效果还不错

  • 使用chatgpt做情感分析
  • 主题提取
    • 给定对应的主题,让chatgpt判断是这当中的哪一个

五、转换

  • 翻译
    • 让chatgpt翻译一段文本
    • 让chatgpt辨别一段文本属于什么语言
  • 语气的转化
    • 让chatgpt将文本以商业信函的格式重新写一遍。
  • 转化格式
    • 使用chatgpt将json转化为html
  • 语法&拼写检查
    • 使用python 中的redlines来查看前后的区别
from redlines import Redlines

diff = Redlines(text,response)
display(Markdown(diff.output_markdown))

六、扩展

这里介绍了温度,一个模型参数,用以改变模型响应的多样性的。

温度越高,随机性越大。当需要构建一个可靠和可预测的系统时,温度应当为0。当需要更有创意的方式使用模型时,可以使用更高的温度。随着temperature越高,越有可能产生概率更低的结果
调用方式也很简单,在之前的函数中传递temperature参数。

 

response = get_completion(prompt, temperature=0.7)

七、对话机器人

之前的任务中,都是单一消息,单一回复。而在对话机器人中,会有多轮对话,且有多个角色。

一般来说,会有以下三个角色:

 

system:提供了整体的指导方针,比如告诉chatgpt,它是一个助手。用以引导助手,用户感知不到它的存在。

assistant:在我们的感知中,就是chatgpt

user:就是使用者,提出问题,使用prompt的人

可以使用system message让助手扮演某种角色,比如教授小学生的老师。

调用代码:

def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0):
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=temperature, # this is the degree of randomness of the model's output
    )
#     print(str(response.choices[0].message))
    return response.choices[0].message["content"]


messages =  [  
{'role':'system', 'content':'You are an assistant that speaks like Shakespeare.'},    
{'role':'user', 'content':'tell me a joke'},   
{'role':'assistant', 'content':'Why did the chicken cross the road'},   
{'role':'user', 'content':'I don\'t know'}  ]

response = get_completion_from_messages(messages, temperature=1)
print(response)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ctfshow周末大挑战2023/5/12

本周周末大挑战用到的函数讲解 parse_url() 作用:解析URL,返回其组成部分 语法: parse_url ( string $url [, int $component -1 ] ) 参数: url:要解析的 URL。无效字符将使用 _ 来替换。 component: …

Sentinel———隔离和降级

FeignClient整合Sentinel SpringCloud中,微服务调用都是通过Feign来实现的,因此做客户端保护必须整合Feign和Sentinel。 第一步 修改OrderService的application.yml文件,开启Feign的Sentinel功能(消费者服务) feig…

算法基础第二章

算法基础第二章 第二章:数据结构1、链表1.1、单链表(写邻接表:存储图和树)1.2、双链表(优化某些问题) 2、栈与队列2.1、栈2.1.1、数组模拟栈2.1.2、单调栈 2.2、队列2.2.1、数组模拟队列2.2.2、滑动窗口(单调队列的使用…

操作系统实验二 进程(线程)同步

前言 实验二相比实验一难度有所提升,首先得先掌握好相应的理论知识(读者-写者问题和消费者-生产者问题),才能在实验中得心应手。任务二的代码编写可以借鉴源码,所以我们要先读懂源码。 1.实验目的 掌握Linux环境下&a…

linux系统状态检测命令

1、ifconfig命令 用于获取网卡配置于状态状态的等信息: ens33:网卡名称 inet:ip地址 ether:网卡物理地址(mac地址) RX、TX:接收数据包与发送数据包的个数及累计流量 我们也可以直接通过网卡名称查对应信息: 2、查看系统版本的…

设计模式 - 工厂 Factory Method Pattern

文章参考来源 一、概念 创建简单的对象直接 new 一个就完事,但对于创建时需要各种配置的复杂对象例如手机,没有工厂的情况下,用户需要自己处理屏幕、摄像头、处理器等配置,这样用户和手机就耦合在一起了。 可以使代码结构清晰&a…

【人工智能】— 贝叶斯网络

【人工智能】— 贝叶斯网络 频率学派 vs. 贝叶斯学派贝叶斯学派Probability(概率):独立性/条件独立性:Probability Theory(概率论):Graphical models (概率图模型)什么是图模型(Grap…

【每日一题/哈希表运用题】1054. 距离相等的条形码

⭐️前面的话⭐️ 本篇文章介绍【距离相等的条形码】题解,题目标签【哈希表】, 【贪心】,【优先级队列】,展示语言c/java。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞&#…

【计算机网络复习】第四章 网络层 2

源主机网络层的主要工作 路由器网络层的主要工作 目的主机网络层的主要工作 网络层提供的服务 o 屏蔽底层网络的差异,向传输层提供一致的服务 虚电路网络 o 虚电路网络提供面向连接的服务 n 借鉴了电路交换的优点 n 发送数据之前,源主机和目的主机…

MTK耳机识别

MTK耳机检测分为Eint only和EintAccdet 其中主流的是Eint Accdet(multi-key)。 图为MTK 耳机相关电路图的主要部分。 其中,左右声道的33pF主要滤除TDD干扰。串的10R100nf下地电容为低通滤波器。磁珠主要影响的是Fm以及音频THD性能。 Eint:检测耳机是否…

网络基础知识(3)——初识TCP/IP

首先给大家说明的是,TCP/IP 协议它其实是一个协议族,包含了众多的协议,譬如应用层协议 HTTP、 FTP、MQTT…以及传输层协议 TCP、UDP 等这些都属于 TCP/IP 协议。 所以,我们一般说 TCP/IP 协议,它不是指某一个具体的网络…

Casdoor 开始

Casdoor 是一个基于 OAuth 2.0 / OIDC 的中心化的单点登录(SSO)身份验证平台,简单来说,就是 Casdoor 可以帮你解决用户管理的难题,你无需开发用户登录、注册等与用户鉴权相关的一系列功能,只需几个步骤进行…

C++多线程中共享变量同步问题

目录 1、互斥量 (1)std::mutex (2)std::recursive_mutex (3)std::timed_mutex 2、锁管理器 (1)std::lock_guardlk (2)std::unique_locklk &#xff0…

掌控MySQL并发:深度解析锁机制与并发控制

前一篇MySQL读取的记录和我想象的不一致——事物隔离级别和MVCC 讲了事务在并发执行时可能引发的一致性问题的各种现象。一般分为下面3种情况: 读 - 读情况:并发事务相继读取相同的记录。读取操作本身不会对记录有任何影响,不会引起什么问题&…

【C++】C++中的多态

目录 一.多态的概念二.多态的定义及实现2.1虚函数2.2虚函数的重写虚函数重写的两个例外 2.3多态的构成条件2.4C11 override 和final2.5重载、重写、隐藏的对比 三.抽象类3.1概念3.2接口继承和实现继承 四.多态的原理4.1虚函数表4.2多态的原理(1)代码分析(2)清理解决方案 4.3动态…

MySQL高阶语句与连接

目录 高级查询selectDISTINCTWHEREAND ORINBETWEEN通配符与likeORDER BY数学函数聚合函数字符串函数mysql进阶查询GROUP BYHAVING别名子查询EXISTS连接查询inner join(内连接)left join(左连接)right join(右连接)自我连接 高级查询 实验准备: 第一张表&#xff1a…

Cesium入门之六:Cesium加载影像图层(ArcGIS、Bing、Mapbox、高德地图、腾讯地图、天地图等各类影像图)

Cesium加载影像图层 一、ImageryLayer类常用属性常用方法 二、ImageryLayerCollection类常用属性常用方法 三、ImageryProvider类常用属性常用方法 四、ImageryProvider子类1. ArcGisMapServerImageryProvider加载ArcGIS地图服务 2. BingMapsImageryProvider加载BingMap地图服务…

call to non-‘constexpr‘ function

文章目录 call to non-constexpr function概述备注END call to non-‘constexpr’ function 概述 在尝试迁移 openpnp - Smoothieware project 从gcc命令行 MRI调试方式 到NXP MCUXpresso工程. 在加了头文件路径后, 还有一些语法错误. 这和编译器语法有关系. 在运行BuildShe…

阿里云服务器部署flask项目「gunicorn + nginx + 支持https」

最近做了一个微信小程序,使用 flask 实现了对应的后台,上线需要部署到服务器上,之前只是了解并没有全链路试过,靠着网上的资料最终完成部署上线,但中间遇到了较多的一些问题,网上的资料也比较零碎&#xff…

WPF MaterialDesign 初学项目实战(2)首页导航栏样式

其他内容 WPF MaterialDesign 初学项目实战(0):github 项目Demo运行 WPF MaterialDesign 初学项目实战(1)首页搭建 MaterialDesign 确保运行了初学项目实战(0) MaterialDesign给我们提供了很多的样式库&…