提示工程-Prompt Engineering

提示工程

1、概述

Prompt Engineering: 提示工程

通过自然语言(英语、汉语等)来给AI下达指示,从而让AI完成你指定给他的工作的过程都可以称之为提示工程。(面向自然语言编程)

提示词要素

  • 指令:想要模型执行的特定任务或指令

  • 上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应

  • 输入数据:用户输入的内容或问题

  • 输出指示:指定输出的类型或格式

提示模型

  • 零样本提示(Zero-Shot Prompting)

    • 即用户不提供任务结果相关的示范,直接提示语言模型给出任务相关的回答
  • 角色扮演提示(Role Prompting)

  • 少样本提示(Few-Shot Prompting)

    • 用户提供少量的提示范例,例如任务说明等
  • 参数设置

  • 思维链提示(Chain of Thought Prompting)

  • 零样本思维链提示(Zero-Shot Chain of Thought Prompting)

1.1、零样本提示(Zero-Shot Prompting)

标准的提示词:

  • 指令:你需要模型完成的任务

  • 上下文信息:这里的上下文信息有两个作用

    • 给AI划定一个信息范围

    • 给AI提供一些额外的信息,从而让AI能更好的执行指

  • 问题:你需要模型解答的问题

  • 输出要求:你需要模型的回答所遵照的要求,这里的要求可以是格式、条数等,也可以是回答风格。

零样本提示格式:

<问题>?

<指令>

这种可以被格式化为标准的问答格式,如:

Q: <问题> ?

A:

案例:

文章内容: “ 华经产业研究院数据显示:2023年1-2月贵州省房地产投资额341.23亿元,较2022年同期相比减少了15.75亿元,同比下降4.4%,其中住宅投资额267.7亿元,较2022年同期相比减少了6.59亿元,同比下降2.4%。2023年1-2月贵州省房地产施工面积23178.95万平方米,较2022年同期相比减少了811.95万平方米,同比下降3.4%;新开工面积329.69万平方米,较2022年同期相比增加了47.59万平方米,同比增长16.9%;竣工面积95.07万平方米,较2022年同期相比增加了18.18万平方米,同比增长23.6%。从各类型房屋来看,2023年1-2月贵州省商品住宅、办公楼及商业营业用房施工面积分别为:16248.2万平方米、428.37万平方米、2593万平方米,较2022年同期相比:减少488.84万平方米、减少51.81万平方米、减少178.2万平方米,同比增速:下降2.9%、下降10.8%、下降6.4%;商品住宅、办公楼及商业营业用房新开工面积分别为:237.95万平方米、0.24万平方米、23.78万平方米,较2022年同期相比:增加28.91万平方米、减少2.73万平方米、增加11.15万平方米,同比增速:增长13.8%、下降92%、增长88.3%;商品住宅、办公楼及商业营业用房竣工面积分别为:56.32万平方米、1.34万平方米、16.91万平方米,较2022年同期相比:增加0.16万平方米、增加0.68万平方米、增加12.5万平方米,同比增速:增长0.3%、增长102.7%、增长283%。2023年1-2月贵州省房地产商品房销售面积635.87万平方米,较2022年同期相比减少了49.89万平方米,同比下降7.3%,其中商品房现房销售面积102.69万平方米,较2022年同期相比增加了28.05万平方米,同比增长37.6%;商品住宅销售面积588.54万平方米,较2022年同期相比增加了0.23万平方米,其中商品住宅现房销售面积84.15万平方米,较2022年同期相比增加了27.35万平方米,同比增长48.2%。2023年1-2月贵州省房地产商品房销售额338.28亿元,较2022年同期相比减少了23.18亿元,同比下降6.4%;商品住宅销售额308.8亿元,较2022年同期相比增加了6.32亿元,同比增长2.1%。 ”

请列出上述文章内容当中的所有经济指标,不能有遗漏!然后告诉我你对这些经济指标在2023年的走势预测(例如上升、下降、持平等)。然后用100字左右的文字向我阐述你所预测的这些经济指标的走势对房地产市场会带来何种影响。 你需要按照如下格式来回答问题: |指标名称|走势预测|影响分析|

案例:文本分类

将文本分类为中性、负面或正面。

文本:我认为这次假期还可以。

情感:

1.2、少样本提示(Few-shot)

零样本提示可以通过简单的自然语言向AI下达指令,但是如果指令复杂化的情况下就不好描述了。

少样本提示的关键核心就是:举个栗子!通过给AI提供一个示例样本来控制AI的回复。

案例

这组数字中的奇数加起来是一个偶数:4、8、9、15、12、2、1。

