当前位置:   article > 正文

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

吴恩达 提示词工程

目录

一、提示指南

写提示词的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也要做出相应的修改。

  1. import openai
  2. import os
  3. from dotenv import load_dotenv, find_dotenv
  4. _ = load_dotenv(find_dotenv()) # read local .env file
  5. openai.api_key = os.getenv('OPENAI_API_KEY')
  6. def get_completion(prompt, model="gpt-3.5-turbo", temperature=0):
  7. messages = [{"role": "user", "content": prompt}]
  8. response = openai.ChatCompletion.create(
  9. model=model,
  10. messages=messages,
  11. temperature=temperature,
  12. )
  13. return response.choices[0].message["content"]
  14. prompt = f"""
  15. Translate the following English text to Spanish: \
  16. ```Hi, I would like to order a blender```
  17. """
  18. response = get_completion(prompt)
  19. print(response)

三、总结

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

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

四、推断

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

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

五、转换

  • 翻译
    • 让chatgpt翻译一段文本
    • 让chatgpt辨别一段文本属于什么语言
  • 语气的转化
    • 让chatgpt将文本以商业信函的格式重新写一遍。
  • 转化格式
    • 使用chatgpt将json转化为html
  • 语法&拼写检查
    • 使用python 中的redlines来查看前后的区别
  1. from redlines import Redlines
  2. diff = Redlines(text,response)
  3. display(Markdown(diff.output_markdown))

六、扩展

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

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

 

response = get_completion(prompt, temperature=0.7)

七、对话机器人

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

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

 

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

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

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

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

调用代码:

  1. def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0):
  2. response = openai.ChatCompletion.create(
  3. model=model,
  4. messages=messages,
  5. temperature=temperature, # this is the degree of randomness of the model's output
  6. )
  7. # print(str(response.choices[0].message))
  8. return response.choices[0].message["content"]
  9. messages = [
  10. {'role':'system', 'content':'You are an assistant that speaks like Shakespeare.'},
  11. {'role':'user', 'content':'tell me a joke'},
  12. {'role':'assistant', 'content':'Why did the chicken cross the road'},
  13. {'role':'user', 'content':'I don\'t know'} ]
  14. response = get_completion_from_messages(messages, temperature=1)
  15. print(response)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/291528
推荐阅读
相关标签
  

闽ICP备14008679号