Deeplearing.AI 课程笔记(DLAI)

news2024/11/16 19:42:23

在这里插入图片描述

课程地址: https://learn.deeplearning.ai/chatgpt-prompt-eng
@OpenAI & @ Deeplearing.ai

Lesson 2:准则

Prompting 的两个基本原则:

  1. write clear and specific instructions,第一原则是写清楚提示并给出具体说明
  2. to give the model time to think,第二个原则是给予模型思考时间

需要注意的是:

  • clear 并不等于 short,也就是说清楚的提示内容并不一定是简短的

Principal 1 - write clear and specific instructions

技巧1: 使用界定符,以避免注入

eg:使用 ``` 来包裹用户的提示内容,以避免提示注入 prompt injections

  • Triple quotes: """
  • Triple backticks: ```
  • Triple dashes: ---
  • Angle brackets: <>
  • XML Tags: <tag> </tag>

示例内容

text = f"""
You should express what you want a model to do by \ 
providing instructions that are as clear and \ 
specific as you can possibly make them. \ 
This will guide the model towards the desired output, \ 
and reduce the chances of receiving irrelevant \ 
or incorrect responses. Don't confuse writing a \ 
clear prompt with writing a short prompt. \ 
In many cases, longer prompts provide more clarity \ 
and context for the model, which can lead to \ 
more detailed and relevant outputs.
"""
prompt = f"""
Summarize the text delimited by triple backticks \ 
into a single sentence.
```{text}```
"""
response = get_completion(prompt)
print(response)


OutPut:Clear and specific instructions should be provided to guide a model towards the desired output, and longer prompts can provide more clarity and context for the model, leading to more detailed and relevant outputs.

技巧2: 指定输出的内容格式

指定输出的内容格式为 HTMLJSON

prompt = f"""
Generate a list of three made-up book titles along \ 
with their authors and genres. 
Provide them in JSON format with the following keys: 
book_id, title, author, genre.
"""
response = get_completion(prompt)
print(response)

技巧3: 增加判断

检查条件是否都已经满足 Check whether conditions are satisified, Check assumptions required to do the task, indicate this and kind of stop short of a full task completion attempt.

text_1 = f"""
Making a cup of tea is easy! First, you need to get some \ 
water boiling. While that's happening, \ 
grab a cup and put a tea bag in it. Once the water is \ 
hot enough, just pour it over the tea bag. \ 
Let it sit for a bit so the tea can steep. After a \ 
few minutes, take out the tea bag. If you \ 
like, you can add some sugar or milk to taste. \ 
And that's it! You've got yourself a delicious \ 
cup of tea to enjoy.
"""
prompt = f"""
You will be provided with text delimited by triple quotes. 
If it contains a sequence of instructions, \ 
re-write those instructions in the following format:

Step 1 - ...
Step 2 - …
…
Step N - …

If the text does not contain a sequence of instructions, \ 
then simply write \"No steps provided.\"

\"\"\"{text_1}\"\"\"
"""
response = get_completion(prompt)
print("Completion for Text 1:")
print(response)

技巧4: 少样本提示 Few-shot prompting

prompt = f"""
Your task is to answer in a consistent style.

<child>: Teach me about patience.

<grandparent>: The river that carves the deepest \ 
valley flows from a modest spring; the \ 
grandest symphony originates from a single note; \ 
the most intricate tapestry begins with a solitary thread.

<child>: Teach me about resilience.
"""
response = get_completion(prompt)
print(response)

Principal 2 - give the model time to think

有些时候,如果您给模型一个太复杂的任务,在短时间内或用少量的单词完成,它可能作出不正确的猜测。如果模型在匆忙地得出错误的结论,您应该尝试重新构思查询,要求在模型提供最终答案之前请求一系列相关推理。

为避免模型由于时间限制或语言表达能力限制而过快得出错误结论,我们应该:

  1. 重新构造查询,要求模型提供一系列相关的推理过程,而不仅仅是最终答案。
  2. 避免给模型过于复杂的任务,超出其在有限时间和语言条件下解决的能力。 否则模型可能会猜测,导致错误结论。
  3. 给模型更多时间和更宽松的语言条件来推理和表达,避免其"赶时间猜测"。

技巧1: 给出完成任务所需的步骤

Step1: ...
Step2: ...
...
StepN: ...

演示示例:

prompt_2 = f"""
Your task is to perform the following actions: 
1 - Summarize the following text delimited by 
  <> with 1 sentence.
2 - Translate the summary into French.
3 - List each name in the French summary.
4 - Output a json object that contains the 
  following keys: french_summary, num_names.

Use the following format:
Text: <text to summarize>
Summary: <summary>
Translation: <summary translation>
Names: <list of names in Italian summary>
Output JSON: <json with summary and num_names>

Text to summarize : <{text}>
"""
response = get_completion(prompt_2)
print("\nCompletion for prompt 2:")
print(response)

技巧2: 让模型自己找解决方案

Instruct the model to work out its own solution before rushing to a conclusion,指示模型在匆忙得出结论之前先解决自己的解决方案。

我们明确指示模型在得出结论之前先解决自己的解决方案时,有时会得到更好的结果。这与我们之前讨论的给模型时间来真正解决问题而不仅仅是确定答案是否正确的想法是相同的。

演示示例:

prompt = f"""
Your task is to determine if the student's solution \
is correct or not.
To solve the problem do the following:
- First, work out your own solution to the problem. 
- Then compare your solution to the student's solution \ 
and evaluate if the student's solution is correct or not. 
Don't decide if the student's solution is correct until 
you have done the problem yourself.

Use the following format:
Question:
```
question here
```
Student's solution:
```
student's solution here
```
Actual solution:
```
steps to work out the solution and your solution here
```
Is the student's solution the same as actual solution \
just calculated:
```
yes or no
```
Student grade:
```
correct or incorrect
```

Question:
```
I'm building a solar power installation and I need help \
working out the financials. 
- Land costs $100 / square foot
- I can buy solar panels for $250 / square foot
- I negotiated a contract for maintenance that will cost \
me a flat $100k per year, and an additional $10 / square \
foot
What is the total cost for the first year of operations \
as a function of the number of square feet.
```
Student's solution:
```
Let x be the size of the installation in square feet.
Costs:
1. Land cost: 100x
2. Solar panel cost: 250x
3. Maintenance cost: 100,000 + 100x
Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000
```
Actual solution:
"""
response = get_completion(prompt)
print(response)

仔细看上面这个示例,会发现很有意思,会要求模型先用自己的方式来作出解答,然后对比给出的结果再做判断,其中还特别强调了 Don't decide if the student's solution is correct until you have done the problem yourself.

模型的局限性

Makes statements that sound plausible but are not actually true.

幻觉——虚构内容,尽管模型在训练过程中接触到了大量知识,但它并没有完美地记住所看到的信息,因此它不太了解其知识的边界。这意味着它可能会尝试回答一些关于晦涩主题的问题,并且可能会编造一些听起来合理的但实际上并不真实的事情。我们将这些虚构的想法称为幻觉。

为了减少幻觉,当您希望模型基于文本生成答案时,可以采取的另一个策略是要求模型首先从文本中找到任何相关引用,然后要求模型使用这些引用来回答问题。

让答案能够追溯到源文件通常对于减少幻觉非常有帮助。

Lesson 3:迭代提示 iterative prompt development

Idea -- Implement --> Implementation(code/data)
Implementation(code/data) -- Train model --> Experimental result
Error Analysis -- Change --> Idea

在这里插入图片描述

Prompt guidelines

  • Be clear and specific
  • Analyze why result does not give desired output
  • Refine the idea and the prompt
  • Repeat

迭代提示的方式可以用于的场景包括:

  1. Output 过长,Limit the number of words/sentences/characters。可以通过迭代增加输出的内容限制(可以是文字数量/ words、可以是字符数量/ characters,甚至可以是句子的数量/ sentences);
  2. Output 的重点调整,Text focuses on the wrong details, Ask it to focus on the aspects that are relevant to the intended audience。可以通过迭代来调整输出中要重点关注的内容,可以是基于场景、面向的用户群体、内容中需要包含特定内容等;
  3. Description needs a table of dimensions, Ask it to extract information and organize it in a table。

总结的整个迭代的过程(Iterative Process)如下:

  1. Try something
  2. Analyze where the result does not give what you want
  3. Clarify instructions, give more time to think
  4. Refine prompts with a batch of examples

Lesson 4:归纳和总结 summarize

当今世界有如此多的文本,我们几乎没有足够的时间阅读我们希望有时间阅读的所有内容。所以一个我见过的最令人兴奋的应用程序大型语言模型就是用它来总结文本。

