面向Java开发者的ChatGPT提示词工程(9)

2023-10-23 15:50:35 浏览数 (1)

大型语言模型非常擅长将输入转换为不同的格式,例如输入一段文本,将其转换或翻译成另一种语言,或帮助拼写和语法纠正。

比如,将一段可能不完全符合语法的文本作为输入,帮助您稍微修正一下,甚至转换格式,例如输入HTML并输出JSON。

之前我曾经用一堆正则表达式做文本的处理,现在使用大型语言模型和几个提示词肯定更简单。我现在几乎用 ChatGPT 来校对我写的所有东西,下面我向大家展示一些示例。

翻译

我向大家展示的第一个示例是翻译。

大型语言模型受过许多来源的大量文本的训练,其中很多是互联网的,当然也包括许多不同语言的。这就赋予了大型语言模型进行翻译的能力。这些模型在不同程度上熟练掌握数百种语言。

因此,我们将通过一些示例来演示如何使用这种能力。让我们从简单的事情开始。因此,在这个第一个示例中,提示是将以下中文文本翻译成俄语。

代码语言:javascript复制
你怎么才来呀?
代码语言:javascript复制
public static void main(String[] args) {
    String text = "你怎么才来呀?";

    String prompt = "把三个反引号之间的中文翻译为俄语。n"
              "```%s```";
    String response = getCompletion(String.format(prompt, text));
    System.out.println(response);
}

接下来,让我们一起执行这段代码,看一下输出结果:

代码语言:javascript复制
Как ты только пришел?

不幸的是我从未学过俄语,所以根本看不懂。我们再试一个例子,让大语言模型告诉我们这是什么语言。

代码语言:javascript复制
public static void main(String[] args) {
    String text = "Как ты только пришел?";

    String prompt = "请回答三个反引号之间的文本是什么语言?n"
              "```%s```";
    String response = getCompletion(String.format(prompt, text));
    System.out.println(response);
}

接下来,让我们一起执行这段代码,看一下输出结果:

代码语言:javascript复制
这段文本是俄语。

可以看到,大语言模型已经帮我们确定了:这段文本是俄语。大语言模型还可以同时进行多种翻译。在下面的例子中,我们可以将中文翻译成俄语、英语和东北话。

代码语言:javascript复制
public static void main(String[] args) {
    String text = "你怎么才来呀?";

    String prompt = "把三个反引号之间的中文翻译为俄语、英语和东北话。n"
              "```%s```";
    String response = getCompletion(String.format(prompt, text));
    System.out.println(response);
}

接下来,让我们一起执行这段代码,看一下输出结果:

代码语言:javascript复制
俄语翻译:Как ты только пришел?
英语翻译:How did you just come?
东北话翻译:你咋才来哪?

可以看到,大语言模型已经帮我们翻译了俄语和英语,还有东北话。

在某些语言中,翻译可能会根据说话者与听众的关系而改变。我们也可以向大语言模型解释这一点,它将能够相应地进行翻译。在下面的例子中,我们将中文翻译成英语,包括正式的书面表达方式和非正式的口语表达方式。

代码语言:javascript复制
public static void main(String[] args) {
    String text = "你怎么才来呀?";

    String prompt = "把三个反引号之间的中文翻译为英语,包括正式的书面表达方式和非正式的口语表达方式。n"
              "```%s```";
    String response = getCompletion(String.format(prompt, text));
    System.out.println(response);
}

接下来,让我们一起执行这段代码,看一下输出结果:

代码语言:javascript复制
正式的书面表达方式:How come you just arrived?
非正式的口语表达方式:Why did you take so long to get here?

大语言模型为我们回答了正式和非正式两种表达方式。正式的书面表达方式是当你在正式场合说话时使用的表达方式,而非正式的口语表达方式是当你和一群朋友说话时使用的表达方式。

应用程序实战

我们假设我们在一家跨国电子商务公司,用户将用各种不同的语言告诉我们他们在购买商品时遇到的问题。所以我们需要开发一个应用程序,翻译所有用户的问题。

代码语言:javascript复制
Какие способы оплаты поддерживаются?
반품 및 교환은 어떻게 하나요?
La robe est-elle disponible dans d’autres couleurs?
このワードローブを設置するにはどうすればよいですか?インストール手順はありますか?
Muss dieser Keks im Kühlschrank aufbewahrt werden?

我们首先要求大语言模型告诉我们问题是哪种语言,然后打印出原始问题和对应的语言,然后要求大语言模型将它们翻译成中文,再翻译成英语。

