《扣子开发AI Agent智能体应用(人工智能技术丛书)》(宋立桓,王东健,陈铭毅,程东升)【摘要 书评 试读】- 京东图书

《扣子开发AI Agent智能体应用》案例重现 开发agent智能体的书籍-CSDN博客

工作流是指一系列相互关联的步骤或任务,用于完成特定的业务过程或项目。它定义了任务的顺序、执行者以及相关的条件和规则,以确保流程的顺利进行和最终目标的达成。本章将介绍扣子工作流的分类、解决的问题、逻辑结构。

工作流及其分类

工作流在日常工作中很常见。例如,财务报销要经过填写报销单、提交发票、财务审核、分管领导审核等步骤,就是典型的工作流;软件开发领域的CI/CD流水线也是一种工作流。扣子的工作流与传统工作流类似,但也有不同之处。传统工作流既可以手动执行,也可以自动执行,或者二者结合。扣子的工作流是一种自动执行多个相关步骤的可复用流程,一个Bot可以使用多个工作流,即Bot可以根据用户的行为选择并执行不同的工作流。

1. 扣子工作流

扣子工作流是一种通过可视化方式,组合插件、大语言模型、代码块等功能节点,用于实现复杂业务逻辑的流程编排。它允许用户通过拖放的方式,将不同的功能节点连接起来,形成一个完成特定任务的工作流程,使得解决问题的逻辑更加清晰,输出更加稳定和可靠。讲到这里,自然会产生一个疑问:为什么大模型不直接执行完成相关的任务,告诉我们结果就行?为什么还要引入一个工作流?

原因很简单,虽然现在的大模型比较智能,但是还没有达到绝顶智能的程度。大模型(或者说生成式AI)是基于概率来生成内容的,这就意味着它并不是每次都能给出符合要求的结果,特别是对返回结果要求比较精确的场景。

工作流的核心在于将大模型的能力与特定的业务逻辑相结合,通过系统化、流程化的方法来实现高效、可扩展的AI应用开发。工作流也是对当前大模型能力不足的一种补偿机制,在大模型智能化程度还不够高的时候,通过人为编排的工作流(注入人的智能),让智能体具有更高的可用性和可靠性,从而提升用户体验。

2. 扣子工作流的分类

扣子提供以下两种类型的工作流:

(1)工作流(Workflow):用于处理功能类的请求,可通过顺序执行一系列节点实现某个功能。适合数据的自动化处理场景,例如生成行业调研报告、生成一张海报、制作绘本等。

(2)对话流(Chatflow):是基于对话场景的特殊工作流,更适合处理对话类请求。对话流通过对话的方式与用户交互,并完成业务逻辑。

相较于工作流而言,对话流更适合处理对话场景下的交互逻辑。每个对话流都绑定了一个会话,运行时可以从此会话中读取历史消息,同时将本次运行对话流产生的消息记录在这个会话中,相当于一个拥有了记忆的工作流。

你如果需要搭建一个智能体,智能体本身支持上下文和会话能力,那么可以随意选择工作流或对话流。

如果你需要搭建一个对话式的AI应用,例如AI助手、智能体客服等基于对话方式交互的AI应用,推荐你使用对话流。对话流中的大模型可以读取会话上下文、管理会话,还可以搭建对话式的用户界面,并发布到各种社交通信软件中。

如果你需要搭建一个工具类的AI应用,用来批量处理数据、实现任务流程的自动化,可以选择工作流实现。

工作流能解决什么问题

既然我们已经对扣子的工作流有所了解,那么工作流能解决什么问题?或者说在什么情况下要使用工作流?根据作者自己的理解给出一些适用场景,供读者参考。

1. 使用提示词无法达到预期效果的场景

在Coze平台搭建Bot智能体时,一般先从编写提示词开始。有时我们按照提示词工程技巧编写了清晰明确的结构化指令,经过反复迭代优化,仍然达不到预期效果,那么可以考虑采用工作流。例如,在长文本写作(如调研报告)中,先要收集相关资料,生成写作大纲,划分各个章节,再对各个章节进一步收集资料、逐步生成内容,最后进行总结。仅仅通过提示词,大模型可能难以产生一篇结构合理、内容翔实的文章,这时可以通过工作流来实现。

2. 需要多次调用插件或外部工具的场景

有些大模型具有Function Call能力,可以调用外部工具。但如果需要调用多个外部工具,且它们具有严格依赖关系时,大模型可能不是每次都能很好地完成目标。例如,我们需要根据一个URL获取网页内容、总结要点、生成思维导图。其中,“网页内容抓取”和“生成思维导图”两个步骤都需要调用外部工具(插件),中间还需要大模型来总结要点。在这种情况下,通过工作流可以实现高效的流程管理。

3. 需要使用代码加工数据或生成响应的场景

我们利用大模型虽然能够产出还不错的内容,但是很难对数据进行精确处理。在这种情况下,可以使用工作流中的代码节点来解决精确处理的问题。在Coze官方文档中介绍了一个使用工作流和代码节点生成随机数的例子,读者可以查阅一下。