summarize 的用法包括:

  1. 总结和归纳文字
  2. 限定返回内容长度(words, characters, sentences etc.)
  3. 限定返回内容的重点
  4. 多段内容的总结和归纳

通过归纳和总结,可以让人们能够快速的了解大长度短内容的重点,对该内容有个大概的了解,当需要精读、或者需要了解更多详情的时候,用户可以选择去查看原文,是一个是很便利、高效的阅读用具。

个人觉得有点类似于之前得到的每天读本《电子书》,或者是视频网站上流行的 5 分钟看完一部电影的感觉。

Lesson 5:推断 inferring

通过推断,LLM 可以从文本中提取标签、名字等信息,并通过这些信息来判断文本中所包含的情感信息(positive & negative)。

相比传统的机器学习方法,LLM 这种方式,可以节省包括标注数据、训练多个模型等在内的很多繁琐的工作,也能够快速的判断出内容中的情感倾向、信息。

inferring 的用法包括:

  1. 情感判断(positive / negative)
  2. 情绪表达(Identify types of emotions)
  3. 判断是否包含特定情绪(eg: Identify ange)
  4. 信息提取(eg: Extract product and company name from customer reviews)
  5. 以上 4 类任务的组合,即通过一个 prompt 完成以上 4 个任务
  6. 话题总结(inferring topics),有点类似于 summarize,但总结出来的内容可能会比 summarize 更为抽象一点

Lesson 6:转换 Transforming

大型语言模型非常擅长将其输入转换为不同的格式,例如输入一种语言的文本和转换它或将其翻译成不同的语言,或者帮助拼写和语法纠正,帮助你纠正一段可能不是很符合语法的文本,甚至转换格式,比如将 HTML 转换为 JSON。

大语言模型的一个主要功能是进行不同形式的"格式转换"或"翻译"。它可以在语言层面上翻译文本,可以在语法和拼写层面上"校正"文本,甚至可以在web格式等层面上转换输入格式。这些都是大语言模型的显著长处和主要用途。大语言模型擅长"翻译"、“转换"和"校正”,通过在不同层面展现语言表达能力,来实现人们在这些应用场景中的需求。

transforming 的用法包括:

  1. 翻译(Translation),不同语种的翻译、语言检测等
  2. 通用翻译(Universal Translator),于翻译类似,可以同时翻译多个语种的内容
  3. 语气模仿(Tone Transformation),可以根据需要来模仿不同的口吻进行表达(比如模仿律师的口吻、正式文书的口吻等)
  4. 格式转换(Format Conversion),不同格式之间的转换,比如 HTML 2 Json,HTML 2 Markdown 等
  5. 拼写/语法检查(Spellcheck/Grammar check),通过 proofreadproofread and correct 命令来对文本进行拼写和语法检查,并提供纠正后的结果

Lesson 7:扩展/发散 Expanding

“发散/扩展”任务充分展示了大语言模型强劲的语言生成能力,以及这种能力在拓展人类思考、激发灵感和创意方面的应用潜力。我们可以利用大语言模型强大的语言生成能力,自动扩展和丰富我们的初步思路、话题和提示。

  1. “发散/扩展”是一种语言生成任务,要求模型基于较短的文本输入生成较长而完整的语言表达。
  2. 输入可以是一组说明,一个话题列表等较短的文本。
  3. 可以要求模型产生较长的语言输出,如一封电子邮件,一篇文章等。
  4. 通过发散我们可以与语言模型一起进行头脑风暴,产生更丰富的话题和思路。

关于 temperature

在 ChatGPT 的 API 中,temperature 这个参数是用来控制模型响应的随机性的。具体来说:

  • temperature 值越高,模型的响应越随机,可能产生更多样化和意想不到的回复。这会使对话显得更自然和人性化。
  • temperature 值越低,模型的响应越 deterministic, 回复会更加标准和预期。这会使对话显得更一致和可预测。

所以通过调整 temperature 参数的值,可以在随机性和一致性之间找到平衡,产生更自然的对话效果。常见的 temperature 设置有:

  • 0:用于对可靠性、可预测性有较高要求的任务。
  • 0.7 - 0.9: 产生较自然的对话,有一定的随机性。这是 ChatGPT 默认的参数设置。
  • 1.0 - 1.2:更高的随机性,可能产生更意想不到的回复。
  • 0.5 - 0.7: 更低的随机性,回复更加标准和一致。

