【Java-LangChain:面向开发者的提示工程-6】文本转换

第六章 文本转换

LLM非常擅长将输入转换成不同的格式,典型应用包括多语种文本翻译、拼写及语法纠正、语气调整、格式转换等。
本章节将介绍如何使用编程的方式,调用API接口来实现“文本转换”功能。

环境配置

参考第二章的 环境配置小节内容即可。

文本翻译

中文转西班牙语


    String prompt = "将以下中文翻译成西班牙语: \n" +
        "```您好,我想订购一个搅拌机。```";

        String message = this.getCompletion(prompt);

        log.info("iterative1:\n{}", message);

Hola, me gustaría ordenar una batidora.

识别语种


    String prompt = "请告诉我以下文本是什么语种: \n" +
        "```Combien coûte le lampadaire?```";

        String message = this.getCompletion(prompt);

        log.info("iterative2:\n{}", message);

这段文本是法语。

多语种翻译


    String prompt = "请将以下文本分别翻译成中文、英文、法语和西班牙语:\n" +
        "```I want to order a basketball.```";

        String message = this.getCompletion(prompt);

        log.info("iterative3:\n{}", message);

中文:我想订购一个篮球。
英文:I want to order a basketball.
法语:Je veux commander un ballon de basket.
西班牙语:Quiero pedir una pelota de baloncesto.

同时进行语气转换

        String prompt = "请将以下文本翻译成中文,分别展示成正式与非正式两种语气:\n" +
                "```Would you like to order a pillow?```";

        String message = this.getCompletion(prompt);

        log.info("iterative4:\n{}", message);
正式语气:您是否需要订购一个枕头?
非正式语气:你想要订购一个枕头吗?

通用翻译器

随着全球化与跨境商务的发展,交流的用户可能来自各个不同的国家,使用不同的语言,因此我们需要一个通用翻译器,识别各个消息的语种,并翻译成目标用户的母语,从而实现更方便的跨国交流。

         for (String issue : messages) {
            String prompt = "告诉我以下文本是什么语种,直接输出语种,如法语,无需输出标点符号: ```{" + issue + "}```";
            String lang = this.getCompletion(prompt);
            log.info("\n原始消息: ({}) {}", lang, issue);
    
            String prompt2 = "将以下消息分别翻译成英文和中文,并写成\n" +
            "    中文翻译:xxx\n" +
            "    英文翻译:yyy\n" +
            "    的格式:\n" +
            "    ```{" + issue + "}```";
            String str = this.getCompletion(prompt2);
            log.info("\n{}\n================================================================================================", str);
        }
原始消息: (法语) La performance du système est plus lente que d'habitude.
中文翻译:系统的性能比平时慢。
英文翻译:The performance of the system is slower than usual.
================================================================================================
原始消息: (西班牙语) Mi monitor tiene píxeles que no se iluminan.
中文翻译:我的显示器有一些像素点不亮。
英文翻译:My monitor has pixels that do not light up.
================================================================================================
原始消息: (意大利语) Il mio mouse non funziona
中文翻译:我的鼠标不工作。
英文翻译:My mouse is not working.
================================================================================================
原始消息: (波兰语) Mój klawisz Ctrl jest zepsuty
中文翻译:我的Ctrl键坏了
英文翻译:My Ctrl key is broken
================================================================================================
原始消息: (中文) 我的屏幕在闪烁
中文翻译:我的屏幕在闪烁
英文翻译:My screen is flickering
================================================================================================

语气与写作风格调整

写作的语气往往会根据受众对象而有所调整。例如,对于工作邮件,我们常常需要使用正式语气与书面用词,而对同龄朋友的微信聊天,可能更多地会使用轻松、口语化的语气。

        String prompt = "将以下文本翻译成商务信函的格式:\n" +
                "```小老弟,我小羊,上回你说咱部门要采购的显示器是多少寸来着?```";

        String message = this.getCompletion(prompt);

        log.info("iterative6:\n{}", message);
尊敬的先生/女士,

我是小羊,我们上次讨论过我们部门需要采购的显示器尺寸是多少。请问您还记得吗?