4. 需要根据某个条件执行不同分支来处理的场景

例如,开发一个答题Bot,根据用户选择的不同选项来回复不同的内容。

5. 需要在一次用户请求中多次输出消息的场景

大模型的工作方式是一问一答,即根据输入产生输出。在一些比较复杂的应用中,可能需要对一次用户的问题回复多条消息;或者一次完整输出的耗时较长,为了提高用户体验,需要分为多次输出。在这种场景中,可以在工作流中使用消息节点来实现多次输出。

扣子工作流的逻辑结构

简单来说,扣子工作流是一个有唯一输入和唯一输出的有向无环图。一个工作流是由一系列首尾相连的功能节点构成的,如图4-1所示。工作流的核心在于节点,节点是一个具有特定功能的独立模块,代表一个独立的步骤或逻辑。这些节点负责处理数据、执行任务和运行算法,并且它们都具备输入和输出。每个工作流都默认包含一个开始节点和一个结束节点。

图4-1  扣子工作流的逻辑结构

除了开始节点和结束节点是每个工作流中固定且唯一的节点之外,其他节点都可以任意添加。最简单的工作流可以只有一个开始节点和一个结束节点。开始节点是工作流的起始节点,定义启动工作流所需的输入参数。开始节点默认有一个输入参数 input,表示用户在本轮对话中输入的原始内容。结束节点是工作流的最终节点,用于返回工作流运行后的结果。结束节点支持两种返回方式:返回变量和返回文本。

通过引用节点的输出,你可以将节点连接在一起,形成一个无缝的操作链。例如,你可以在代码节点的输入中引用大模型节点的输出,这样代码节点就可以使用大模型节点的输出。在工作流编辑页面中,你可以看到这两个节点是连接在一起的。创建工作流就像搭积木,不同的积木(节点)可以自由组合,搭建成不同的形状(功能)。将一个任务分解为多个子任务,每个子任务对应一个节点,通过数据流将这些节点链接起来,便形成了工作流。

比如下图就是一个简单的工作流,包括3个节点:开始节点、大模型节点和结束节点。

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

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

相关文章

【一文解决】块级元素,行内元素,行内块元素

块级元素,行内元素,行内块元素!盒模型1.标准盒模型(box-sizing: content-box)2.IE 盒模型(box-sizing: border-box)!margin & padding1.margin、padding是什么2. 应用一、块级元…

在 Spring Boot 中使用 MyBatis 的 XML 文件编写 SQL 语句详解

前言 在现代 Java Web 开发中,Spring Boot 和 MyBatis 是两个非常流行的技术框架。它们的结合使得数据库操作变得更加简洁和高效。本文将详细介绍如何在 Spring Boot 项目中使用 MyBatis 的 XML 文件来编写 SQL 语句,包括配置、代码结构、SQL 编写技巧以…

字段级权限控制场景中,RBAC与ABAC的性能差异