代码语言:javascript复制
public static void main(String[] args) {
    List<String> messages = Arrays.asList(
            "Какие способы оплаты поддерживаются?",
            "반품 및 교환은 어떻게 하나요?",
            "La robe est-elle disponible dans d’autres couleurs?",
            "このワードローブを設置するにはどうすればよいですか?インストール手順はありますか?",
            "Muss dieser Keks im Kühlschrank aufbewahrt werden?");

    for (String msg : messages) {
        String response = getCompletion("下面文本是什么语言(只输出语言名称):n"   msg);
        System.out.printf("原始问题:%s(%s)n", msg, response);
        String response2 = getCompletion("把下面文本翻译为中文:n"   msg);
        System.out.printf("中文翻译:%sn", response2, msg);
        String response3 = getCompletion("把下面文本翻译为英语:n"   msg);
        System.out.printf("英语翻译:%snn", response3, msg);
    }
}

接下来,让我们一起执行这段代码,看一下输出结果:

代码语言:javascript复制
原始问题:Какие способы оплаты поддерживаются?(俄语)
中文翻译:支持哪些付款方式?
英语翻译:What payment methods are supported?

原始问题:반품 및 교환은 어떻게 하나요?(韩语)
中文翻译:如何退货和换货?
英语翻译:How do I return or exchange an item?

原始问题:La robe est-elle disponible dans d’autres couleurs?(法语)
中文翻译:这件裙子有其他颜色可供选择吗?
英语翻译:Is the dress available in other colors?

原始问题:このワードローブを設置するにはどうすればよいですか?インストール手順はありますか?(日本语)
中文翻译:如何安装这个衣柜?有安装步骤吗?
英语翻译:How can I set up this wardrobe? Are there any installation instructions?

原始问题:Muss dieser Keks im Kühlschrank aufbewahrt werden?(德语)
中文翻译:这个饼干需要放在冰箱里保存吗?
英语翻译:Does this cookie need to be stored in the refrigerator?

上面的例子中,每个问题都和大语言模型交互了3次。当然,我们也可以每个问题只和大语言模型交互一次,并且为了方便后续应用程序的处理,要求大语言模型以指定的Json格式回答。

代码语言:javascript复制
public static void main(String[] args) {
    List<String> messages = Arrays.asList(
            "Какие способы оплаты поддерживаются?",
            "반품 및 교환은 어떻게 하나요?",
            "La robe est-elle disponible dans d’autres couleurs?",
            "このワードローブを設置するにはどうすればよいですか?インストール手順はありますか?",
            "Muss dieser Keks im Kühlschrank aufbewahrt werden?");

    String prompt = "判断三个反引号之间的文本是什么语言,并把它翻译成中文和英语,以下面Json格式输出。nn"
              "{n"
              "  "original": "Какие способы оплаты поддерживаются?",n"
              "  "language": "俄语",n"
              "  "translations": {n"
              "    "zh-CN": "支持哪些付款方式?",n"
              "    "en": "What payment methods are supported?"n"
              "  }n"
              "}nn"
              "```%s```n";

    for (String msg : messages) {
        String response = getCompletion(String.format(prompt, msg));
        System.out.println(response);
    }
}

接下来,让我们一起执行这段代码,看一下输出结果:

代码语言:javascript复制
{
  "original": "Какие способы оплаты поддерживаются?",
  "language": "俄语",
  "translations": {
    "zh-CN": "支持哪些付款方式?",
    "en": "What payment methods are supported?"
  }
}
{
  "original": "반품 및 교환은 어떻게 하나요?",
  "language": "한국어",
  "translations": {
    "zh-CN": "如何退货和换货?",
    "en": "How to return and exchange?"
  }
}
{
  "original": "La robe est-elle disponible dans d’autres couleurs?",
  "language": "法语",
  "translations": {
    "zh-CN": "这件连衣裙有其他颜色可选吗?",
    "en": "Is the dress available in other colors?"
  }
}
{
  "original": "このワードローブを設置するにはどうすればよいですか?インストール手順はありますか?",
  "language": "日语",
  "translations": {
    "zh-CN": "如何安装这个衣柜?有安装步骤吗?",
    "en": "How do I install this wardrobe? Are there any installation instructions?"
  }
}
{
  "original": "Muss dieser Keks im Kühlschrank aufbewahrt werden?",
  "language": "德语",
  "translations": {
    "zh-CN": "这个饼干需要放在冰箱里保存吗?",
    "en": "Does this cookie need to be stored in the refrigerator?"
  }
}

可以看到,我们想要的Json格式已经打印出来了。这样一来,翻译不同语言的用户问题的应用程序就实现了。

