• 【Java-LangChain:使用 ChatGPT API 搭建系统-5】处理输入-思维链推理


    第五章,处理输入-思维链推理

    在本章中,我们将专注于处理输入,即通过一系列步骤生成有用地输出。
    有时,模型在回答特定问题之前需要进行详细地推理。如果您参加过我们之前的课程,您将看到许多这样的例子。有时,模型可能会因为过于匆忙得出结论而在推理过程中出错。因此,我们可以重新构思查询,要求模型在给出最终答案之前提供一系列相关的推理步骤,这样它就可以更长时间、更深入地思考问题。
    通常,我们称这种要求模型逐步推理问题的策略为思维链推理(chain of thought reasoning)。

    环境配置

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

    二,思维链 Prompt

        private String delimiter = "###";
    
        private String system = "请按照以下步骤回答客户的查询。客户的查询将以四个井号(#)分隔,即 " + delimiter + "。\n" +
                "\n" +
                "步骤 1:" + delimiter + " 首先确定用户是否正在询问有关特定产品或产品的问题。产品类别不计入范围。\n" +
                "\n" +
                "步骤 2:" + delimiter + " 如果用户询问特定产品,请确认产品是否在以下列表中。所有可用产品:\n" +
                "\n" +
                "产品:TechPro 超极本\n" +
                "类别:计算机和笔记本电脑\n" +
                "品牌:TechPro\n" +
                "型号:TP-UB100\n" +
                "保修期:1 年\n" +
                "评分:4.5\n" +
                "特点:13.3 英寸显示屏,8GB RAM,256GB SSD,Intel Core i5 处理器\n" +
                "描述:一款适用于日常使用的时尚轻便的超极本。\n" +
                "价格:$799.99\n" +
                "\n" +
                "产品:BlueWave 游戏笔记本电脑\n" +
                "类别:计算机和笔记本电脑\n" +
                "品牌:BlueWave\n" +
                "型号:BW-GL200\n" +
                "保修期:2 年\n" +
                "评分:4.7\n" +
                "特点:15.6 英寸显示屏,16GB RAM,512GB SSD,NVIDIA GeForce RTX 3060\n" +
                "描述:一款高性能的游戏笔记本电脑,提供沉浸式体验。\n" +
                "价格:$1199.99\n" +
                "\n" +
                "产品:PowerLite 可转换笔记本电脑\n" +
                "类别:计算机和笔记本电脑\n" +
                "品牌:PowerLite\n" +
                "型号:PL-CV300\n" +
                "保修期:1年\n" +
                "评分:4.3\n" +
                "特点:14 英寸触摸屏,8GB RAM,256GB SSD,360 度铰链\n" +
                "描述:一款多功能可转换笔记本电脑,具有响应触摸屏。\n" +
                "价格:$699.99\n" +
                "\n" +
                "产品:TechPro 台式电脑\n" +
                "类别:计算机和笔记本电脑\n" +
                "品牌:TechPro\n" +
                "型号:TP-DT500\n" +
                "保修期:1年\n" +
                "评分:4.4\n" +
                "特点:Intel Core i7 处理器,16GB RAM,1TB HDD,NVIDIA GeForce GTX 1660\n" +
                "描述:一款功能强大的台式电脑,适用于工作和娱乐。\n" +
                "价格:$999.99\n" +
                "\n" +
                "产品:BlueWave Chromebook\n" +
                "类别:计算机和笔记本电脑\n" +
                "品牌:BlueWave\n" +
                "型号:BW-CB100\n" +
                "保修期:1 年\n" +
                "评分:4.1\n" +
                "特点:11.6 英寸显示屏,4GB RAM,32GB eMMC,Chrome OS\n" +
                "描述:一款紧凑而价格实惠的 Chromebook,适用于日常任务。\n" +
                "价格:$249.99\n" +
                "\n" +
                "步骤 3:" + delimiter + " 如果消息中包含上述列表中的产品,请列出用户在消息中做出的任何假设,例如笔记本电脑 X 比笔记本电脑 Y 大,或者笔记本电脑 Z 有 2 年保修期。\n" +
                "\n" +
                "步骤 4:" + delimiter + " 如果用户做出了任何假设,请根据产品信息确定假设是否正确。\n" +
                "\n" +
                "步骤 5:" + delimiter + " 如果用户有任何错误的假设,请先礼貌地纠正客户的错误假设(如果适用)。只提及或引用可用产品列表中的产品,因为这是商店销售的唯一五款产品。以友好的口吻回答客户。\n" +
                "\n" +
                "使用以下格式回答问题:\n" +
                "步骤 1:" + delimiter + " <步骤 1的推理>\n" +
                "步骤 2:" + delimiter + " <步骤 2 的推理>\n" +
                "步骤 3:" + delimiter + " <步骤 3 的推理>\n" +
                "步骤 4:" + delimiter + " <步骤 4 的推理>\n" +
                "回复客户:{delimiter} <回复客户的内容>\n" +
                "\n" +
                "请确保在每个步骤之间使用 {" + delimiter + "} 进行分隔。";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
            String user = "BlueWave Chromebook 比 TechPro 台式电脑贵多少?";
    
            List<ChatMessage> messages = new ArrayList<>();
    
            ChatMessage systemMessage = new ChatMessage();
            systemMessage.setRole("system");
            systemMessage.setContent(system);
            messages.add(systemMessage);
            
            ChatMessage userMessage = new ChatMessage();
            userMessage.setRole("user");
            userMessage.setContent(user);
            messages.add(userMessage);
    
            String message = this.getCompletionFromMessage(messages, 1);
    
            log.info("test1:\n{}", message);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    步骤 1:### 用户询问特定产品之间的价格差异。
    
    步骤 2:### 用户询问的产品是 BlueWave Chromebook 和 TechPro 台式电脑。
    
    步骤 3:### 用户假设 BlueWave Chromebook 比 TechPro 台式电脑贵。
    
    步骤 4:### 根据产品信息,我们可以确定用户的假设是错误的。
    
    回复客户:###
    
    TechPro 台式电脑的价格是 $999.99,而 BlueWave Chromebook 的价格是 $249.99。因此,TechPro 台式电脑比 BlueWave Chromebook 贵 $750。请注意,这些是商店销售的唯一五款产品。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    
            String user = delimiter + "你有电视机嘛?" + delimiter;
    
            List<ChatMessage> messages = new ArrayList<>();
    
            ChatMessage systemMessage = new ChatMessage();
            systemMessage.setRole("system");
            systemMessage.setContent(system);
            messages.add(systemMessage);
    
            ChatMessage userMessage = new ChatMessage();
            userMessage.setRole("user");
            userMessage.setContent(user);
            messages.add(userMessage);
    
            String message = this.getCompletionFromMessage(messages, 0);
    
            log.info("test2:\n{}", message);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    步骤 1:### 确定用户是否询问有关特定产品或产品的问题。
    
    步骤 2:### 没有电视机在可用产品列表中。
    
    回复客户:### 很抱歉,我们目前没有可用的电视机产品。我们的产品范围主要包括计算机和笔记本电脑。如果您对其他产品有任何疑问,请随时告诉我。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三,内心独白

    对于某些应用程序,模型的推理过程可能不适合与用户共享。例如,在辅导类应用程序中,我们可能希望鼓励学生自行解决问题,但模型对学生解决方案的推理过程可能会泄露答案。

    内心独白是一种可以用来缓解这种情况的策略,这是一种隐藏模型推理过程的高级方法。

    内心独白的思想是让模型以一种不会透露答案的方式生成部分输出,这样用户就无法看到完整的推理过程。目标是将这些部分隐藏在一个结构化的格式中,使得传递它们变得容易。然后,在向用户呈现输出之前,对输出进行一些转化,使得只有部分输出是可见的。

            String user = delimiter + "你有电视机嘛?" + delimiter;
    
            List<ChatMessage> messages = new ArrayList<>();
    
            ChatMessage systemMessage = new ChatMessage();
            systemMessage.setRole("system");
            systemMessage.setContent(system);
            messages.add(systemMessage);
    
            ChatMessage userMessage = new ChatMessage();
            userMessage.setRole("user");
            userMessage.setContent(user);
            messages.add(userMessage);
    
            String message = this.getCompletionFromMessage(messages, 0);
    
            //取出最后一行回复内容
            String lastElement = Arrays.stream(message.split(delimiter))
                    .reduce((first, second) -> second)
                    .orElse(null);
    
            log.info("test3:\n{}", lastElement);
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    是的,我们有电视机。我们有多种品牌和型号可供选择。您对哪个品牌或型号感兴趣?
    
    • 1

    Java快速转换到大模型开发
    配套课程的所有代码已经发布在:https://github.com/Starcloud-Cloud/java-langchain
    课程合作请留言

  • 相关阅读:
    Linux——gdb|准备工作查看代码|r命令|断点相关命令|逐语句|逐过程|调用堆栈|冯诺依曼结构
    WVP+ZLMediaKit+MediaServerUI实现摄像头GB28181推流播放录制---经验避免刚接触视频的小伙伴踩坑
    机器学习---SVM目标函数求解,SMO算法
    JavaWeb三大组件【Servlet】【Filter】【Listener】学习笔记
    Python爬虫——爬取某网站的视频
    SAP UI5 应用开发教程之一百零三 - 如何在 SAP UI5 应用中消费第三方库
    CocoaPods 官宣进入维护模式,不在积极开发新功能,未来将是 Swift Package Manager 的时代
    你有在上传文件下载文件踩过坑吗?
    Java并发编程学习十二:死锁问题
    【学懂数据结构】算法及其复杂度分析
  • 原文地址:https://blog.csdn.net/df007df/article/details/133513903