【Java-LangChain:使用 ChatGPT API 搭建系统-6】处理输入-链式 Prompt Chaining Prompts

第六章,处理输入-链式 Prompt Chaining Prompts

在本章中,我们将学习如何通过将复杂任务拆分为一系列简单的子任务来链接多个 Prompt。

您可能会想,为什么要将任务拆分为多个 Prompt,而不是像我们在上一个视频中学习的那样,使用思维链推理一次性完成呢?我们已经证明了语言模型非常擅长遵循复杂的指令,特别是像 GPT-4 这样的高级模型。

那么让我们用两个比喻来解释为什么我们要这样做,来比较思维链推理和链式 Prompt。

将任务拆分为多个 Prompt 的第一个比喻是一次性烹饪复杂菜肴与分阶段烹饪的区别。使用一个长而复杂的 Prompt 可能就像一次性烹饪复杂的菜肴,您必须同时管理多个成分、烹饪技巧和时间。这可能很具有挑战性,难以跟踪每个部分并确保每个组成部分都烹饪得恰到好处。

另一方面,链式 Prompt 就像分阶段烹饪餐点,您专注于一个组成部分,确保每个部分都正确烹饪后再进行下一个。这种方法可以分解任务的复杂性,使其更易于管理,并减少错误的可能性。但是,对于非常简单的食谱,这种方法可能是不必要和过于复杂的。

一个稍微更好的比喻是,一次性完成所有任务与分阶段完成任务的区别。就像阅读一长串代码和使用简单的模块化程序之间的差异一样,复杂的依赖关系会导致代码变得混乱且难以调试。这个比喻同样适用于将复杂的单步任务提交给语言模型。当您有一个可以在任何给定点维护系统状态并根据当前状态采取不同操作的工作流程时,链式 Prompt 就成为一种强大的策略。

环境配置

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

二,实现一个包含多个提示的复杂任务

提取相关产品和类别名称

在您对客户的查询进行分类后,您将获得查询的类别——是账户问题还是产品问题。然后您可以根据不同的类别采取不同的行动。

每个子任务仅包含执行对应任务所需的指令,这使得系统更易于管理,确保模型具备执行任务所需的所有信息,并降低了出错的可能性。这种此方法还可以降低成本,因为更长的 Prompt 和更多的 tokens 会导致更高的运行成本,并且在某些情况下可能不需要概述所有步骤。

这种方法的另一个好处是,它更容易测试哪些步骤可能更容易失败,或者在特定步骤中需要人工干预。

随着您与这些模型的构建和交互不断深入,您将逐渐培养出何时运用此策略的直觉。另外,还有一个额外的好处是,它允许模型在必要时使用外部工具。例如,它可能决定在产品目录中查找某些内容,调用 API 或搜索知识库,这是使用单个 Prompt 无法实现的。

private String delimiter = "###";private String system = "你将提供服务查询。\n" +"服务查询将使用" + delimiter + "字符分隔。\n" +"\n" +"仅输出一个 Python 对象列表,其中每个对象具有以下格式:\n" +"    'category': <计算机和笔记本电脑、智能手机和配件、电视和家庭影院系统、游戏机和配件、音频设备、相机和摄像机中的一个>,\n" +"或者\n" +"    'products': <必须在下面的允许产品列表中找到的产品列表>\n" +"\n" +"类别和产品必须在客户服务查询中找到。\n" +"如果提及了产品,则必须将其与允许产品列表中的正确类别相关联。\n" +"如果未找到产品或类别,则输出空列表。\n" +"\n" +"允许的产品:\n" +"\n" +"计算机和笔记本电脑类别:\n" +"TechPro Ultrabook\n" +"BlueWave Gaming Laptop\n" +"PowerLite Convertible\n" +"TechPro Desktop\n" +"BlueWave Chromebook\n" +"\n" +"智能手机和配件类别:\n" +"SmartX ProPhone\n" +"MobiTech PowerCase\n" +"SmartX MiniPhone\n" +"MobiTech Wireless Charger\n" +"SmartX EarBuds\n" +"\n" +"电视和家庭影院系统类别:\n" +"CineView 4K TV\n" +"SoundMax Home Theater\n" +"CineView 8K TV\n" +"SoundMax Soundbar\n" +"CineView OLED TV\n" +"c\n" +"游戏机和配件类别:\n" +"GameSphere X\n" +"ProGamer Controller\n" +"GameSphere Y\n" +"ProGamer Racing Wheel\n" +"GameSphere VR Headset\n" +"\n" +"音频设备类别:\n" +"AudioPhonic Noise-Canceling Headphones\n" +"WaveSound Bluetooth Speaker\n" +"AudioPhonic True Wireless Earbuds\n" +"WaveSound Soundbar\n" +"AudioPhonic Turntable\n" +"\n" +"相机和摄像机类别:\n" +"FotoSnap DSLR Camera\n" +"ActionCam 4K\n" +"FotoSnap Mirrorless Camera\n" +"ZoomMaster Camcorder\n" +"FotoSnap Instant Camera\n" +"\n" +"仅输出 Python 对象列表,不包含其他字符信息。";

