通过工件流水线解决 GPT 分支问题

news2026/4/29 23:42:04
原文towardsdatascience.com/solve-the-gpt-branching-problem-with-an-artifact-pipeline-44024398c15f?sourcecollection_archive---------11-----------------------#2024-01-09使用自定义 GPT 设计一个饮食规划应用https://medium.com/andrew.tyler.lucas?sourcepost_page---byline--44024398c15f--------------------------------https://towardsdatascience.com/?sourcepost_page---byline--44024398c15f-------------------------------- Andrew Lucas·发布于Towards Data Science ·14 分钟阅读·2024 年 1 月 9 日–https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/2566e3aa4af39c38b5ce25abe0dfeb5c.png“分支问题”由作者使用 ChatGPT 创建“创建一个应用帮助我规划一周的饮食。”想象一下如果你可以要求 ChatGPT 实现一个完整的应用并提供下载链接。尽管目前的技术还不足以实现这一点但 AI 已经能够自动化一些工作流程的部分内容例如需求定义、任务规划甚至是编码。当提供正确的指示时ChatGPT或自定义 GPT可以帮助递归地分解问题。当我们将问题划分为子问题时我们需要跟踪所有生成的不同“分支”。这些分支会进一步分裂成更多的分支形成一个复杂的树状结构。我称之为分支问题。我们将探讨几种方法使用基于 GPT 的工具创建明确输出的工件作为应用设计流程的一部分。最后我将解释这如何帮助克服分支问题。AI 免责声明除了在我明确引用 ChatGPT 以阐述观点时本故事的文字内容并未使用 AI 生成。像人类一样思考首先让我们思考一下人类是如何处理我的应用请求的。假设我在询问一个实际上有能力满足这个请求的人比如一个软件公司项目经理。最初的请求不够具体。一个人类项目经理会知道立即开始提问。什么样的应用它可以是一个网站一个移动应用甚至是类似于 Slack 的机器人。在这种情况下我更倾向于一个移动应用以及一个适配手机的网页应用但我也可以接受其中任何一个。我希望如何进行餐单规划事实证明我已经思考了这一点。对于我来说有一些食材是我偏好购买并使用的所以我希望这个应用能利用 AI根据我提供的食材清单生成食谱。我已经用 ChatGPT 做过这件事所以我知道这是可行的。我通过实验知道ChatGPT 可以估算食材的卡路里和宏量营养素含量所以我希望这能被包含在内。我还知道 ChatGPT 倾向于低估这些量因此我希望有某种方式来处理这个问题无论是通过手动审核更安全还是通过某种百分比自动调整这些值更懒。当我向软件公司提出请求时我早就已经考虑到了所有这些内容但我不会把它们直接作为信息块呈现给他们。我会让他们在对话过程中逐步提取细节。这减少了我的认知负担并且让公司的代表能在适当的速度下整合这些信息记笔记或按照他们自己的接收流程进行。这是人类自然的沟通方式但 ChatGPT 并不知道我希望它问我澄清性问题。ChatGPT 并不知道自己不知道什么这是当我问“创建一个帮助我制定一周餐单的应用”时GPT-4 的回答。为了简洁回答已被缩短。创建一个应用涉及几个关键步骤1. 定义应用的目的和功能2. 设计用户界面UI3. 选择开发方法4. 开发应用5. 测试应用6. 启动并推广应用7. 维护和更新这是一个简化的概述。每个步骤都包含基于你具体需求和资源的详细过程和决策。ChatGPT 的回答令人沮丧且无用。我已经知道了所有这些。更糟糕的是ChatGPT 会对每一点进行痛苦的详细解释告诉我什么是开发一个应用。如果我在这里停下来可能会得出结论认为 AI 很笨不懂得如何真正构建一个应用但我会错的。告诉它你想要的显而易见的第一个解决方案就是直接告诉 ChatGPT 你希望它做什么。OpenAI 为我们提供了一个方便的功能叫做自定义指令允许我们在与它开始对话之前给 ChatGPT 额外的指令以便它能够更好地理解我们的需求。这是Andrew Mayne前Prompt Whisper推荐的几条自定义指令https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c54d628c53139ad7b1ab4b7c26fe8c0c.png由作者拍摄的 ChatGPT 自定义指令截图Mayne 的指令简洁而有用提供了三个有价值的功能这些指令建议 ChatGPT 应该问你澄清性问题。也许更好的是将“应该”明确指出。它们要求 ChatGPT 提供多种澄清方式。这减少了您澄清想法时所需的认知负担通过让您从列表中选择而非从零开始生成。问题按字母顺序组织您只需回复字母及任何想要添加的内容即可。拥有这些自定义指令后ChatGPT 给出的回复更加有趣设计一个餐点规划应用是个好主意为了根据您的需求量身定制我有几个问题可以帮助引导开发过程1.用户体验与界面A. 您偏好简洁和极简的设计还是更鲜艳和互动的设计B. 应用是否应该包括诸如餐点照片等视觉元素还是保持文本为主2.功能性与特性A. 您希望应用根据饮食偏好例如素食、酮饮食、无麸质推荐餐点吗B. 应用是否应该包括一个根据餐点计划更新的购物清单功能C. 您希望有一个功能来追踪每餐的营养信息吗D. 与智能家居设备或其他应用如健身追踪器的集成会有用吗3.个性化与数据输入A. 应用是否允许您输入个人数据如体重、身高、饮食限制以进行个性化餐点规划B. 您希望能够手动输入或编辑餐点计划吗C. 是否希望有一个根据您的偏好随着时间变化学习的功能4.附加功能A. 您希望有一个社区功能例如与其他用户分享餐点计划或食谱吗B. 应用是否应该包含烹饪教学视频或食谱链接C. 是否希望有一个功能用于规划特殊场合如假期或聚会的餐点随时回答这些问题或者添加您认为对理想餐点规划应用至关重要的其他功能这样更有帮助。也许 ChatGPT 真的可以帮助构建应用不幸的是Andrew Mayne 的三条指令不足以创建一个真正有用的工作流助手。ChatGPT 的问题在使用 ChatGPT 一段时间后您会注意到一些问题ChatGPT 会问很多问题而您需要跟踪所有这些问题。最终您将拥有一个分支树形结构的可能性您需要以某种方式维护它。这就是分支问题。它所提的问题大多是随机的。两次对话可能会有完全不同的问题集从而导致不同的应用设计。而且您怎么知道什么时候停止回答问题呢事实上我们需要一种方法来找到最佳设计。您的对话线程越长ChatGPT 忘记自定义指令并恢复提供那些令人烦恼的模糊概述列表的可能性就越大。根据我的经验ChatGPT 最适合在短时间内使用。我们将看看解决这些问题的两种不同方法特别是在开发餐点规划应用的背景下GPT Pilot 代理OpenAI 的新自定义 GPTs代理方法GPT PilotGPT Pilot 项目通过创建多个具有明确角色和输出的 AI 代理实现了一个概念验证的软件开发流程。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ef1e34bbc9c0a191bebd8e7db2a75b86.png来自 GPT Pilot Github 页面链接见上的截图它们有一个产品负责人角色负责创建用户故事一个架构师角色决定技术需求一个技术负责人角色负责将工作拆分成开发任务以及一个开发者角色负责编写代码。它们使用 OpenAI API 在这些角色中创建一个或多个代理。可以将“代理”看作是一个单独的 AI 实例。用户将通过一个工作流协作开发 Web 应用程序与每个代理合作。首先产品负责人代理向用户询问关于应用程序想法的澄清问题。然后架构师代理建议使用特定的软件框架。技术负责人代理创建开发任务队列开发者代理则依次处理每个任务。这个策略看起来是朝着正确方向迈进的一步。AI 代理无法完全独立完成工作流程中的每个步骤但它们可以通过引导用户通过预定义的流程执行部分工作然后要求用户提供更多信息并最终批准或拒绝产物从而显著加速开发过程。如果代理收到用户的拒绝它将继续迭代。如果代理收到批准则可以继续开发流程的下一步。实际上我发现 GPT Pilot 目前还不可用。我花了几分钟时间尝试使用它设置一个包含 Python Flask 后端的 React.js 应用而这是 ChatGPT 能轻松指导用户完成的任务。GPT Pilot 代理经常会忘记它们正在运行的目录。总体而言这次测试我花费了大约 1.50 美元的 OpenAI API 使用费用。虽然不多但由于它经常且早期失败我决定它尚不能与 ChatGPT 竞争。我们会给他们一些时间修复漏洞并使工具更加灵活。自定义 GPT 方法与此同时我们可以实现一个类似的策略——将任务分解成步骤——但是与其使用基于 API 的代理来执行每个步骤不如使用自定义 GPTs。使用自定义 GPTs 流程时我们无需为使用付费——只需支付每月 20 美元的 ChatGPT Plus 订阅费用。一个缺点是自定义 GPT 有一个每个用户每 3 小时 50 次请求的使用限制。3 小时除以 50 次请求大约等于每 4 分钟一次请求。我个人从未达到过这个限制我认为只要不频繁浪费请求于模糊或不准确的提示达到这一限制的可能性不大。我可以在不到 4 分钟的时间内将 ChatGPT 生成的代码集成到我的代码库中但瓶颈在于搞清楚接下来应该向 ChatGPT 提出什么问题。通常这一过程平均需要超过 4 分钟。人类思考速度并不快……我们需要大量的咖啡休息时间。示例需求收集 GPT创建一款餐单规划应用的第一步是定义应用程序需要执行的实际需求。有多种定义需求的方法但敏捷开发方法建议从最终用户的角度来定义需求。我们称之为用户故事。下面是一些针对餐单规划应用的用户故事示例As a user,I want to create an account to accessandpersonalize my experience.As a user,I want toinputalistof ingredientsandreceive meal recipe suggestions.As a user,I want to add meals to a customizable weekly meal plan.As a user,I want to adjust the number of servingsforeach mealinthe plan.As a user,I want to generate a grocerylistbased on my weekly meal plan.As a user,I want to view a recipewithits title,description,ingredients,macronutrient stats,andtotal price.As a user,I want to edit ingredient quantitiesandpricesina recipe.As a user,I want tosetdietary restrictionsinmy profile settings.As a user,I want to save my favorite recipesandmeal plansforfuture use.注意从技术上讲这些应该包括用户为什么要执行这些操作但为了简便起见我将其省略了。我为需求收集创建了一个定制的 GPT使用了以下指令You are an experienced software project manager who manages the entire process of creating software applicationsforclientsfromthe client specifications to the development.You are talking to a client who wants your team to develop an applicationforthem.//1\.DO be conciseandto-the-point.//2\.DO ensure every word you say has a very specific purpose.//3\.DO NOT repeat yourself.//4\.DO NOT use pleasantriesandformalities likegood morningandhello.//5\.DO focus on listening to the client.GOAL:Gather requirementsandcreate a collection of user storiesforthe application that will be provided to a software architectforsystem design.THINK STEP BY STEP to perform the following steps:1\.ASK the clientfora description of their app.2\.ITERATE through the following stepsina loop:*STEP1:SUMMARIZE the app requirements so far.*STEP2:ASK the client to either answer3clarifying questions about the app OR approve the the requirements summaryas-is.*STEP3:IF client has chosen to answer the clarifying questions rather than approving,LOOP to SUMMARIZEandASK questions again.3\.Once the requirements are approved,WRITE user stories into afileinMARKDOWN FORMAT.Thefileshould contain bullet items ONLY.4\.PROVIDE thatfileasa DOWNLOAD.EXAMPLE USER STORIESfora to-dolistapp:-As a user,I want to press a button to create a new to-dolist.-As a user,I want to enter a new todolistitem using a textinput.-As a user,I want to deleteanylistitem atanypoint.-...Conduct the conversationasthough you are talking to the client.1. 提供人物角色You are an experienced software project manager在其默认角色“有帮助的助手”中ChatGPT 给出的建议相当无聊。避免这种情况的方法是给定制 GPT 设定一个具体的人物角色。2. 定义语气//1\.DO be conciseandto-the-point.//2\.DO ensure every word you say has a very specific purpose.//3\.DO NOT repeat yourself.//4\.DO NOT use pleasantriesandformalities likegood morningandhello.//5\.DO focus on listening to the client.我基于实际的 ChatGPT 定制指令格式来设计了这个特别的提示格式该格式几周前通过一个黑客方法可以访问。结合“//”字符、列表项和大写字母可以让模型更好地关注指令。3. 提供目标GOAL:Gather requirementsandcreate a collection of user storiesforthe application that will be provided to a software architectforsystem design.相当简单——只需告诉模型你想做什么。4. 提供方法THINK STEP BY STEP to perform the following steps:1\.ASK the clientfora description of their app.2\.ITERATE through the following stepsina loop:*STEP1:SUMMARIZE the app requirements so far.*STEP2:ASK the client to either answer3clarifying questions about the app OR approve the the requirements summaryas-is.*STEP3:IF client has chosen to answer the clarifying questions rather than approving,LOOP to SUMMARIZEandASK questions again.3\.Once the requirements are approved,WRITE user stories into afileinMARKDOWN FORMAT.Thefileshould contain bullet items ONLY.4\.PROVIDE thatfileasa DOWNLOAD.正如 OpenAI 的 Andrej Karpathy 所说“最火的新编程语言是英语”。问题在于英语并不擅长给出详细且精确的指令。这也是我们最初发明编程语言的原因在这个例子中我设计了自己的伪代码来告诉模型如何生成用户故事。我很惊讶于模型能够遵循我给出的循环。这个方法为提示设计开辟了许多可能性。5. 给出示例EXAMPLE USER STORIESfora to-dolistapp:-As a user,I want to press a button to create a new to-dolist.-As a user,I want to enter a new todolistitem using a textinput.-As a user,I want to deleteanylistitem atanypoint.如果你希望你的 GPT 始终输出相同格式提供示例这是告诉它你期望输出哪种格式的最佳方法。6. 采用人物角色Conduct the conversationasthough you are talking to the client.GPT 应该直接进入人物角色因此我在指令的最后加上了这一行要求直接与客户对话。工具化解决了分支问题分支问题自由形式的对话通常呈现分支树状结构每一轮对话都会开启多个不同的可能性指引对话走向不同的方向。通常我们从大局开始然后逐步钻研细节。不幸的是我们每次只能走一条路径且在经历了多个分支后很难回溯并探索其他路径。例如我必须决定如何开始阐述我为餐饮计划应用编写的用户故事。我可以选择为用户账户管理、构建食材清单、生成餐点创意或生成购物清单添加用户故事但一次只能探索一个功能集。最终我将需要回溯并定义其他功能。我将需要遍历整个功能树。工件作为共享内存我们可以通过构建工件来处理分支。由于我正在使用 GPT 构建一个特定的工件——一个用户故事列表因此更容易“返回”到我错过的先前分支。我可以随时查看列表中的任何主题看看哪些需要进一步阐述然后请求 GPT 添加更多用户故事。通过这种方式工件作为我的外部记忆。更重要的是这种方法还迫使 GPT 在每次迭代时保持工件的最新版本因为工件在每次更新并重复。当我完成详细说明某个特定功能如餐点生成后GPT 会输出整个更新后的用户故事列表。我可以立即继续处理另一个话题如购物清单生成而无需重新向 GPT 解释整个应用程序。该工件作为用户和自定义 GPT 之间的外部共享内存。多级工件在定义需求时我将使用平面列表作为我的输出工件但你也可以通过使用多级列表在工件中模拟树状结构。对于无序组件使用项目符号对于顺序使用编号列表。例如如果我正在概述一个应用程序的软件模块可能需要将设计拆分为通用模块然后为每个高层模块添加几个子模块。例如我可能想要一个“餐单计划”模块其中包含“编辑餐单计划”和“生成购物清单”的子模块。这个例子有点牵强但多级设计对于更复杂的项目是很有用的。工件为管道提供数据工件为你和模型提供共享内存但它们也可以用于连接管道的不同部分。用户故事必须在确定技术需求之前定义。技术需求必须在设计用户界面或编写代码之前概述。总结来说不要只与 ChatGPT 交流。创建构建特定工件的自定义 GPT。将自定义 GPT 链接在一起形成一个管道。总有一天人工智能将能够独立执行整个管道。你会向 ChatGPT 请求一个应用程序它将通过Neuralink读取你的思维并提供一个 zip 文件供你下载。与此同时使用 AI 自动化过程并执行工作流中繁琐的部分。这仍然是计算机最擅长的事情。如果你对 AI 或智能理论感兴趣可以查看我在 Substack 上的出版物Agentic AI。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…