RBAC(基于角色访问控制)与ABAC(基于属性访问控制)的性能差异主要体现在​​计算复杂度、策略灵活性、扩展性​​和​​资源消耗​​等方面。以下是具体对比分析: ​​一、性能对比维度​​ ​​维度​​​​RBAC​​​​ABAC​​​​计算复杂度​​低(预计算角色权限映射…

Reddit Karma是什么?Post Karma和Comment Karma的提升指南

在Reddit这一用户活跃度高的社区里,想要获得更好的曝光,我们就需要提升我们的Karma值,什么是Reddit Karma?怎么样才能提升以获得更大的影响力?本文将为你提高一套切实可行的提升方案。一、什么是Reddit Karma&#xff…

基于Canal实现MySQL数据库数据同步

一、基础概念与原理 1. Canal是什么? 阿里巴巴开源的MySQL binlog增量订阅与消费组件,通过伪装为MySQL Slave监听Master的binlog变更,实现实时数据同步。 Canal 官方网站:https://github.com/alibaba/canal Canal Demo&#x…

算法第23天|贪心算法:基础理论、分发饼干、摆动序列、最大子序和

今日总结: 摆动序列的三种特殊情况需要着重思考,感觉是没有思考清楚 基础理论 1、贪心的本质: 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 例如:一堆钞票,只能拿走10张,如何拿走最…

Q-chunking——带有动作分块的强化学习:基于人类演示,进行一定的连贯探索(且可做到无偏的n步价值回溯)

前言 我在之前的文章中提到过多次,长沙具身团队是我司建设的第二支具身团队,通过5月份的全力招聘,为了冲刺6月底和7月初来长沙办公室考察的第一批客户,过去一个多月来,长沙分部(一开始就5人,另外5人 实习…

NW956NW961美光固态闪存NW964NW968

美光固态闪存深度解析:NW956、NW961、NW964与NW968的全方位评测一、产品概述与市场定位在当今数据爆炸的时代,固态硬盘(SSD)作为存储领域的佼佼者,其性能与稳定性成为了用户关注的焦点。美光(Micron&#x…

C++修炼:IO流

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《C修炼之路》、《Linux修炼&#xff1a;终端之内 洞悉真理…

语音识别的速度革命:从 Whisper 到 Whisper-CTranslate2,我经历了什么?

Whisper-CTranslate2&#xff1a;语音识别的速度革命 大家好&#xff0c;一个沉迷于 AI 语音技术的 “音频猎人”。最近在处理大量播客转录项目时&#xff0c;我被传统语音识别工具折磨得苦不堪言 ——RTX 3090 跑一个小时的音频要整整 20 分钟&#xff0c;服务器内存分分钟爆满…

JVM 内存模型详解:GC 是如何拯救内存世界的?

JVM 内存模型详解&#xff1a;GC 是如何拯救内存世界的&#xff1f; 引言 Java 虚拟机&#xff08;JVM&#xff09;是 Java 程序运行的基础&#xff0c;其核心特性之一就是自动内存管理。与 C/C 不同&#xff0c;Java 开发者无需手动分配和释放内存&#xff0c;而是由 JVM 自动…

分布式全局唯一ID生成:雪花算法 vs Redis Increment,怎么选?

在黑马点评项目实战中&#xff0c;关于全局唯一ID生成的实现方案选择中&#xff0c;我看到有人提到了雪花算法&#xff0c;本文就来简单了解一下雪花算法与Redis的incr方案的不同。在分布式系统开发中&#xff0c;“全局唯一ID”是绕不开的核心问题。无论是分库分表的数据库设计…

(新手友好)MySQL学习笔记(完):事务和锁

事务和锁事务transaction&#xff0c;一组原子性的SQL查询&#xff0c;或者说是一个独立的工作单元。如果能够成功执行这组查询的全部语句&#xff0c;就会执行这组查询&#xff1b;如果其中任何一条语句无法成功执行&#xff0c;那么这组查询的所有语句都不会执行。也就是说&a…

【CMake】使用 CMake 将单模块 C 项目构建为库并链接主程序

目录1. 项目结构设计&#x1f4e6; 结构说明2. 项目文件内容2.1 顶层 CMakeLists.txt2.2 模块 src/color/CMakeLists.txt ✅【推荐写法】❓是否需要写 project()&#xff1f;2.3 模块头文件 include/color.h2.4 模块实现文件 src/color/color.c2.5 主程序 src/main.c3. 构建与运…

从零开始的云计算生活——番外4,使用 Keepalived 实现 MySQL 高可用

目录 前言 一、架构原理​ ​Keepalived 作用​ ​MySQL 主从复制​ 二、环境准备​ 服务器要求​&#xff1a; 安装基础软件​ 三、配置 MySQL 主从复制 四、配置 Keepalived 主节点配置​&#xff08;/etc/keepalived/keepalived.conf&#xff09; 从节点配置 五、…

list类的常用接口实现及迭代器

目录 1. list类的介绍 2.list类的常用接口 2.1 list类的常用构造 2.2 list类对象的容量操作 2.3 list迭代器 2.4 list类的常用操作 3.list的模拟实现 1. list类的介绍 list代表的是双向链表&#xff0c;常见的有创建&#xff0c;增&#xff0c;删&#xff0c;改几个接口…

vscode Cline接入火山引擎的Deepseek R1

创建火山引擎Deepseek R1的API 在火山引擎管理控制台中创建Deepseek R1推理接入点&#xff08;大模型&#xff09;&#xff0c;创建成功后会看到下图效果。在操作中选择API调用&#xff0c;在页面中选择OpenAI SDK&#xff0c;按照步骤找到baseUrl地址和API_KEY&#xff0c;后续…

新手向:自动化图片格式转换工具

大家好&#xff01;今天我要分享一个非常实用的Python小工具——图片格式批量转换器。如果你经常需要处理大量不同格式的图片文件&#xff0c;或者需要统一图片格式以便于管理&#xff0c;那么这个工具将会成为你的得力助手&#xff01;一、为什么需要图片格式转换&#xff1f;…

CUDA中的内存管理、锁页内存、UVA统一虚拟地址、零拷贝、统一内存

文章目录0 前言1 swap内存跟锁页内存2 UVA(Unified Virtual Addressing)统一虚拟地址3 先看最普通的cuda内存分配、释放、传输4 申请锁页内存4.1 cudaHostAllocDefault4.2 cudaHostAllocPortable4.3 cudaHostAllocWriteCombined4.3 cudaHostAllocMapped4.4 几种锁页内存总结4.5…

微服务环境下的灰度发布与金丝雀发布实战经验分享

微服务环境下的灰度发布与金丝雀发布实战经验分享 在大规模微服务架构中&#xff0c;如何平滑安全地上线新功能是每个后端团队的痛点。本文将结合生产环境中的真实案例&#xff0c;分享灰度发布&#xff08;Gray Release&#xff09;与金丝雀发布&#xff08;Canary Release&am…