示例1:

        String user = "请查询 SmartX ProPhone 智能手机和 FotoSnap 相机,包括单反相机。\n" +" 另外,请查询关于电视产品的信息。";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("test1:\n{}", message);

输出:

[{'category': '智能手机和配件'},{'category': '相机和摄像机'},{'category': '电视和家庭影院系统'}
]

正如您所见,对于我们的输出是一个对象列表,每个对象都有一个类别和一些产品。如"SmartX ProPhone"和"Fotosnap DSLR Camera"在最后一个对象中,我们只有一个类别,因为没有提到任何具体的电视。
这种结构化的响应输出的好处是可以轻松地将其读入 Python 的列表中。

让我们尝试另一个例子。

        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);
[]

如果您留意列表,会发现我们实际上并没有包含任何路由器的信息。 现在,我们需要对其进行正确的格式化以完成输出。

正如您所见,在这种情况下,输出是一个空列表。

检索提取的产品和类别的详细信息

我们提供大量的产品信息作为示例,要求模型提取产品和对应的详细信息

{"TechPro Ultrabook": {"name": "TechPro 超极本","category": "电脑和笔记本","brand": "TechPro","model_number": "TP-UB100","warranty": "1 year","rating": 4.5,"features": ["13.3-inch display", "8GB RAM", "256GB SSD", "Intel Core i5 处理器"],"description": "一款时尚轻便的超极本,适合日常使用。","price": 799.99},"BlueWave Gaming Laptop": {"name": "BlueWave 游戏本","category": "电脑和笔记本","brand": "BlueWave","model_number": "BW-GL200","warranty": "2 years","rating": 4.7,"features": ["15.6-inch display", "16GB RAM", "512GB SSD", "NVIDIA GeForce RTX 3060"],"description": "一款高性能的游戏笔记本电脑,提供沉浸式体验。","price": 1199.99},"PowerLite Convertible": {"name": "PowerLite Convertible","category": "电脑和笔记本","brand": "PowerLite","model_number": "PL-CV300","warranty": "1 year","rating": 4.3,"features": ["14-inch touchscreen", "8GB RAM", "256GB SSD", "360-degree hinge"],"description": "一款多功能的可转换笔记本电脑,具有灵敏的触摸屏。","price": 699.99},"TechPro Desktop": {"name": "TechPro Desktop","category": "电脑和笔记本","brand": "TechPro","model_number": "TP-DT500","warranty": "1 year","rating": 4.4,"features": ["Intel Core i7 processor", "16GB RAM", "1TB HDD", "NVIDIA GeForce GTX 1660"],"description": "一款功能强大的台式电脑,适用于工作和娱乐。","price": 999.99},"BlueWave Chromebook": {"name": "BlueWave Chromebook","category": "电脑和笔记本","brand": "BlueWave","model_number": "BW-CB100","warranty": "1 year","rating": 4.1,"features": ["11.6-inch display", "4GB RAM", "32GB eMMC", "Chrome OS"],"description": "一款紧凑而价格实惠的Chromebook,适用于日常任务。","price": 249.99},"SmartX ProPhone": {"name": "SmartX ProPhone","category": "智能手机和配件","brand": "SmartX","model_number": "SX-PP10","warranty": "1 year","rating": 4.6,"features": ["6.1-inch display", "128GB storage", "12MP dual camera", "5G"],"description": "一款拥有先进摄像功能的强大智能手机。","price": 899.99},"MobiTech PowerCase": {"name": "MobiTech PowerCase","category": "专业手机","brand": "MobiTech","model_number": "MT-PC20","warranty": "1 year","rating": 4.3,"features": ["5000mAh battery", "Wireless charging", "Compatible with SmartX ProPhone"],"description": "一款带有内置电池的保护手机壳,可延长使用时间。","price": 59.99},"SmartX MiniPhone": {"name": "SmartX MiniPhone","category": "专业手机","brand": "SmartX","model_number": "SX-MP5","warranty": "1 year","rating": 4.2,"features": ["4.7-inch display", "64GB storage", "8MP camera", "4G"],"description": "一款紧凑而价格实惠的智能手机,适用于基本任务。","price": 399.99},"MobiTech Wireless Charger": {"name": "MobiTech Wireless Charger","category": "专业手机","brand": "MobiTech","model_number": "MT-WC10","warranty": "1 year","rating": 4.5,"features": ["10W fast charging", "Qi-compatible", "LED indicator", "Compact design"],"description": "一款方便的无线充电器,使工作区域整洁无杂物。","price": 29.99},"SmartX EarBuds": {"name": "SmartX EarBuds","category": "专业手机","brand": "SmartX","model_number": "SX-EB20","warranty": "1 year","rating": 4.4,"features": ["True wireless", "Bluetooth 5.0", "Touch controls", "24-hour battery life"],"description": "通过这些舒适的耳塞体验真正的无线自由。","price": 99.99},"CineView 4K TV": {"name": "CineView 4K TV","category": "电视和家庭影院系统","brand": "CineView","model_number": "CV-4K55","warranty": "2 years","rating": 4.8,"features": ["55-inch display", "4K resolution", "HDR", "Smart TV"],"description": "一款色彩鲜艳、智能功能丰富的惊艳4K电视。","price": 599.99},"SoundMax Home Theater": {"name": "SoundMax Home Theater","category": "电视和家庭影院系统","brand": "SoundMax","model_number": "SM-HT100","warranty": "1 year","rating": 4.4,"features": ["5.1 channel", "1000W output", "Wireless subwoofer", "Bluetooth"],"description": "一款强大的家庭影院系统,提供沉浸式音频体验。","price": 399.99},"CineView 8K TV": {"name": "CineView 8K TV","category": "电视和家庭影院系统","brand": "CineView","model_number": "CV-8K65","warranty": "2 years","rating": 4.9,"features": ["65-inch display", "8K resolution", "HDR", "Smart TV"],"description": "通过这款惊艳的8K电视,体验未来。","price": 2999.99},"SoundMax Soundbar": {"name": "SoundMax Soundbar","category": "电视和家庭影院系统","brand": "SoundMax","model_number": "SM-SB50","warranty": "1 year","rating": 4.3,"features": ["2.1 channel", "300W output", "Wireless subwoofer", "Bluetooth"],"description": "使用这款时尚而功能强大的声音,升级您电视的音频体验。","price": 199.99},"CineView OLED TV": {"name": "CineView OLED TV","category": "电视和家庭影院系统","brand": "CineView","model_number": "CV-OLED55","warranty": "2 years","rating": 4.7,"features": ["55-inch display", "4K resolution", "HDR", "Smart TV"],"description": "通过这款OLED电视,体验真正的五彩斑斓。","price": 1499.99},"GameSphere X": {"name": "GameSphere X","category": "游戏机和配件","brand": "GameSphere","model_number": "GS-X","warranty": "1 year","rating": 4.9,"features": ["4K gaming", "1TB storage", "Backward compatibility", "Online multiplayer"],"description": "一款下一代游戏机,提供终极游戏体验。","price": 499.99},"ProGamer Controller": {"name": "ProGamer Controller","category": "游戏机和配件","brand": "ProGamer","model_number": "PG-C100","warranty": "1 year","rating": 4.2,"features": ["Ergonomic design", "Customizable buttons", "Wireless", "Rechargeable battery"],"description": "一款高品质的游戏手柄,提供精准和舒适的操作。","price": 59.99},"GameSphere Y": {"name": "GameSphere Y","category": "游戏机和配件","brand": "GameSphere","model_number": "GS-Y","warranty": "1 year","rating": 4.8,"features": ["4K gaming", "500GB storage", "Backward compatibility", "Online multiplayer"],"description": "一款体积紧凑、性能强劲的游戏机。","price": 399.99},"ProGamer Racing Wheel": {"name": "ProGamer Racing Wheel","category": "游戏机和配件","brand": "ProGamer","model_number": "PG-RW200","warranty": "1 year","rating": 4.5,"features": ["Force feedback", "Adjustable pedals", "Paddle shifters", "Compatible with GameSphere X"],"description": "使用这款逼真的赛车方向盘,提升您的赛车游戏体验。","price": 249.99},"GameSphere VR Headset": {"name": "GameSphere VR Headset","category": "游戏机和配件","brand": "GameSphere","model_number": "GS-VR","warranty": "1 year","rating": 4.6,"features": ["Immersive VR experience", "Built-in headphones", "Adjustable headband", "Compatible with GameSphere X"],"description": "通过这款舒适的VR头戴设备,进入虚拟现实的世界。","price": 299.99},"AudioPhonic Noise-Canceling Headphones": {"name": "AudioPhonic Noise-Canceling Headphones","category": "音频设备","brand": "AudioPhonic","model_number": "AP-NC100","warranty": "1 year","rating": 4.6,"features": ["Active noise-canceling", "Bluetooth", "20-hour battery life", "Comfortable fit"],"description": "通过这款降噪耳机,体验沉浸式的音效。","price": 199.99},"WaveSound Bluetooth Speaker": {"name": "WaveSound Bluetooth Speaker","category": "音频设备","brand": "WaveSound","model_number": "WS-BS50","warranty": "1 year","rating": 4.5,"features": ["Portable", "10-hour battery life", "Water-resistant", "Built-in microphone"],"description": "一款紧凑而多用途的蓝牙音箱,适用于随时随地收听音乐。","price": 49.99},"AudioPhonic True Wireless Earbuds": {"name": "AudioPhonic True Wireless Earbuds","category": "音频设备","brand": "AudioPhonic","model_number": "AP-TW20","warranty": "1 year","rating": 4.4,"features": ["True wireless", "Bluetooth 5.0", "Touch controls", "18-hour battery life"],"description": "通过这款舒适的真无线耳塞,无需线缆即可享受音乐。","price": 79.99},"WaveSound Soundbar": {"name": "WaveSound Soundbar","category": "音频设备","brand": "WaveSound","model_number": "WS-SB40","warranty": "1 year","rating": 4.3,"features": ["2.0 channel", "80W output", "Bluetooth", "Wall-mountable"],"description": "使用这款纤薄而功能强大的声音吧,升级您电视的音频体验。","price": 99.99},"AudioPhonic Turntable": {"name": "AudioPhonic Turntable","category": "音频设备","brand": "AudioPhonic","model_number": "AP-TT10","warranty": "1 year","rating": 4.2,"features": ["3-speed", "Built-in speakers", "Bluetooth", "USB recording"],"description": "通过这款现代化的唱片机,重拾您的黑胶唱片收藏。","price": 149.99},"FotoSnap DSLR Camera": {"name": "FotoSnap DSLR Camera","category": "相机和摄像机","brand": "FotoSnap","model_number": "FS-DSLR200","warranty": "1 year","rating": 4.7,"features": ["24.2MP sensor", "1080p video", "3-inch LCD", "Interchangeable lenses"],"description": "使用这款多功能的单反相机,捕捉惊艳的照片和视频。","price": 599.99},"ActionCam 4K": {"name": "ActionCam 4K","category": "相机和摄像机","brand": "ActionCam","model_number": "AC-4K","warranty": "1 year","rating": 4.4,"features": ["4K video", "Waterproof", "Image stabilization", "Wi-Fi"],"description": "使用这款坚固而紧凑的4K运动相机,记录您的冒险旅程。","price": 299.99},"FotoSnap Mirrorless Camera": {"name": "FotoSnap Mirrorless Camera","category": "相机和摄像机","brand": "FotoSnap","model_number": "FS-ML100","warranty": "1 year","rating": 4.6,"features": ["20.1MP sensor", "4K video", "3-inch touchscreen", "Interchangeable lenses"],"description": "一款具有先进功能的小巧轻便的无反相机。","price": 799.99},"ZoomMaster Camcorder": {"name": "ZoomMaster Camcorder","category": "相机和摄像机","brand": "ZoomMaster","model_number": "ZM-CM50","warranty": "1 year","rating": 4.3,"features": ["1080p video", "30x optical zoom", "3-inch LCD", "Image stabilization"],"description": "使用这款易于使用的摄像机,捕捉生活的瞬间。","price": 249.99},"FotoSnap Instant Camera": {"name": "FotoSnap Instant Camera","category": "相机和摄像机","brand": "FotoSnap","model_number": "FS-IC10","warranty": "1 year","rating": 4.1,"features": ["Instant prints", "Built-in flash", "Selfie mirror", "Battery-powered"],"description": "使用这款有趣且便携的即时相机,创造瞬间回忆。","price": 69.99}
}
        //通过产品名称查询商品public JSONObject getProductByName(String name) {JSONObject jsonObject = JSONUtil.parseObj(allProducts);return jsonObject.getJSONObject(name);}//通过商品分类查询商品列表public List<JSONObject> getProductsByCategory(String category) {List<JSONObject> products = new ArrayList<>();JSONObject jsonObject = JSONUtil.parseObj(allProducts);for (Iterator<Map.Entry<String, Object>> it = jsonObject.iterator(); it.hasNext(); ) {Map.Entry entry = it.next();JSONObject object = (JSONObject) entry.getValue();String cat = object.getStr("category");if (category.equals(cat)) {products.add(object);}}return products;}
        JSONObject jsonObject = getProductByName("TechPro Ultrabook");log.info("test3-product:\n{}", jsonObject);
