扣子工作流詳解

《扣子開發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…