总之,temperature 参数给了 ChatGPT 模型一定的自由度和个性,这有助于产生更人性化的交互体验。通过调整这个参数,可以实现不同的对话风格。

Lesson 8:聊天机器人ChatBot

构建各类聊天机器人是大语言模型功能的一个重要应用方向。它们需要理解复杂语言输入并作出相应响应,这正是大语言模型的专长所在。通过聊天的方式与针对特定任务或行为进行个性化或专门化的聊天机器人进行对话。

在这里插入图片描述

  1. 我们可以利用大语言模型的语言理解和生成能力来构建聊天机器人。
  2. 这种聊天机器人可以在各种场景中发挥作用,如客户服务或餐馆点单等。

结尾 Conclusion

在这里插入图片描述

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

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

相关文章

频谱分辨率、功率密度谱psd

问题&#xff1a; 频谱分辨率的作用是什么&#xff1f; 如频谱分辨率为3HZ,其物理意义是什么 功率密度谱是什么&#xff1f; 功率密度谱和功率的关系是什么&#xff1f; 频率分辨率的定义 DFT后频域相邻刻度之间的实际频率之差&#xff0c;还一般解释为能够分辨出的两个最小的…

Zotero PDF翻译插件自定义翻译功能实现

Zotero PDF翻译插件自定义翻译功能实现 一 需求二、实现演示三、Zetero翻译插件的功能定制3.1 开发环境3.2 开发步骤3.3 插件开发实现3.3.1 添加服务3.3.2 编写任务处理程序3.3.3 导入任务处理程序3.3.4 添加服务名称3.3.5 构建 四、服务器的开发4.1 环境4.2 代码实现 一 需求 …

java开发——shell编程

java开发——shell编程 shell是什么东西&#xff1f;java程序员为什么要学习Shell?Shell的解析器第一个Shell脚本Shell中的变量Shell的运算符Shell的条件判断Shell的if语句Shell的case语句Shell的for语句Shell的while语句Shell控制台输入Shell的系统函数Shell自定义函数Shell工…

MySQL InnoDB集群部署及管理全教程(二)

MySQL InnoDB集群部署及管理全教程&#xff08;一&#xff09;_Doker 多克的博客-CSDN博客 四、 部署生产 InnoDB 集群 在生产环境中工作时&#xff0c;组成InnoDB集群的MySQL服务器实例作为网络的一部分在多台主机上运行&#xff0c;而不是在第6.8节“AdminAPI MySQL Sandbo…

Unsupervised Learning(无监督学习)

目录 Introduction Clustering&#xff08;聚类&#xff09; Dimension Reduction&#xff08;降维&#xff09; PCA&#xff08;Principle component analysis&#xff0c;主成分分析&#xff09; Word Embedding&#xff08;词嵌入&#xff09; Matrix Factorization(矩…

Linux之用户管理

目录 Linux之用户管理 添加新用户 --- useradd命令 语法格式 常用选项 案例 为用户账号设置密码 -- passwd 语法格式 选项及作用 案例 修改用户属性 --- usermod命令 语法格式 选项及作用 案例 删除用户账号 --- userdel命令 语法格式 选项及作用 案例 用户切换 …

imu绘制轨迹

本文作者感谢武汉大学卫星导航定位技术研究中心多源智能导航实验室(i2Nav)牛小骥教授团队开源的KF-GINS软件平台。 首先声明&#xff0c;仅仅是实现&#xff0c;实际应用意义不大 这套算法利用EKF更新误差并且补偿到状态更新&#xff0c;如果没有gps信号时&#xff0c;利用im…

jetpack compose —— Card

jetpack compose Card 组件提供了一种简单而强大的方式来呈现卡片式的用户界面。 一、什么是 Card 组件 二、基本用法 三、属性和修饰符 四、嵌套使用和复杂布局 一、什么是 Card 组件 Card 是 Jetpack Compose 中的一个常用组件&#xff0c;用于呈现卡片式的用户界面。它…

量化投资 现代投资组合理论(MPT)

量化投资 现代投资组合理论&#xff08;MPT&#xff09; 问题&#xff1a;构建投资组合&#xff0c;达到目标收益率的同时拥有最小的 risk exposure. 有 J J J 个可交易证券&#xff0c;期望收益率为 R [ R 1 , ⋯ , R j ] T R[R_1,\,\cdots,\,R_j]^T R[R1​,⋯,Rj​]T&…

小红书数据洞察!父亲节将临,3大种草方式打动消费者

