【笔记】跟吴恩达和IsaFulford学提示词工程(初级开发者入门课程)

这篇具有很好参考价值的文章主要介绍了【笔记】跟吴恩达和IsaFulford学提示词工程(初级开发者入门课程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 标签: #Prompt #LLM
  • 创建时间:2023-04-28 17:05:45
  • 链接:课程(含JupyterNotebook) ,中文版
  • 讲师:Andrew Ng,Isa Fulford

【笔记】跟吴恩达和IsaFulford学提示词工程(初级开发者入门课程)

阅读提示

这是一篇入门的教程,入门的意思是指大部分内容,可能你都已经知道了,但是知道不等于掌握,Prompt是一门实践经验主义科学,LLM是个黑盒,你只要不断去“实践”才能烂熟于心,所以这篇笔记本身建议仅作为一个“提示”,帮你回顾知识点。你需要点开课程(含JupyterNotebook),然后在里面一行一行地阅读代码、执行代码、修改代码,才能更好地掌握。

笔记

01 Introduction 介绍

  1. LLM分成两个基本大类:base-LLM和Instruction-Tuned-LLM,前者称为基础语言模型,始终基于预训练数据预测下一个单词,后者又称为指令式语言模型,它针对指令进行了微调,使它更可能完成人类的指令。像“翻译”就是一种常见指令。OpenAI的模型中,InstructGPT models列出了它们针对指令优化的模型,表格中也列出了不同的指令微调训练方法,如SFT、FeedME、PPO。

02 Guidelines 准则

  1. 写指令要求清晰和具体,但不等于短。
    • 用定界符如"""、```、---、<>、。它可以防止prompt注入,给LLM产生混乱的理解。
    • 用结构化输出:如直接要求它以HTML或者JSON格式输出。
    • 要求检查:要求LLM先检查是否满足某个条件后,再进行输出,如果条件不满足可以直接告知。
    • 利用少样本学习,展示一个你期望的例子给LLM。
  2. 给模型一些思考的时间,你给它太简单的描述它回答的可能不是你要的,你给它太难的问题它可能也算不出来。
    • 让模型按步骤来解答,第一步你应该怎么答,第二步你应该……最后……。可以设定一些分隔符,并且你在展示你想要的格式的时候,使用这些分隔符,比如你告诉LLM,文本在Text:<>里面……
    • 让模型自己推导出过程,而不仅仅是结果,展示一个带有解题过程的例子给LLM,演示中,让LLM负责判断学生做题是否正确,这时候就需要告诉模型学生的解题思路。

避免模型产生幻觉:要告诉模型先查找相关资料,再根据相关资料来回答问题。(但模型产生幻觉很难避免,也是目前模型研究领域努力的方向)

03 Iterative 提示工程需要持续迭代(编写Prompt就是一个不断修正表达的过程)

编写Prompt的过程是不断迭代的。

基本步骤:编写Prompt、测试、分析为什么、再编写(澄清你的想法)、再测试……,直到满意为止。

示例中,测试了总结营销文案、用50个单词、3个句子、280个字符、增加目标用户、增加产品参数、增加输出格式要求、来表达等,LLM表现得都不错,不过值得注意的是,它们并不会严格按照这个字数限制来,可能会略长一点。

04 Summarizing 总结类的应用(总结、提取信息)

如果你有个电商网站,里面有大量的用户评论,你可以利用“总结”的能力来简化你的工作量。

LLM不仅支持“总结(summarize)”还可以“提取信息(extract)”。

示例中,测试了限制字数、限定主题、关注价格、用提取替换总结,并用一个for循环,以相同的prompt模板来套用不同的内容,以达到批量处理的目的。

05 Inferring 推理类应用(情绪判断、主题推断等)

同样是在用户评论中,你如果想看看有多少积极反馈有多少消极反馈,则需要用到“LLM推理”的能力。

示例中,LLM可以推理用户的情绪(sentiment)、识别情绪类型(如:happy, satisfied, grateful, impressed, content)、提取品牌和商品信息并按JSON格式输出、一次执行多个任务(提取用户评论的商品并推理用户的情绪) 、推断主题、基于推断的主题设计一个提醒程序等。

06 Transforming 转换类应用(翻译、格式转换、纠错等)

将一种语言转换为另一种语言这类应用可以叫做转换类应用。

示例中,翻译一段文字到另一种语言、识别一段文字是哪种语言、同时翻译成两种以上的语言、指定正式还是非正式的语气、指定语言使用的场合比如商务场合的邮件、除了自然语言翻译还可以是json到html这样程序语言的翻译、要求LLM帮你纠正语法错误。

收获一个可以标记文本差异的Python代码:

from IPython.display import display, Markdown, Latex, HTML, JSON
from redlines import Redlines

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

07 Expanding 扩展类应用(拓写)

LLM擅长于将一个简短的文字写得更长,并补充一些修饰,融入一些特定的语言风格。

示例中,LLM表现为一个邮件回复助理的角色。让LLM写一段回复客户的邮件、要求它使用客户来信中的详细信息(让客户感觉比较真实)、可以调整温度值来让回复不那么死板。

请不要将其用于垃圾邮件编写等不负责任的任务。

08 Chatbot 聊天机器人

给OpenAI API发送的消息,role包含system、user和 assistant三种角色。system设定的是全局的风格、限制等信息,user表示人类,assistant表示LLM。

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

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)

示例展示了一个可交互的GUI:


def collect_messages(_):
    prompt = inp.value_input
    inp.value = ''
    context.append({'role':'user', 'content':f"{prompt}"})
    response = get_completion_from_messages(context) 
    context.append({'role':'assistant', 'content':f"{response}"})
    panels.append(
        pn.Row('User:', pn.pane.Markdown(prompt, width=600)))
    panels.append(
        pn.Row('Assistant:', pn.pane.Markdown(response, width=600, style={'background-color': '#F6F6F6'})))
 
    return pn.Column(*panels)


import panel as pn  # GUI
pn.extension()

panels = [] # collect display 

context = [ {'role':'system', 'content':"""
You are OrderBot, an automated service to collect orders for a pizza restaurant. \
You first greet the customer, then collects the order, \
and then asks if it's a pickup or delivery. \
You wait to collect the entire order, then summarize it and check for a final \
time if the customer wants to add anything else. \
If it's a delivery, you ask for an address. \
Finally you collect the payment.\
Make sure to clarify all options, extras and sizes to uniquely \
identify the item from the menu.\
You respond in a short, very conversational friendly style. \
The menu includes \
pepperoni pizza  12.95, 10.00, 7.00 \
cheese pizza   10.95, 9.25, 6.50 \
eggplant pizza   11.95, 9.75, 6.75 \
fries 4.50, 3.50 \
greek salad 7.25 \
Toppings: \
extra cheese 2.00, \
mushrooms 1.50 \
sausage 3.00 \
canadian bacon 3.50 \
AI sauce 1.50 \
peppers 1.00 \
Drinks: \
coke 3.00, 2.00, 1.00 \
sprite 3.00, 2.00, 1.00 \
bottled water 5.00 \
"""} ]  # accumulate messages


inp = pn.widgets.TextInput(value="Hi", placeholder='Enter text here…')
button_conversation = pn.widgets.Button(name="Chat!")

interactive_conversation = pn.bind(collect_messages, button_conversation)

dashboard = pn.Column(
    inp,
    pn.Row(button_conversation),
    pn.panel(interactive_conversation, loading_indicator=True, height=300),
)

dashboard

这里需要注意的是,因为context是全局的,所以每一次消息都会带上之前的历史消息,并发送给服务端。

【笔记】跟吴恩达和IsaFulford学提示词工程(初级开发者入门课程)

09 Conclusion 结论

  1. 原则:
    1. 写指令要求清晰和具体。
    2. 给模型一些思考的时间。
  2. 提示的开发过程是持续迭代的。
  3. 能力:总结、推理、转换、扩展。

本文最初我发布在了 https://volnet.hashnode.dev/gpt-prompt-dev-deeplearningai 说是发布,也就是自己写着玩,连那个blog都是看着好奇随手注册的,不过今天看到很多割韭菜的公众号默默拿走了,想想,既然有人需要,还是发到我永远最爱的博客园吧~

转载请注明出处:https://www.cnblogs.com/volnet/p/gpt-prompt-dev-deeplearningai.html文章来源地址https://www.toymoban.com/news/detail-435542.html

到了这里,关于【笔记】跟吴恩达和IsaFulford学提示词工程(初级开发者入门课程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 吴恩达与OpenAI官方合作的ChatGPT提示工程课程笔记

    🥸 下述代码均在煮皮特上运行喔 Base LLM:基于文本训练数据来预测做“文字接龙” Instruction Tuned LLM(指令调整型LLM):接受了遵循指示的培训,可以根据提前培训的输入输出对结果进行调整 编写明确和具体的指令(明确 ≠ 短) 策略一:用分隔符清楚的指示输入的不同部分

    2024年02月07日
    浏览(36)
  • ChatGPT prompt engineering (中文版)笔记 |吴恩达ChatGPT 提示工程

    出处:https://download.csdn.net/download/weixin_45766780/87746321 感谢中文版翻译https://github.com/datawhalechina/prompt-engineering-for-developers/tree/main/content 国内 == 需要对openapi的endpoint做一个反向代理,并修改本地openai包的源代码== 如下图: completion 原则一:编写清晰、具体的指令 你应该通过提供

    2024年02月03日
    浏览(42)
  • 【简单入门】ChatGPT prompt engineering (中文版)笔记 |吴恩达ChatGPT 提示工程

    出处:https://download.csdn.net/download/weixin_45766780/87746321 感谢中文版翻译https://github.com/datawhalechina/prompt-engineering-for-developers/tree/main/content 国内 == 需要对openapi的endpoint做一个反向代理,并修改本地openai包的源代码== 如下图: completion 原则一:编写清晰、具体的指令 你应该通过提供

    2024年02月05日
    浏览(37)
  • 吴恩达提示工程实战演练 - 提示原则及其相关策略

    ChatGPT爆火之后,与大语言模型对话能力(prompt engineering:提示工程)成为一项稀缺技能,现在招聘市场专业的prompt工程师年薪达到几十万甚至百万。基于此,吴恩达(前百度首席科学家,谷歌大脑负责人)联合openAI公司推出一套专业课程,讲解如何与ChatGPT等大模型对话,接

    2024年02月17日
    浏览(29)
  • 吴恩达《面向开发者的提示词工程》

    Ref: 【中英字幕 | P01 Introduction】2023吴恩达新课《面向开发者的提示词工程》_哔哩哔哩_bilibili 对应的笔记 ChatGPT Prompt - 知乎 本课程主要介绍指令微调LLM的最佳实践 在大型语言模型或LLM的开发中,大体上有两种类型的LLM,我将其称为 Base LLM  和  Instruction Tuned LLM. 下面分别

    2024年02月10日
    浏览(26)
  • 吴恩达提示工程实战演练 - 如何引导GPT主动思考

    策略:明确完成任务所需的步骤 接下来的任务我想让GPT处理一段文本,且需要完成一下一系列任务: 1)将文本总结成摘要  2)将摘要翻译成英文 3)提取英文摘要中的名字 4)将翻译的英文摘要和提取的名字以JSON格式输出 每一步任务都是紧密相关的,且都是依赖上一步任务

    2024年02月09日
    浏览(41)
  • 【AI提示】ChatGPT提示工程课程(吴恩达&OpenAI)转换文本(中文chatgpt版)

    设置 翻译 通用翻译器 语调变换 格式转换 拼写检查/语法检查。 转换 在本笔记中,我们将探索如何使用大型语言模型进行文本转换任务,例如语言翻译、拼写和语法检查、语气调整和格式转换。 ChatGPT 使用多种语言的资源进行训练。这使模型能够进行翻译。以下是如何使用

    2024年02月07日
    浏览(69)
  • 【AI提示】ChatGPT提示工程课程(吴恩达&OpenAI)推理文本(中文chatgpt版)

    设置 Setup 产品评论文本 情感(正面/负面)Sentiment (positive/negative) 识别情绪类型 从客户评论中提取产品和公司名称 一次完成多项任务 Inferring topics 推断主题 为某些主题制作新闻提醒 Inferring 推理 在本课中,您将从产品评论和新闻文章中推断情绪和主题。 设置 Setup 产品评论

    2024年02月07日
    浏览(72)
  • 玩转ChatGPT:吴恩达/OpenAI合作教程《面向开发者的ChatGPT提示工程》

    一、写在前面 最近,吴恩达与Close Open AI合作出了一个教程《面向开发者的ChatGPT提示工程》,第一时间就观摩了,有些体会,现在把个人觉得有意思的搬运过来。 我的机器学习入门就是看的吴恩达的教程!大佬长得像冯巩,哈哈哈。 原版视频地址: https://www.deeplearning.ai/sh

    2024年02月02日
    浏览(33)
  • 吴恩达 Chatgpt prompt 工程--1.Guidelines

    课程链接 Setup Prompting 原则 原则1: Write clear and specific instructions(写清楚具体的说明) 原则 2: Give the model time to “think”(给模型时间“思考”) 策略(原则1) 策略 1: Use delimiters to clearly indicate distinct parts of the input(使用分隔符清楚地指示输入的不同部分) 分隔符可以是任

    2024年02月03日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包