ChatGPT 最佳实践指南之:将复杂任务拆分为较简单的子任务

news2024/12/22 16:31:18

Split complex tasks into simpler subtasks

将复杂任务分解为较简单的子任务

Just as it is good practice in software engineering to decompose a complex system into a set of modular components, the same is true of tasks submitted to GPTs. Complex tasks tend to have higher error rates than simpler tasks. Furthermore, complex tasks can often be re-defined as a workflow of simpler tasks in which the outputs of earlier tasks are used to construct the inputs to later tasks.

与软件工程中将复杂系统分解为一组模块化组件的最佳实践相同,将任务提交给 GPT 时也是如此。与较简单的任务相比,复杂任务的错误率往往更高。此外,复杂任务通常可以重新定义为一系列较简单任务的工作流程,其中较早任务的输出被用于构建后续任务的输入。

Tactic: Use intent classification to identify the most relevant instructions for a user query

技巧:使用意图分类识别与用户查询最相关的指示

For tasks in which lots of independent sets of instructions are needed to handle different cases, it can be beneficial to first classify the type of query and to use that classification to determine which instructions are needed. This can be achieved by defining fixed categories and hardcoding instructions that are relevant for handling tasks in a given category. This process can also be applied recursively to decompose a task into a sequence of stages. The advantage of this approach is that each query will contain only those instructions that are required to perform the next stage of a task which can result in lower error rates compared to using a single query to perform the whole task. This can also result in lower costs since larger prompts cost more to run (see pricing information).

对于需要处理不同情况下的许多独立指令集的任务,首先对查询进行分类,并使用分类来确定所需的指令,这将是有益的。可以通过定义固定的类别并硬编码与给定类别下任务处理相关的指令来实现。这个过程也可以递归应用于将任务分解为一系列阶段。这种方法的优点是每个查询只包含执行任务的下一个阶段所需的指令,与使用单个查询执行整个任务相比,这可以降低错误率。这还可以降低成本,因为更大的提示需要更多的资源(请参阅定价信息)。

Suppose for example that for a customer service application, queries could be usefully classified as follows:

例如,假设对于客户服务应用程序,查询可以有以下有用的分类:

SYSTEM

系统

You will be provided with customer service queries. Classify each query into a primary category and a secondary category. Provide your output in json format with the keys: primary and secondary.

您将收到客户服务查询。将每个查询分类为主要类别和次要类别。使用 JSON 格式提供输出,键为:主要和次要。

Primary categories: Billing, Technical Support, Account Management, or General Inquiry.

主要类别:计费、技术支持、帐户管理或一般查询。

Billing secondary categories:

- Unsubscribe or upgrade

- Add a payment method

- Explanation for charge

- Dispute a charge

计费的次要类别:

- 退订或升级

- 添加付款方式

- 收费解释

- 争议收费

Technical Support secondary categories:

- Troubleshooting

- Device compatibility

- Software updates

技术支持的次要类别:

- 故障排除

- 设备兼容性

- 软件更新

Account Management secondary categories:

- Password reset

- Update personal information

- Close account

- Account security

帐户管理的次要类别:

- 密码重置

- 更新个人信息

- 关闭帐户

- 帐户安全

General Inquiry secondary categories:

- Product information

- Pricing

- Feedback

- Speak to a human

一般查询的次要类别:

- 产品信息

- 定价

- 反馈

- 联系人工客服

USER

用户

I need to get my internet working again.

我需要让我的互联网再次工作起来。

Based on the classification of the customer query, a set of more specific instructions can be provided to a GPT model to handle next steps. For example, suppose the customer requires help with "troubleshooting".

根据客户查询的分类,可以提供一组更具体的指令给 GPT 模型处理下一步操作。例如,假设客户需要帮助“故障排除”。

SYSTEM

系统

You will be provided with customer service inquiries that require troubleshooting in a technical support context. Help the user by:

您将收到需要在技术支持上下文中进行故障排除的客户服务查询。通过以下方式帮助用户:

- Ask them to check that all cables to/from the router are connected. Note that it is common for cables to come loose over time.

- 要求他们检查与路由器相连的所有电缆是否连接。请注意,随着时间的推移,电缆常常会松动。