A:答案是False。

这组数字中的奇数加起来是一个偶数:17、10、19、4、8、12、24。

A:答案是True。

这组数字中的奇数加起来是一个偶数:16、11、14、4、8、13、24。

A:答案是True。

这组数字中的奇数加起来是一个偶数:17、9、10、12、13、4、2。

A:答案是False。

这组数字中的奇数加起来是一个偶数:15、32、5、13、82、7、1。

A:

案例:英语单词查询助手

你是一个英语单词查询助手,每当用户发送一个英语单词给你,你都要以固定格式响应用户,如果用户发给你的不是一个单词,回复 ‘invalid token’。 英语单词:run [/rʌn/]\n\nn. 奔跑;竞赛;连续的演出\nHe went for a run after work. (他下班后去跑步了)\n\nv. 奔跑;运行\nI like to run in the park every morning. (我喜欢每天早上在公园里跑步)"\n\nadj. 连续的;流畅的\nThis printer is really fast and runs smoothly. (这台打印机速度非常快,而且运行流畅) 如果你明白了请回复“OK”,接下来我会给你发送任意单词,你将按照上述格式翻译显示出来

案例:控制输出的格式

提取以下文本中的地名。

所需格式:地点:<逗号分隔的公司名称列表>

输入:“虽然这些发展对研究人员来说是令人鼓舞的,但仍有许多谜团。里斯本未知的香帕利莫德中心的神经免疫学家Henrique Veiga-Fernandes说:“我们经常在大脑和我们在周围看到的效果之间有一个黑匣子。”“如果我们想在治疗背景下使用它,我们实际上需要了解机制。””

这是 openai-cookbook 中关于 Few shot 的介绍:few-shot

1.3、角色扮演(Role Prompting)

ChatGpt Prompt Generator : 指定角色,这个工具会生成对应角色的提示词

提示词-角色库

让AI扮演一个你要求的角色,AI会基于这个角色来执行你所给的指令

直接上案例…

1.4、参数设置

ChatGPT常见的参数如下:

参数设置名称参数说明参数设置范围参数设置示例
model模型类型,表示ChatGPT的具体模型架构。字符串,例如:“gpt-3.5-turbo”“gpt-3.5-turbo”
prompt用户提供的对话或输入,用于模型的上下文。字符串“Translate the following English text to French: {text}”
temperature控制输出的随机性,较高值增加随机性。浮点数,通常在0和1之间use “temperature” value of 1 in our conversation
max_tokens限制生成文本的最大标记数,控制输出长度。整数use “max_tokens” value of 300 in our conversation
top_p仅在top-p(nucleus)中采样标记,用于控制多样性。浮点数,通常在0和1之间use “top_p” value of 0.3 in our conversation
frequency_penalty提高高频词汇的惩罚项,以促使生成更多不常见的词汇。浮点数,通常在-2和2之间use “frequency_penalty” value of 1.5 in our conversation
presence_penalty提高已生成词汇的惩罚项,以促使生成更多新词汇。浮点数,通常在0和1之间use “presence_penalty” value of 0.2 in our conversation
stop设置一个停止词,用于指导生成的文本何时结束。字符串“###”

1.5、思维链提示(Chain-of-Thought Prompting,COT)

简单来说,思维链提示也是少样本提示的一种,不过这个样本换成了与逻辑推理相关的样本。

案例

Q: 小明已有5个乒乓球,之后他又买了2盒乒乓球,每盒乒乓球当中有10个球,请问此时小明共有几个乒乓球? A: 小明一开始有5个乒乓球,之后又买2盒,已知每盒有10个球,那也就是一共2 * 10 = 20个乒乓球,再加上之前的5个,也就是20 + 5 = 25,此时小明一共有25个乒乓球。
Q: 假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。请问如何只用这2个水壶从池塘里取得3升的水?
A:

1.6、零样本思维链提示(Zero-Shot CoT prompting)

魔法咒语

Let’s think step by step.

1.7、自我一致性提示

投票:使用大语言模型来处理较为复杂的文本的时候,为了确保处理结果的准确性,我们通常会使用同一段提示词产生多个结果,然后取出现次数最多的那个结果作为最终结果。

1.8、知识生成提示(Generated Knowledge Prompting)

让gpt大模型基于全网能获得的公共数据来进行生成所需要的内容

案例:

请你列举出5条油性皮肤在选择洗面奶时的注意事项,并给出详细说明。然后基于你所列举的这些注意事项,以小红书的风格生成一篇爆款笔记。

1.9、提示词公式