test3-product:
{"name":"TechPro 超极本","category":"电脑和笔记本","brand":"TechPro","model_number":"TP-UB100","warranty":"1 year","rating":4.5,"features":["13.3-inch display","8GB RAM","256GB SSD","Intel Core i5 处理器"],"description":"一款时尚轻便的超极本,适合日常使用。","price":799.99}
        List<JSONObject> products = getProductsByCategory("Computers and Laptops");log.info("test3-products:\n{}", products);
test3-products:
[{"name":"TechPro 超极本","category":"电脑和笔记本","brand":"TechPro","model_number":"TP-UB100","warranty":"1 year","rating":4.5,"features":["13.3-inch display","8GB RAM","256GB SSD","Intel Core i5 处理器"],"description":"一款时尚轻便的超极本,适合日常使用。","price":799.99}, {"name":"BlueWave 游戏本","category":"电脑和笔记本","brand":"BlueWave","model_number":"BW-GL200","warranty":"2 years","rating":4.7,"features":["15.6-inch display","16GB RAM","512GB SSD","NVIDIA GeForce RTX 3060"],"description":"一款高性能的游戏笔记本电脑,提供沉浸式体验。","price":1199.99}, {"name":"PowerLite Convertible","category":"电脑和笔记本","brand":"PowerLite","model_number":"PL-CV300","warranty":"1 year","rating":4.3,"features":["14-inch touchscreen","8GB RAM","256GB SSD","360-degree hinge"],"description":"一款多功能的可转换笔记本电脑,具有灵敏的触摸屏。","price":699.99}, {"name":"TechPro Desktop","category":"电脑和笔记本","brand":"TechPro","model_number":"TP-DT500","warranty":"1 year","rating":4.4,"features":["Intel Core i7 processor","16GB RAM","1TB HDD","NVIDIA GeForce GTX 1660"],"description":"一款功能强大的台式电脑,适用于工作和娱乐。","price":999.99}, {"name":"BlueWave Chromebook","category":"电脑和笔记本","brand":"BlueWave","model_number":"BW-CB100","warranty":"1 year","rating":4.1,"features":["11.6-inch display","4GB RAM","32GB eMMC","Chrome OS"],"description":"一款紧凑而价格实惠的Chromebook,适用于日常任务。","price":249.99}]