谢谢您的合作。

祝好,

小羊

文件格式转换

ChatGPT非常擅长不同格式之间的转换,例如JSON到HTML、XML、Markdown等。在下述例子中,我们有一个包含餐厅员工姓名和电子邮件的列表的JSON,我们希望将其从JSON转换为HTML。

        String json = "{ \"resturant employees\" :[\n" +
                "        {\"name\":\"Shyam\", \"email\":\"[email protected]\"},\n" +
                "        {\"name\":\"Bob\", \"email\":\"[email protected]\"},\n" +
                "        {\"name\":\"Jai\", \"email\":\"[email protected]\"}\n" +
                "]}";

        String prompt = "将以下JSON转换为HTML表格,保留表格标题和列名:" + json + "";

        String message = this.getCompletion(prompt);

        log.info("iterative7:\n{}", message);

输出:

DOCTYPE html>
<html>
<head>
    <title>Restaurant Employeestitle>
head>
<body>
    <table>
        <caption>Restaurant Employeescaption>
        <thead>
            <tr>
                <th>Nameth>
                <th>Emailth>
            tr>
        thead>
        <tbody>
            <tr>
                <td>Shyamtd>
                <td>[email protected]td>
            tr>
            <tr>
                <td>Bobtd>
                <td>[email protected]td>
            tr>
            <tr>
                <td>Jaitd>
                <td>[email protected]td>
            tr>
        tbody>
    table>
body>
html>

拼写及语法纠正

拼写及语法的检查与纠正是一个十分常见的需求,特别是使用非母语语言,例如,在论坛发帖时,或发表英文论文时,校对是一件十分重要的事情。
下述例子给定了一个句子列表,其中有些句子存在拼写或语法问题,有些则没有,我们循环遍历每个句子,要求模型校对文本,如果正确则输出“未发现错误”,如果错误则输出纠正后的文本。

综合样例

下述例子展示了同一段评论,用一段prompt同时进行文本翻译+拼写纠正+风格调整+格式转换。


        String text = "Got this for my daughter for her birthday cuz she keeps taking mine from my room.  Yes, adults also like pandas too.  She takes it everywhere with her, and it's super soft and cute.  " +
                "One of the ears is a bit lower than the other, and I don't think that was designed to be asymmetrical. It's a bit small for what I paid for it though. I think there might be other options that are bigger for the same price.  " +
                "It arrived a day earlier than expected, so I got to play with it myself before I gave it to my daughter.";


        String prompt = "针对以下三个反引号之间的英文评论文本,\n" +
                "首先进行拼写及语法纠错,\n" +
                "然后将其转化成中文,\n" +
                "再将其转化成优质淘宝评论的风格,从各种角度出发,分别说明产品的优点与缺点,并进行总结。\n" +
                "润色一下描述,使评论更具有吸引力。\n" +
                "输出结果格式为:\n" +
                "【优点】xxx\n" +
                "【缺点】xxx\n" +
                "【总结】xxx\n" +
                "注意,只需填写xxx部分,并分段输出。\n" +
                "将结果输出成Markdown格式。\n" +
                "```{" + text + "}```";

        String message = this.getCompletion(prompt);

        log.info("iterative8:\n{}", message);
【优点】
 - 这个毛绒玩具非常柔软可爱,我女儿生日时我给她买了这个,因为她总是从我的房间拿走我的玩具。
 - 它非常适合携带,我女儿带着它到处走,而且它超级软和可爱。
 - 它比我预期的早了一天送到,所以我在送给女儿之前还能自己玩一下。

【缺点】
 - 其中一只耳朵比另一只低一些,我不认为这是设计上的不对称。
 - 对于我支付的价格来说,它有点小了。我认为可能有其他同样价格但更大的选择。

【总结】
 这个毛绒玩具非常适合作为生日礼物,它柔软可爱,适合携带。然而,它的大小可能不符合一些人的期望,并且存在一些不对称的问题。如果你在寻找同样价格但更大的选项,可能需要考虑其他产品。

你可能感兴趣的:(Java-LangChain,java,langchain,python,gpt)