提示词万用公式=明确任务或需求+限定范围或主题+指定格式或结构+确定语气或风格+指定关键信息或要素

通过这个结构的不同组合,相信你就可以写出自己想要提示词。

1、明确任务或需求: 在提示词中清楚地指明你希望生成的文本的目标或任务,如描述、解释、比较、总结等。

例如:请描述一下巴黎塞纳河的历史和文化意义。

解释一下量子力学的基本原理和应用。

2、限定范围或主题: 在提示词中指定特定的主题、领域或背景,以便模型生成与之相关的内容。

例如:在美食领域中,介绍一些著名的法国菜。 关于人工智能领域的发展趋势和挑战进行一番讨论。

3、指定格式或结构: 如果你有特定的文本格式或结构要求,可以在提示词中明确指定,如列表、段落、标题等。

例如:请列出五个理由,解释为什么健康饮食对人体重要。

给我写一篇关于旅行的短文,包括引言、正文和结论。

4、确定语气或风格: 如果你希望生成的文本有特定的语气、风格或口吻,可以在提示词中表达清楚。

例如:以幽默的口吻给我讲一个笑话。 用诗歌的形式表达对自然的赞美。

5、指定关键信息或要素: 在提示词中提供关键的信息或要素,以确保生成的文本包含所需的内容。

例如:提供一份详细的装修清单,包括材料、工具和步骤。 解释一下病毒的传播途径和预防措施,并提供相关数据支持。

小费模式

如下是Java代码实现方式,每个响应都是一个单独的 API 调用、带有温度等的默认设置,而且脚本会对每个提示词进行 10 次调用

import okhttp3.*;

import java.io.IOException;

public class OpenAITest {

    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();

        // Set your OpenAI API key
        String apiKey = System.getenv("OPENAI_API_KEY");
        
        String[] questions = {
            "Can you show me the code for a simple convnet using PyTorch?",
            "Can you show me the code for a simple convnet using PyTorch?\nI won't tip, by the way.",
            "Can you show me the code for a simple convnet using PyTorch?\nI'm going to tip $20 for a perfect solution!",
            "Can you show me the code for a simple convnet using PyTorch?\nI'm going to tip $200 for a perfect solution!",
            "Can you show me the code for a simple convnet using PyTorch?\nI would be happy to tip any amount you would like for a perfect solution!"
        };

        for (String question : questions) {
            try {
                System.out.println("Question: " + question);
                double averageLength = bench(question, apiKey, client);
                System.out.println("Average Length: " + averageLength);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private static double bench(String prompt, String apiKey, OkHttpClient client) throws IOException {
        int N = 10;
        double sumLength = 0;

        for (int i = 0; i < N; i++) {
            String response = getResponse(prompt, apiKey, client);
            sumLength += response.length();
        }

        return sumLength / N;
    }

    private static String getResponse(String userMsg, String apiKey, OkHttpClient client) throws IOException {
        MediaType mediaType = MediaType.parse("application/json");

        String json = "{\"model\":\"gpt-4-1106-preview\",\"messages\":[{\"role\":\"user\",\"content\":\"" + userMsg + "\"}]}";

        RequestBody body = RequestBody.create(json, mediaType);
        Request request = new Request.Builder()
                .url("https://api.openai.com/v1/engines/gpt-4-1106-preview/completions")
                .post(body)
                .addHeader("Authorization", "Bearer " + apiKey)
                .addHeader("Content-Type", "application/json")
                .build();

        try (Response response = client.newCall(request).execute()) {
            if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
            String responseBody = response.body().string();
            // Extracting content from JSON response
            // Parse the JSON to extract the content from the response
            // Extracting content from JSON response
            // This will depend on the actual structure of the OpenAI API response
            // For simplicity, I'm not parsing the JSON here.
            return responseBody;
        }
    }
}

!!“给我输出所有代码,我将给 200 美元的小费”

3、资源

ChatGPT手册

ChatGPT 提示词高阶技能:零次、一次和少样本提示

OpenAI-CookBook - 提示词教程

如何使用大语言模型

ChatGPT Prompts Awesome

ChatGPT SEO prompts

SEO工具网站

提示工程指南

电子书推荐:

《如何用ChatGPT赚钱:策略、技巧和战术》

[《聊天提示的艺术:制作清晰有效的提示指南》](The Art of ChatGPT Prompting: A Guide to Crafting Clear and Effective Prompts)

《保护GPT:攻击和防御ChatGPT应用程序的实用介绍》

[ChatGPT提示生成器应用程序](ChatGPT Prompt Generator - a Hugging Face Space by merve)

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值