根据详细的产品信息生成用户查询的答案

        String system = "您是一家大型电子商店的客服助理。\n" +"请以友好和乐于助人的口吻回答问题,并尽量简洁明了。\n" +"请确保向用户提出相关的后续问题。";String user = "请介绍一下 TechPro 超极本。\n" +"另外,介绍关于电脑产品的信息。";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);List<JSONObject> products = getProductsByCategory("电脑和笔记本");ChatMessage assistant = new ChatMessage();assistant.setRole("assistant");assistant.setContent("相关产品信息:\n" + JSONUtil.toJsonStr(products));messages.add(assistant);String message = this.getCompletionFromMessage(messages, 0);log.info("test4: {}", message);

输出:

TechPro 超极本是一款时尚轻便的超极本电脑,适合日常使用。它具有13.3英寸的显示屏,8GB的内存,256GB的固态硬盘和Intel Core i5处理器。它的价格是799.99美元,享有1年的保修期。关于台式电脑产品,我们有TechPro Desktop和BlueWave游戏本等多种选择。TechPro Desktop是一款功能强大的台式电脑,配备Intel Core i7处理器,16GB内存,1TB硬盘和NVIDIA GeForce GTX 1660显卡。它的价格是999.99美元,享有1年的保修期。BlueWave游戏本是一款高性能的游戏笔记本电脑,具有15.6英寸的显示屏,16GB内存,512GB固态硬盘和NVIDIA GeForce RTX 3060显卡。它的价格是1199.99美元,享有2年的保修期。您对这些产品有什么进一步的问题吗?