- If all cables are connected and the issue persists, ask them which router model they are using

- 如果所有电缆连接正常且问题仍然存在,请询问他们使用的路由器型号。

- Now you will advise them how to restart their device:

- 现在,请告诉他们如何重新启动设备:

-- If the model number is MTD-327J, advise them to push the red button and hold it for 5 seconds, then wait 5 minutes before testing the connection.

- 如果型号是 MTD-327J,请建议他们按下红色按钮并保持按压 5 秒钟,然后等待 5 分钟后测试连接。

-- If the model number is MTD-327S, advise them to unplug and replug it, then wait 5 minutes before testing the connection.

如果型号是 MTD-327S,请建议他们拔下插头并重新插上,然后等待 5 分钟后测试连接。

- If the customer's issue persists after restarting the device and waiting 5 minutes, connect them to IT support by outputting {"IT support requested"}.

如果客户在重新启动设备并等待 5 分钟问题仍然存在,则通过输出 {"IT support requested"} 将他们连接到 IT 支持。

- If the user starts asking questions that are unrelated to this topic then confirm if they would like to end the current chat about troubleshooting and classify their request according to the following scheme:

- 如果用户开始询问与此主题无关的问题,则确认他们是否想结束当前有关故障排除的聊天,并根据以下方案对其请求进行分类:

USER

用户

<insert primary/secondary classification scheme from above here>

<在上面插入主要/次要分类方案>

I need to get my internet working again.

我需要让我的互联网再次工作起来。

Notice that the model has been instructed to emit special strings to indicate when the state of the conversation changes. This enables us to turn our system into a state machine where the state determines which instructions are injected. By keeping track of state, what instructions are relevant at that state, and also optionally what state transitions are allowed from that state, we can put guardrails around the user experience that would be hard to achieve with a less structured approach.

请注意,已指示模型发出特殊字符串以指示会话状态何时发生变化。这使我们能够将系统转变为一个状态机,其中状态确定注入哪些指令。通过跟踪状态、确定在该状态下哪些指令相关,以及可选地确定从该状态允许的状态转换,我们可以为用户体验设置防护措施,这对于使用不太结构化的方法很难实现。

Tactic: For dialogue applications that require very long conversations, summarize or filter previous dialogue

技巧:对于需要非常长对话的对话应用,总结或过滤先前的对话

Since GPTs have a fixed context length, dialogue between a user and an assistant in which the entire conversation is included in the context window cannot continue indefinitely.

由于 GPT 模型有固定的上下文长度,在用户与助手之间的对话中,如果整个对话都包含在上下文窗口中,对话不能无限继续下去。

There are various workarounds to this problem, one of which is to summarize previous turns in the conversation. Once the size of the input reaches a predetermined threshold length, this could trigger a query that summarizes part of the conversation and the summary of the prior conversation could be included as part of the system message. Alternatively, prior conversation could be summarized asynchronously in the background throughout the entire conversation.

有多种解决这个问题的方法,方法之一是对先前的对话进行总结。一旦输入的大小达到预定的阈值长度,这可能会触发一个查询,对对话的一部分进行总结,先前对话的总结可以作为系统消息的一部分包含在其中。或者,可以在整个对话过程中异步地对先前的对话进行总结。

An alternative solution is to dynamically select previous parts of the conversation that are most relevant to the current query. See the tactic "Use embeddings-based search to implement efficient knowledge retrieval".

另一种解决方案是动态选择与当前查询最相关的先前对话部分。请参阅策略“使用基于嵌入的搜索来实现高效的知识检索”。

Tactic: Summarize long documents piecewise and construct a full summary recursively

策略:逐段总结长文档并递归构建完整总结

Since GPTs have a fixed context length, they cannot be used to summarize a text longer than the context length minus the length of the generated summary in a single query.

由于 GPT 模型有固定的上下文长度,无法在单个查询中对超出上下文长度减去生成总结长度的文本进行总结。

To summarize a very long document such as a book we can use a sequence of queries to summarize each section of the document. Section summaries can be concatenated and summarized producing summaries of summaries. This process can proceed recursively until an entire document is summarized. If it’s necessary to use information about earlier sections in order to make sense of later sections, then a further trick that can be useful is to include a running summary of the text that precedes any given point in the book while summarizing content at that point. The effectiveness of this procedure for summarizing books has been studied in previous research by OpenAI using variants of GPT-3.