语气转换

在上面的例子中,我们已经尝试了用正式的书面和非正式的口语进行不同的表达。接下来,我们要深入探讨语气转换。

可以根据预期的受众而写出的内容也有所不同,比如,我给同事或领导写电子邮件的方式显然会与我给弟弟发短信的方式有很大不同。ChatGPT 实际上也可以帮助产生不同的语气。

首先,在下面的例子中,我们把王哥,我是阿杰,帮我看看衣柜的大小。这样口语化的句子转化为商业信函。

代码语言:javascript复制
public static void main(String[] args) {
    String text = "王哥,我是阿杰,你看一眼衣柜的大小。";

    String prompt = "把下面的口语转化成商务信函:n"
              "%s";
    String response = getCompletion(String.format(prompt, text));
    System.out.println(response);
}

接下来,让我们一起执行这段代码,看一下输出结果:

代码语言:javascript复制
尊敬的王先生,
我是阿杰,写信是为了请您查看一下衣柜的尺寸。
谢谢您的合作。
祝好,
阿杰

正如你所看到的,我们有了一个更正式的商业信函,提出了一个落地灯规格的建议。

格式转换

大语言模型非常擅长在不同的格式之间进行转换,比如JSON转换为XML、Markdown等等各种各样的格式。

我们尝试把下面的Json转换为Markdown。

代码语言:javascript复制
{
     "authors": [
          {
               "name": "吴恩达",
               "website": "https://www.andrewng.org/"
          },
          {
               "name": "廖雪峰",
               "website": "https://www.liaoxuefeng.com/"
          },
          {
               "name": "万猫学社",
               "website": "https://blog.csdn.net/heihaozi/"
          }
     ]
}
代码语言:javascript复制
public static void main(String[] args) {
    String json = "{n"
              "     "authors": [n"
              "          {n"
              "               "name": "吴恩达",n"
              "               "website": "https://www.andrewng.org/"n"
              "          },n"
              "          {n"
              "               "name": "廖雪峰",n"
              "               "website": "https://www.liaoxuefeng.com/"n"
              "          },n"
              "          {n"
              "               "name": "万猫学社",n"
              "               "website": "https://blog.csdn.net/heihaozi/"n"
              "          }n"
              "     ]n"
              "}";

    String prompt = "把下面的Json转化成Markdown格式:n"
              "%s";
    String response = getCompletion(String.format(prompt, json));
    System.out.println(response);
}

接下来,让我们一起执行这段代码,看一下输出结果:

代码语言:javascript复制
- authors:
  - name: 吴恩达
    website: [https://www.andrewng.org/](https://www.andrewng.org/)
  - name: 廖雪峰
    website: [https://www.liaoxuefeng.com/](https://www.liaoxuefeng.com/)
  - name: 万猫学社
    website: [https://blog.csdn.net/heihaozi/](https://blog.csdn.net/heihaozi/)

我们甚至可以把这个Json转换为Java类。

代码语言:javascript复制
public static void main(String[] args) {
    String json = "{n"
              "     "authors": [n"
              "          {n"
              "               "name": "吴恩达",n"
              "               "website": "https://www.andrewng.org/"n"
              "          },n"
              "          {n"
              "               "name": "廖雪峰",n"
              "               "website": "https://www.liaoxuefeng.com/"n"
              "          },n"
              "          {n"
              "               "name": "万猫学社",n"
              "               "website": "https://blog.csdn.net/heihaozi/"n"
              "          }n"
              "     ]n"
              "}";

    String prompt = "把下面的Json转化成Java类的定义:n"
              "%s";
    String response = getCompletion(String.format(prompt, json));
    System.out.println(response);
}

执行这段代码,看一下输出结果:

代码语言:javascript复制
import java.util.List;

public class Author {
    private String name;
    private String website;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getWebsite() {
        return website;
    }

    public void setWebsite(String website) {
        this.website = website;
    }
}

public class Authors {
    private List<Author> authors;

    public List<Author> getAuthors() {
        return authors;
    }

    public void setAuthors(List<Author> authors) {
        this.authors = authors;
    }
}

可以帮忙我们生成一些实体类的代码。

总结

本文主要讨论了大型语言模型的一些应用,包括翻译、语气转换以及格式转换。大型语言模型能够将一段文本翻译成另一种语言,甚至是东北话。此外,大型语言模型还能够帮助我们进行语气转换,例如将口语化的句子转化为商业信函。最后,大型语言模型还能够在不同的格式之间进行转换,例如将JSON转换为XML、Markdown等等各种各样的格式。

0 人点赞