我们讨论了如何通过一系列步骤加载与用户查询相关的信息,为模型提供所需的上下文,以有效回答问题。 您可能会想,为什么我们选择性地将产品描述加载到提示中,而不是包含所有产品描述,让模型使用它所需的信息呢?

这其中有几个原因。

首先,包含过多的产品描述可能会使模型在处理上下文时感到困惑,就像对于试图一次处理大量信息的人一样。当然,对于像 GPT-4 这样更高级的模型来说,这个原因就不太重要了。尤其是当上下文像这个例子一样具有良好的结构时,模型足够聪明,能够巧妙地忽略那些明显不相关的信息。

接下来的原因更加具有说服力。

第一个原因,包含所有产品描述可能会使模型对上下文更加混乱,就像对于试图一次处理大量信息的人一样。当然,对于像 GPT-4 这样更高级的模型来说,这个问题不太相关,特别是当上下文像这个例子一样结构良好时,模型足够聪明,只会忽略明显不相关的信息。接下来的原因更有说服力。

第二个原因是,语言模型有上下文限制,即固定数量的 token 允许作为输入和输出。如果您有一个巨大的产品目录,您甚至无法将所有描述都放入上下文窗口中。

最后一个原因是,包含所有产品描述可能会使模型过拟合,因为它会记住所有的产品描述,而不是只记住与查询相关的信息。这可能会导致模型在处理新的查询时表现不佳。