要对非常长的文档(如书籍)进行总结,可以使用一系列查询来逐段总结文档的每个部分。可以将各个段落的总结连接并进行总结,生成总结的总结。这个过程可以递归进行,直到对整个文档进行总结。如果需要使用先前部分的信息才能理解后续部分,则可以在总结内容时,在给定点之前包含文本的运行总结。这个过程在以往的 OpenAI 研究中使用 GPT-3 的变体研究了对书籍进行总结的效果。

79fafbf1d2bd6183d724e2f6e96d6383.jpeg

“点赞有美意,赞赏是鼓励”

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

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

相关文章

Maven学习及分模块创建

一、引言 1.1 项目管理问题 写项目时&#xff0c;我们需要引用各种 jar 包&#xff0c;尤其是比较大的工程&#xff0c;引用的 jar 包往往有几十个乃至上百个&#xff0c; 每用 到一种 jar 包&#xff0c;都需要手动引入工程目录&#xff0c;而且经常遇到各种让人抓狂的 jar 包…

【Hello mysql】 mysql的复合查询 (重点)

Mysql专栏&#xff1a;Mysql 本篇博客简介&#xff1a;介绍mysql的复合查询 mysql的复合查询 基本查询回顾查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的姓名首字母为大写的J按照部门号升序而雇员的工资降序排序使用年薪进行降序排序显示工资最高的员工…

kgm --> mp3

kgm转换mp3 kgm应该是kugou那个音乐播放器的音乐文件吧&#xff0c;把mp3转成自己定义的文件 转换工具&#xff0c;免费一天3首 转换完成头部&#xff0c;添加了几秒的广告&#xff01;&#xff01;&#xff01;唉 转换修改mp3头部 作为有开发经验的我&#xff0c;哪里有法子…

音视频编码实战-------pcm+yuv数据转成MP4

文章目录 1.编码流程图2.相关模块及函数2.1 编码器相关API2.2 复用器相关API2.3 重采样相关API注意点 简单的编码流程相关代码 1.编码流程图 2.相关模块及函数 2.1 编码器相关API avcodec_find_encoder: 根据编码器ID查找编码器 avcodec_alloc_context3:创建编码器上下文 avc…

使用wxPtyon和pillow开发拼图小游戏(一)

刚学习python&#xff0c;心血来潮&#xff0c;使用wxPython和pillow开了一个简单的拼图小游戏&#xff0c;大家分享一下 wxPython是Python语言的一套优秀的GUI图形库&#xff0c;在此项目里主要用来开发GUI客户页面&#xff1b;Pillow是一个非常好用的图像处理库&#xff0c;…

Python编译器Pycharm使用技巧

欢迎来到mo的python学习之路 目录 pycharm一些小技巧 1.更换pycharm主题颜色 1.1默认颜色 1.2设置其他颜色 2.汉化 2.1具体操作 3. 创建python包和文件 &#xff0c;运行python文件 3.1创建python包 3.2创建python文件 3.3运行python文件 3.快捷方式 pycharm一些小技巧 …

2023年11月软考高级网络规划设计师报名时间-报名入口-报名流程

软考高级网络规划设计师报名时间&#xff1a; 广东2023下半年软考高级网络规划设计师报名时间&#xff1a;8月16日9:00-8月24日17:00 江西2023下半年软考高级网络规划设计师报名时间&#xff1a;8月15日9点-9月8日17点 安徽2023下半年软考高级网络规划设计师报名时间&#x…

NTIRE 2023 Challenge on Efficient Super-Resolution——RepRFN:当RFDN遇到重参数化

RepRFN&#xff1a;当RFDN遇到重参数化 0. 简介 NTIRE 的全称为New Trends in Image Restoration and Enhancement Challenges&#xff0c;即“图像复原和增强挑战中的新趋势”&#xff0c;是CVPR(IEEE Conference on Computer Vision and Pattern Recognition)举办的极具影响…

终端关于GPU的命令行

