• Open AI ChatGPT Prompt 学习之基础篇


    ☕ 碎碎念

    2023 年,最火的可能就是 openAI 了,其组织代表的产品 chatGTP,相信大家已经有所耳闻。不少同学已经开始着手使用,并截图晒出 ChatGPT 是多么得智能与神奇。而有的同学在使用之后觉得有点差强人意,指出顶多算是一个比较聪明的聊天机器人而已。

    其实,ChatGPT 的难点,在于 Prompt(提示词)的编写。从 ChatGPT 发布之后,如何写好 Prompt 已经成为了一个分水岭。熟练掌握 Prompt 编写的人,能够很快让 ChatGPT 理解需求,并很好的执行任务。

    只要你的 Prompt 写的足够好,ChatGPT 可以帮你快速完成很多工作,包括写爬虫脚本、金融数据分析、文案润色与翻译等等,并且这些工作还做的比一般人出色。

    📝 总结

    通过学习,我认为编写 prompt 是一个自我完善、优化的过程。最开始我们可以从简单开始,比如一句简单的指令。当我们得到 AI 的反馈后,我们可以逐步去调教优化迭代 prompt,直到 AI 给到我们满意的反馈为止。

    在实际操作中我发现,只要通过一个好的迭代过程来不断改进 Prompt,那么就能够得到一个适合任务的 Prompt,最后 AI 会给到我期望的回答以完成任务。这个成就感是特别强烈的。

    最终,一个优秀的 prompt,通常可以从这种通用性比较强的套路模板开始,然后逐步优化迭代:

    指令:想要模型执行的特定任务或指令。
    
    上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。
    
    输入数据:用户输入的内容或问题。
    
    输出指示:指定输出的类型或格式。
    

    使用

    🌈 编写 Prompt 的原则

    1. 编写清晰、具体的指令
    • 使用分隔符清晰地表示输入的不同部分,分隔符可以是:```,"",<>,""
    • 要求一个结构化的输出,可以是 Json、HTML 等格式
    • 要求模型检查是否满足条件
    • 提供少量示例
    1. 给模型时间去思考
    • 指定完成任务所需的步骤
    • 指导模型在下结论之前找出一个自己的解法

    🎋 举例

    编写清晰、具体的指令

    1.使用分隔符清晰地表示输入的不同部分,分隔符可以是:```,"",<>,""

    把用三个双引号括起来的文本总结成一句话:
    
    """
    你应该提供尽可能清晰、具体的指示,以表达你希望模型执行的任务。这将引导模型朝向所需的输出,并降低收到无关或不正确响应的可能性。不要将写清晰的提示与写简短的提示混淆。在许多情况下,更长的提示可以为模型提供更多的清晰度和上下文信息,从而导致更详细和相关的输出。
    """
    

    2.要求一个结构化的输出,可以是 Json、HTML 等格式

    请生成包括书名、作者和类别的三本虚构书籍清单,并以 JSON 格式提供,其中包含以下键:book_id、title、author、genre。
    

    3.要求模型检查是否满足条件

    如果任务做出的假设不一定满足,我们可以告诉模型先检查这些假设,如果不满足,指示并停止执行。

    您将获得由三个双引号括起来的文本。如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:
    
    第一步 - ...
    第二步 - ...
    ...
    第N步 - ...
    
    如果文本中不包含一系列的指令,则直接写"未提供步骤""""
    今天阳光明媚,鸟儿在歌唱。这是一个去公园散步的美好日子。鲜花盛开,树枝在微风中轻轻摇曳。人们外出享受着这美好的天气,有些人在野餐,有些人在玩游戏或者在草地上放松。这是一个完美的日子,可以在户外度过并欣赏大自然的美景。
    """
    

    4.要求模型检查是否满足条件

    在要求模型执行实际任务之前,提供给它少量成功执行任务的示例,这样 AI 会变得更加聪明

    你的任务是以一致的风格回答问题。
    
    <孩子>: 耐心是什么
    
    <祖父母>: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符开始;最复杂的挂毯以一根孤独的线开始编织。
    
    <孩子>: 韧性是什么
    

    给模型时间去思考

    1.指定完成任务所需的步骤

    当一句话不能准确描述出需求时,我们可以通过列举 1234 的方式来让 AI 逐步进行

    步骤:
    """
    1. 用一句话概括下面用<>括起来的文本。
    2. 将摘要翻译成英语。
    3. 在英语摘要中列出每个名称。
    4. 输出一个 JSON 对象,其中包含以下键:English_summary,num_names。
    """
    请使用以下格式输出:
    """
    文本:<要总结的文本>
    摘要:<摘要>
    翻译:<摘要的翻译>
    名称:<英语摘要中的名称列表>
    输出 JSON:<带有 English_summary 和 num_names 的 JSON>
    """
    文本:
    <在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。他们一边唱着欢乐的歌,一边往上爬,然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。虽然略有些摔伤,但他们还是回到温馨的家中。尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。>
    

    2.指导模型在下结论之前找出一个自己的解法

    在判断正误时,可以让 AI 自己先思考解决方法,再进行对比,这样我们会得到更好的结果

    请判断学生的解决方案是否正确,请通过如下步骤解决这个问题。
    步骤:
    """
    1. 首先,根据学生的解决方案格式自己先解决问题。
    2. 然后将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在自己完成问题之前,请勿决定学生的解决方案是否正确。
    """
    使用以下格式输出:
    """
    问题:问题文本
    学生的解决方案:学生的解决方案文本
    你的解决方案和步骤:你的解决方案文本和步骤文本
    学生的解决方案和你的解决方案是否相同:是或否
    学生的成绩:正确或不正确
    """
    问题:
    """
    我正在建造一个太阳能发电站,需要帮助计算财务:
    - 土地费用为每平方英尺100美元
    - 我可以以每平方英尺250美元的价格购买太阳能电池板
    - 我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元
    
    请计算首年运营的总费用是多少?
    """
    学生的解决方案:
    """
    设x为发电站的大小,单位为平方英尺。
    费用:
    1. 土地费用:100x
    2. 太阳能电池板费用:250x
    3. 维护费用:100,000+100x
    
    总费用:100x+250x+100,000+100x=450x+100,000
    """
    

    参考资料:《ChatGPT Prompt Engineering for Developers》

    文章来自 Yongchin'blog yongchin.xyz

  • 相关阅读:
    阿里云OSS(图片上传)
    linux常见指令
    CentOS 7 下 MongoDB 日志切割
    Python多线程和多进程:初步了解
    微信公众号之微信认证
    面试官问你什么是长轮询?
    【Opencv入门到项目实战】(三):图像腐蚀与膨胀操作
    K8s: 在Pod中使用亲和性调度节点
    【规则引擎】node规则引擎 json-rule-engine 学习记录
    Focal Loss讲解
  • 原文地址:https://www.cnblogs.com/semishigure/p/17482754.html