使用语言模型时,由于按 token 付费,可能会很昂贵。因此,通过有选择地加载信息,可以减少生成响应的成本。一般来说,确定何时动态加载信息到模型的上下文中,并允许模型决定何时需要更多信息,是增强这些模型能力的最佳方法之一。

并且要再次强调,您应该将语言模型视为需要必要上下文才能得出有用结论和执行有用任务的推理代理。因此,在这种情况下,我们必须向模型提供产品信息,然后它才能根据该产品信息进行推理,为用户创建有用的答案。

在这个例子中,我们只添加了一个特定函数或函数的调用,以通过产品名称获取产品描述或通过类别名称获取类别产品。但是,模型实际上擅长决定何时使用各种不同的工具,并可以正确地使用它们。
这就是 ChatGPT 插件背后的思想。我们告诉模型它可以访问哪些工具以及它们的作用,它会在需要从特定来源获取信息或想要采取其他适当的操作时选择使用它们。在这个例子中,我们只能通过精确的产品和类别名称匹配查找信息,但还有更高级的信息检索技术。检索信息的最有效方法之一是使用自然语言处理技术,例如命名实体识别和关系提取。

另一方法是使用文本嵌入(Embedding)来获取信息。嵌入可以用于实现对大型语料库的高效知识检索,以查找与给定查询相关的信息。使用文本嵌入的一个关键优势是它们可以实现模糊或语义搜索,这使您能够在不使用精确关键字的情况下找到相关信息。因此,在此例子中,我们不一定需要产品的确切名称,而可以使用更一般的查询如 “手机” 进行搜索。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/94497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式数据库sqlite3基本命令操作基础(05)