1.了解GPU的资源利用情况&#xff1a; nvidia-smi 2.实时刷新&#xff08;1秒&#xff09;&#xff1a; nvidia-smi -l 1 3.配合watch命令可实时显示GPU运行状态&#xff1a; watch -n 1 nvidia-smi 其中 1 为刷新的时间间隔。 4.将监控结果写入文件&#xff0c;并且指定…

又是一条慢 SQL 改写,拿捏!

作者分享了一条慢 SQL 分析和优化的过程&#xff0c;总结出切实有效的优化手段。 作者&#xff1a;马文斌 MySQL 爱好者。 本文来源&#xff1a;原创投稿 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 背景 开发同学丢…

苹果M1/M2 Mac正式支持运行Win11

微软与虚拟化软件 Parallels 达成合作&#xff0c;允许在 Apple M1 和 M2 Mac 上的虚拟环境中运行 Windows 11。“Parallels Desktop 版本 18 是一个授权解决方案&#xff0c;用于在其平台上的 Apple M1 和 M2 计算机上的虚拟环境中运行 Arm 版本的 Windows 11 Pro 和 Windows …

算法学习 day23

669. 修剪二叉搜索树 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果没有被移除&#xff0c;原有的父代…

【高级程序设计语言C++】初识模板

1. 函数模板1.1函数模板的实例化1.2显示实例化1.3模板参数的匹配原则 2.类模板2.1类模板的定义格式2.2类模板的实例化 1. 函数模板 概念&#xff1a; 函数模板代表了一个函数家族&#xff0c;该函数模板与类型无关&#xff0c;在使用时被参数化&#xff0c;根据实参类型产生函…

字符串模式匹配算法(暴力破解、KMP、BM、Sunday)

目录 暴力破解 KMP 算法 构造 next 数组 KMP代码 BM 算法 Sunday 算法 参考资料 又通过leetcode复习了之前的知识:找出字符串中第一个匹配项的下标 暴力破解 你的面前有两段序列 S 和 T&#xff0c;你需要判断 T 是否可以匹配成为 S 的子串。 你可能会凭肉眼立即得出结…

11万字智慧环卫管理平台综合解决方案2023

导读&#xff1a;原文《11万字智慧环卫管理平台综合解决方案word2023》word&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 目 录 第1章 项目概述 1.1 项目名称 …

Java安全——SSL和HTTPS

Java安全 SSL和HTTPS SSL提供了在TCP套接字之上的对数据进行加密的方法&#xff0c;也是HTTPS协议的基础利用JSSE(java安全套接字扩展包)可以像处理协议一样创建和使用SSL套接字&#xff0c;从而支持HTTPS协议SSL和tcp套接字之间的紧密关系&#xff0c;本身并不是一个加密引擎…

PyTorch预训练和微调:以VGG16为例

文章目录 预训练和微调代码测试结果参考来源 预训练和微调代码 数据集&#xff1a;CIFAR10 CIFAR-10数据集由10类32x32的彩色图片组成&#xff0c;一共包含60000张图片&#xff0c;每一类包含6000图片。其中50000张图片作为训练集&#xff0c;10000张图片作为测试集。数据集介…

16. 替换空格

链接&#xff1a; 链接 题目&#xff1a; 请实现一个函数&#xff0c;把字符串中的每个空格替换成"%20"。 数据范围 0≤0≤ 输入字符串的长度 ≤1000≤1000。 注意输出字符串的长度可能大于 10001000。 样例 输入&#xff1a;"We are happy."输出&#xff…

python简易版的飞机大战(图片资源请自找)

# 引入pygame工具包 import pygame from pygame.locals import * import time import random import sys # 初始化pygame pygame.init() # 创建一个宽480高650的一个画布canvas canvas pygame.display.set_mode((480, 650)) # 加工图片资源 bg pygame.image.load(bg.png)# 背…

Vue3之app.config.globalProperties(定义全局变量)

使用之因 一般我们在vue开发中&#xff0c;常用的功能&#xff0c;接口等等我们都会封装起来&#xff0c;如何每次创建一个组件&#xff0c;想要使用这些封装起来的功能、接口等等都需要先引入&#xff0c;再通过层层调用才可以得到结果&#xff0c;如果我现在一遍需要调用后端…