父亲节即将来临&#xff0c;各大社交平台陆陆续续开始讨论。品牌自然也不会错过此机&#xff0c;走心宣传。那么&#xff0c;今年的父亲节&#xff0c;有哪些热门内容呢&#xff1f;品牌如何点燃消费热情、提升形象&#xff1f;通过小红书数据和关键词分析&#xff0c;我们进一…

基于阿里云 Serverless 容器服务轻松部署企业级 AI 应用

作者&#xff1a;元毅、坤仑 数禾科技 AI 模型服务基于云原生架构&#xff0c;为不同业务环节提供智能决策支持。随着业务的快速发展&#xff0c;摆在数禾面前的难题是支撑模型计算的底层应用资源无法根据请求量来调整机器资源支持运算能力。同时&#xff0c;随着模型在线推理…

医疗行业的新选择:智能医疗管理模板

随着社会的发展&#xff0c;医疗行业也在不断地进步与发展&#xff0c;信息化已经成为医疗行业的重要一环。智能医疗管理应用作为新型医疗管理工具&#xff0c;已经成为中小型医院、门诊、美容机构等企业的必备软件之一。该应用包括患者管理、预约管理、诊断管理、住院管理、财…

Qt推荐的多线程的理解

目的 在Qt4.8之后&#xff0c;Qt多线程的写法最好还是通过QObject来实现&#xff0c;和线程的交互通过信号和槽(实际上其实是通过事件)联系。 用QObject来实现多线程有个非常好的优点&#xff0c;就是默认就支持事件循环&#xff08;Qt的许多非GUI类也需要事件循环支持&#x…

js执行顺序:

这篇笔记摘录来源&#xff1a; &#x1f449;我是javascript&#xff0c;2分钟彻底弄懂我的执行机制&#xff1f;【JavaScript教程】_哔哩哔哩_bilibili &#x1f449;js执行顺序_前端小白&#xff0c;请多指教的博客-CSDN博客 目录 面试题&#xff1a; 一、单线程 二、…

十年软件测试经验,我的成长之道

有很多小伙伴问&#xff0c;测试职业的天花板是不是很低&#xff1f; 在回答这个问题之前&#xff0c;我想请大家先想一下&#xff0c;当初自己为什么会选择测试这个职业&#xff1f;入门门槛低&#xff1f;不需要写代码&#xff1f;工作比开发轻松&#xff1f;还是其他。这个…

科技政策 | 工业和信息化部办公厅关于组织申报2023年跨行业跨领域工业互联网平台的通知

原创 | 文 BFT机器人 6月1日工业和信息化部办公厅发布关于组织申报2023年跨行业跨领域工业互联网平台的通知&#xff1b;旨在贯彻《国务院关于深化“互联网先进制造业”发展工业互联网的指导意见》&#xff0c;落实《工业互联网创新发展行动计划&#xff08;2021-2023年&#…

还有多少公司在使用H5?不怕被破解吗?

H5还有人在用吗 近几天&#xff0c;老板让我调查一下现在市面上H5的使用现状。粗略地调查了一下&#xff0c;发现现在使用H5的真不多了&#xff0c;但是还是有人在用H5的&#xff0c;原因无非一是成本低&#xff0c;相比户外广告&#xff0c;H5制作费用根本不值一提&#xff1…

Delta 一个新的 git diff 对比显示工具

目录 介绍git diff 介绍delta介绍 一、安装1.下载 Git2.下载 delta3.解压4.修改配置文件5. 修改主题6.其他配置和说明 二、对比命令1.在项目中 git diff 常用命令2.对比电脑上两个文件3.对比电脑上的两个文件夹 三、在Git 命令行中使用效果四、在idea 的Terminal命令行中使用效…

展览展会邀请媒体现场报道需要注意什么?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 真开心今天与大家分享展览展会邀请媒体的一些经验&#xff0c;行业复苏&#xff0c;各行各业都充满了活力&#xff0c;每天胡老师都会接到大大小小展会邀请媒体报道的需求&#xff0c;那…

终端数据防泄漏

场景描述 科技研发类公司在日常工作中&#xff0c;存在员工对源代码数据有意或者无意的传播。软件企业作为以源代码数据为核心资产的行业&#xff0c;如果数据安全管理不规范&#xff0c;会出现员工把核心数据一锅端&#xff0c;使企业失去竞争力&#xff0c;造成不可估计的损…