前言 数据在实际工作中应用非常广泛&#xff0c;数据库的产品也比较多&#xff0c;oracle、DB2、SQL2000、mySQL&#xff1b;基于嵌入式linux的数据库主要有SQLite, Firebird, Berkeley DB, eXtremeDB。 本文主要讲解数据库SQLite&#xff0c;通过这个开源的小型的嵌入式数据…

基于阶梯碳交易的含P2G-CCS耦合和燃气掺氢的虚拟电厂优化调度(matlab代码)

目录 1 主要内容 系统结构图 P2G-CCS 耦合模型 其他算例对比 2 部分代码 3 下载链接 1 主要内容 该程序复现《基于阶梯碳交易的含P2G-CCS耦合和燃气掺氢的虚拟电厂优化调度》模型&#xff0c;以碳交易和碳封存成本、燃煤机组启停和煤耗成本、弃风成本、购气成本之和为目标…

CANoe.Diva生成测试用例

Diva目录 一、CANoe.Diva打开CDD文件二、导入CDD文件三、ECU Information四、时间参数设置五、选择是否测试功能寻址六、勾选需要测试服务项七、生成测试用例 一、CANoe.Diva打开CDD文件 CANoe.Diva可以通过导入cdd或odx文件&#xff0c;自动生成全面的测试用例。再在CANoe中导…

简单查找重复文本文件

声明这是最初 我的提问给个文本分类清单input查找文件夹下 .py .txt .excel .word 一模一样的文本不是找文件名 找相同格式下的文件文本是否一样 文件单独复制到文件夹下两个文件全部复制到文件夹下 print 打印相同文本文件的名字 比如查找到了3.py与4.5.是.py文件中的文本文件…

二分查找模版

对于一个递增序列我们要找大于等于target的数&#xff0c;返回结果的下标时 比如 序列 5 7 7 8 8 10 初始化左右指针l0 rn-1 猜测区间 [l,r] 闭区间&#xff0c;mid(lr)/2 防溢出就写成 midl(r-l)/2 如果有nums[mid]<target 那么[l,mid]这个区间的数就都小于target 更新 lmi…

5.Vectors Transformation Rules

在上节&#xff0c;有个问题&#xff1a;向量分量的转换方式 与 新旧基底的转换方式相反 用例子来感受一下&#xff0c; 空间中一向量V&#xff0c;即该空间的一个基底&#xff1a;e1、e2 v e1 e2 现把基底 e1 、 e2 放大两倍。变成 基向量放大了两倍&#xff0c; 但对于…

Javascript 事件的动态绑定

动态绑定事件&#xff0c;是指在代码执行过程中&#xff0c;通过Javascript代码来绑定事件。这种技术可以大大增强网页的交互性和用户体验。上一期介绍的是通过事件监听器 EventListener 去实现元素颜色的变化。这一期将通过动态绑定方法去实现&#xff0c;对象.事件 匿名函数…

【广州华锐互动】鱼类授精繁殖VR虚拟仿真实训系统

随着科技的不断发展&#xff0c;虚拟现实技术在各个领域的应用越来越广泛。在养殖业中&#xff0c;VR技术可以帮助养殖户进行家鱼授精实操演练&#xff0c;提高养殖效率和繁殖成功率。本文将介绍利用VR开展家鱼授精实操演练的方法和应用。 首先&#xff0c;我们需要了解家鱼授精…

mysql双主+双从集群连接模式

架构图&#xff1a; 详细内容参考&#xff1a; 结果展示&#xff1a; 178.119.30.14(主) 178.119.30.15(主) 178.119.30.16(从) 178.119.30.17(从)

Java中的instanceof

Java中的instanceof运算符是一种非常有用的工具&#xff0c;它可以帮助我们在运行时动态地确定对象的类型。通过使用instanceof&#xff0c;我们可以轻松地检查一个对象是否是指定类型&#xff08;或其子类&#xff09;的实例。本文将详细介绍instanceof运算符的使用方法、特点…

【C++】基础入门

万字复习C基础入门语法&#xff0c;适合学过C的朋友用来复习查阅&#xff0c;可能不太适合0基础的朋友。 一.c初识 (1) 第一个c程序 最简单的格式&#xff1a; // 导入头文件 #include<iostream> // 简化对命名空间std下函数和对象的使用 using namespace std; // …

STM32驱动步进电机

前言 &#xff08;1&#xff09;本章介绍用stm32驱动42步进电机&#xff0c;将介绍需要准备的硬件器材、所需芯片资源以及怎么编程及源代码等等。 &#xff08;2&#xff09;实验效果&#xff1a;按下按键&#xff0c;步进电机顺时针或逆时针旋转90度。 &#xff08;3&#xff…

Multisim14.0仿真(二十七)基于UC3842的反激式开关电源的设计及仿真

一、UC3842简介&#xff1a; UC3842为固定频率电流模式PWM控制器。它们是专门为OFF−线和直流到直流转换器应用与最小的外部组件。内部实现的电路包括用于精确占空比控制的修剪振荡器、温度补偿参考、高增益误差放大器、电流传感比较器和理想适合于驱动功率MOSFET的高电流温度极…

openGauss学习笔记-89 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用查询原生编译

文章目录 openGauss学习笔记-89 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用查询原生编译89.1 查询编译&#xff1a;PREPARE语句89.2 运行命令89.3 轻量执行支持的查询89.4 轻量执行不支持的查询89.5 JIT存储过程89.6 MOT JIT诊断89.6.1 mot_jit_detai…

调度程序以及调度算法的评价指标

1.调度器/调度程序 调度程序决定调度算法&#xff0c;时间片大小 ②&#xff0c;③由调度程序引起&#xff0c;调度程序决定: 1.调度时机 创建新进程进程退出运行进程阻塞I/O中断发生&#xff08;可能唤醒某些阻塞进程)非抢占式调度策略&#xff0c;只有运行进程阻塞或退出…

强化学习环境 - robogym - 学习 - 1

强化学习环境 - robogym - 学习 - 1 项目地址 https://github.com/openai/robogym 为什么选择 robogym 自己的项目需要做一些机械臂 table-top 级的多任务操作 robogym 基于 mujoco 搭建&#xff0c;构建了一个仿真机械臂桌面物体操作&#xff08;pick-place、stack、rearr…

视频讲解|基于DistFlow潮流的配电网故障重构代码

目录 1 主要内容 2 视频链接 1 主要内容 该视频为基于DistFlow潮流的配电网故障重构代码讲解内容&#xff0c;对应的资源下载链接为基于DistFlow潮流的配电网故障重构(输入任意线路)&#xff0c;对该程序进行了详尽的讲解&#xff0c;基本做到句句分析和讲解&#xff08;讲解…

【题解 动态规划】 Colored Rectangles

题目描述&#xff1a; 分析&#xff1a; 乍一看我还以为是贪心&#xff01; 猫 想想感觉没问题 但是局部最优并不能保证全局最优 比如这组数据 19 19 19 19 20 20 20 20如果按照贪心的做法&#xff0c;答案是20*20*2 但是其实答案是19*20*4 因此这道题用贪心是不对的 于是我…

MATLAB 函数签名器

文章目录 MATLAB 函数签名器注释规范模板参数类型 kind数据格式 type选项的支持 使用可执行程序封装为m函数程序输出 编译待办事项推荐阅读附录 MATLAB 函数签名器 MATLAB 函数签名器 (FUNCSIGN) &#xff0c;在规范注释格式的基础上为函数文件或类文件自动生成函数签名&#…

【软件设计师-中级——刷题记录6(纯干货)】

目录 管道——过滤器软件体系结构风格优点&#xff1a;计算机英语重点词汇&#xff1a;单元测试主要检查模块的以下5个特征&#xff1a;数据库之并发控制中的事务&#xff1a;并发产生的问题解决方案:封锁协议原型化开发方法&#xff1a; 每日一言&#xff1a;持续更新中... 个…