Logic
Logic components 提供路由、條件處理和 Flow管理功能。
If-Else (conditional router)
If-Else 組件是一個條件路由器,通過比較兩個字符串來路由消息。
它使用指定的運算符比較兩個文本輸入來評估條件,然後根據評估結果將消息路由到 true_result 或 false_result。
運算符根據運算符和匹配文本 (match_text) 在輸入 (input_text) 中查找單個字符串,但也可以通過匹配正則表達式來搜索多個單詞。
可用的運算符包括:
- equals:精確匹配比較
- not equals:精確匹配的反向
- contains:檢查
match_text是否在input_text中找到 - starts with:檢查
input_text是否以match_text開頭 - ends with:檢查
input_text是否以match_text結尾 - regex:在區分大小寫的模式上匹配
默認情況下,除 regex 外,所有運算符都不區分大小寫。 regex 始終區分大小寫,您可以在 If-Else 參數 中為所有其他運算符啟用區分大小寫。
在 Flow中使用 If-Else 組件
以下示例使用 If-Else 組件通過正則表達式匹配檢查 傳入的聊天消息,然後根據匹配評估為真還是假輸出不同的響應。

-
將 If-Else 組件添加到您的 Flow中,然後按以下方式配置:
-
Text Input:將 Text Input 端口連接到 Chat Input 組件或其他
Message輸入。如果您的輸入不是
Message格式,您可以使用其他組件來轉換它,例如 Type Convert 組件 或 Parser 組件。 如果您的輸入不適合Message格式,請考慮使用其他組件進行條件路由,例如 Data Operations 組件。 -
Match Text:輸入
.*(urgent|warning|caution).*,使組件在傳入輸入中查找這些值。正則表達式匹配區分大小寫,因此如果您需要查找warning的所有排列,請輸入warning|Warning|WARNING。 -
Operator:選擇 regex。
-
Case True:在組件的標題菜單中,點擊 Controls,啟用 Case True 參數,點擊 Close,然後在字段中輸入
New Message Detected。當匹配條件評估為真時,Case True 消息從 True 輸出端口發送。
沒有為 Case False 設置消息,因此當條件評估為假時,組件不會發出消息。
-
-
根據您希望在結果為 True 時發生什麼,添加組件到您的 Flow中來執行該邏輯:
-
將 Language Model、Prompt Template 和 Chat Output 組件添加到您的 Flow中。
-
在 Language Model 組件中,輸入您的 OpenAI API 密鑰或選擇不同的提供商和模型。
-
將 If-Else 組件的 True 輸出端口連接到 Language Model 組件的 Input 端口。
-
在 Prompt Template 組件中,輸入評估為真時模型的指令,例如
Send a message that a new warning, caution, or urgent message was received。 -
將 Prompt Template 組件連接到 Language Model 組件的 System Message 端口。
-
將 Language Model 組件的輸出連接到 Chat Output 組件。
-
-
使用另一組 Language Model、Prompt Template 和 Chat Output 組件重複相同過程以處理 False 結果。
將 If-Else 組件的 False 輸出端口連接到第二個 Language Model 組件 的 Input 端口。 在第二個 Prompt Template 中,輸入評估為假時模型的指令,例如
Send a message that a new low-priority message was received。 -
要測試 Flow,打開 Playground,然後向 Flow發送一些帶有和不帶正則表達式字符串的消息。 聊天輸出應根據正則表達式評估反映您提示中的指令。
_10User: A new user was created._10_10AI: A new low-priority message was received._10_10User: Sign-in warning: new user locked out._10_10AI: A new warning, caution, or urgent message was received. Please review it at your earliest convenience.
If-Else 參數
某些參數在視覺編輯器中預設為隱藏。 您可以透過 Components的標頭選單 中的 Controls 修改所有參數。
| 名稱 | 類型 | 描述 |
|---|---|---|
| input_text | String | 輸入參數。主要文本輸入。 |
| match_text | String | 輸入參數。要比較的文本。 |
| operator | Dropdown | 輸入參數。用於比較文本的運算符。選項包括 equals、not equals、contains、starts with、ends with 和 regex。默認值為 equals。 |
| case_sensitive | Boolean | 輸入參數。當為 true 時,比較區分大小寫。默認值為 false。此設置不適用於正則表達式比較。 |
| max_iterations | Integer | 輸入參數。條件路由器允許的最大迭代次數。默認值為 10。 |
| default_route | Dropdown | 輸入參數。達到最大迭代次數時要採取的路由。選項包括 true_result 或 false_result。默認值為 false_result。 |
| true_result | Message | 輸出參數。條件為真時產生的輸出。 |
| false_result | Message | 輸出參數。條件為假時產生的輸出。 |
Loop
Loop 組件通過將單個項目傳遞給連接到 Item 輸出端口的其他組件來迭代輸入列表,直到沒有項目可以處理為止。 然後,Loop 組件將所有循環的聚合結果傳遞給連接到 Done 端口的組件。
循環過程
Loop 組件就像 Flow中的一個小型 Flow。 以下是循環過程的分解:
-
將輸入拆分為單個項目。例如,CSV 文件按行分解。
具體來說,Loop 組件重複從
Data或DataFrame對象中通過text鍵提取項目,直到沒有更多項目可以提取為止。 每個item輸出是一個Data對象。 -
通過將它們傳遞給 Item 輸出端口來迭代每個
item。此端口連接到對每個項目執行操作的一個或多個組件。 Item 循環中的最終組件連回 Loop 組件的 Looping 端口以處理下一個項目。
只有一個組件連接到 Item 端口,但您可以根據需要通過任意多個組件傳遞數據,只要鏈中的最後一個組件連回 Looping 端口。
If-Else 組件與 Loop 組件不兼容。 有關更多信息,請參閱條件循環。
-
處理所有項目後,結果被聚合到一個單一的
Data對象中,並從 Loop 組件的 Done 端口傳遞給 Flow中的下一個組件。
以下簡化的 Python 代碼總結了 Loop 組件的工作方式。 這_不是_實際的組件代碼;它只是為了幫助您理解一般過程。
_10for i in input: # 接收輸入數據作為列表_10 process_item(i) # 通過連接到 Item 端口的組件處理每個項目_10 if has_more_items():_10 continue # 循環回 Looping 端口以處理下一個項目_10 else:_10 break # 當沒有更多項目時退出循環_10_10done = aggregate_results() # 編譯所有返回的項目_10_10print(done) # 從 Done 端口將聚合結果發送到另一個組件
Loop 示例
在以下示例中,Loop 組件迭代 CSV 文件,直到沒有行可以處理為止。
在這種情況下,Item 端口將每一行傳遞給 Type Convert 組件以將行轉換為 Message 對象,將 Message 傳遞給 Structured Output 組件以處理為結構化數據,然後傳回 Loop 組件的 Looping 端口。
處理所有行後,Loop 組件通過連接到 Done 端口的 Chroma DB 組件將聚合的結構化數據列表加載到 Chroma DB 數據庫中。

有關 Loop 組件的更多示例,請嘗試 AgentBuilder 中的 Research Translation Loop 模板,或查看視頻教程 Mastering the Loop Component & Agentic RAG in AgentBuilder。
條件循環
If-Else 組件與 Loop 組件不兼容。
如果您需要條件循環事件,請重新設計您的 Flow以在循環之前處理條件。
例如,如果您正在循環遍歷 DataFrame,您可以使用多個 DataFrame Operations 組件 有條件地過濾數據,然後對每個過濾的數據集運行單獨的循環。

Notify and Listen
Notify 和 Listen 組件一起使用。
Notify 組件從當前 Flow的上下文中構建通知,包括特定的數據內容和狀態標識符。
生成的通知被發送到 Listen 組件。 通知數據然後可以傳遞給 Flow中的其他組件,例如 If-Else 組件。
Run flow
Run Flow 組件將另一個 AgentBuilder Flow作為當前 Flow的子 Flow運行。
您可以使用此組件將 Flow鏈接在一起,有條件地運行 Flow,並將 Flow附加到 Agent 組件 作為 agent tools 以根據需要運行。
與 agent 一起使用時,agent 用於註冊工具的 name 和 description 元數據會自動創建。
當您為 Run Flow 組件選擇 Flow時,它使用目標 Flow的圖結構在 Run Flow 組件上動態生成輸入和輸出字段。
Run Flow 參數
某些參數在視覺編輯器中預設為隱藏。 您可以透過 Components的標頭選單 中的 Controls 修改所有參數。
| 名稱 | 類型 | 描述 |
|---|---|---|
| flow_name_selected | Dropdown | 輸入參數。要運行的 Flow名稱。 |
| session_id | String | 輸入參數。FLOW運行的會話 ID,如果您想為子FLOW傳遞自定義會話 ID。 |
| flow_tweak_data | Dict | 輸入參數。字典形式的調整,用於自定義FLOW的行為。可用調整取決於選定的FLOW。 |
| dynamic inputs | Various | 輸入參數。基於選定FLOW生成的其他輸入。 |
| run_outputs | List of types (Data, Message, or DataFrame) | 輸出參數。運行 Flow生成的所有輸出。 |
Legacy Logic components
舊版Components不再受支援,並且可能在未來版本中被移除。 您可以繼續在現有 Flow 中使用它們,但建議您盡快將它們替換為受支援的Components。 建議的替換方案包含在 Flow 中Components上的 Legacy 橫幅中。 它們也會在發行說明和 AgentBuilder 文件中盡可能提供。
如果您不確定如何替換舊版Components,請按提供者、服務或Components名稱 Search Components。 Components可能已被棄用,取而代之的是完全新的Components、類似的Components,或同一類別中同一Components的較新版本。
如果沒有明顯的替換方案,請考慮另一個Components是否可 以適應您的使用案例。 例如,許多 Core components 提供通用功能,可以支援多個提供者和使用案例,例如 API Request Components。
如果這些選項都不可行,您可以使用舊版Components的程式碼建立自己的自訂Components,或在 GitHub 上開始討論 關於舊版Components。
為了阻止在新 Flow 中使用舊版Components,這些Components預設為隱藏。 在視覺編輯器中,您可以點擊 Component settings 來切換 Legacy 篩選器。
以下 Logic 組件處於遺留狀態:
Condition
作為此遺留組件的替代方案,請參閱 If-Else 組件。
Condition 組件根據應用於指定鍵的條件路由 Data 對象,包括布爾值驗證。
它支持 true_output 和 false_output 用於根據條件評估路由結果。
此組件對於需要條件路由複雜數據結構的工作 Flow很有用,實現基於數據內容的動態決策。
它可以處理單個 Data 對象或 Data 對象列表。
處理 Data 對象列表時會發生以下操作:
- 列表中的每個對象單獨評估。
- 滿足條件的對象進入
true_output。 - 不滿足條件的對象進入
false_output。 - 如果所有對象都進入一個輸出,另一個輸出為空。
Condition 組件接受以下參數:
| 名稱 | 類型 | 描述 |
|---|---|---|
| data_input | Data | 輸入參數。要處理的 Data 對象或 Data 對象列表。此輸入可以處理單個項目和列表。 |
| key_name | String | 輸入參數。Data 對象中要檢查的鍵的名稱。 |
| operator | Dropdown | 輸入參數。要應用的運算符。選項:equals、not equals、contains、starts with、ends with、boolean validator。默認值:equals。 |
| compare_value | String | 輸入參數。要比較的值。當運算符為 boolean validator 時不顯示/使用。 |
operator 選項具有以下行為:
equals:鍵的值與 compare_value 之間的精確匹配比較。not equals:精確匹配的反向。contains:檢查 compare_value 是否在鍵的值中找到。starts with:檢查鍵的值是否以 compare_value 開頭。ends with:檢查鍵的值是否以 compare_value 結尾。boolean validator:將鍵的值視為布爾值。以下值被視為真:- 布爾值
true。 - 字符串:
true、1、yes、y、on(不區分大小寫) - 任何其他值使用 Python 的
bool()函數轉換
- 布爾值
Pass
作為此遺留組件的替代方案,使用 If-Else 組件 來無修改地傳遞消息。
Pass 組件無修改地轉發輸入消息。
它接受以下參數:
| 名稱 | 顯示名稱 | 信息 |
|---|---|---|
| input_message | Input Message | 輸入參數。要轉發的消息。 |
| ignored_message | Ignored Message | 輸入參數。第二個消息被忽略。用作連續性的解決方法。 |
| output_message | Output Message | 輸出參數。來自輸入的轉發消息。 |
Flow As Tool
此組件從運行已加載 Flow的函數構造工具。
它在 AgentBuilder 版本 1.1.2 中被棄用,並被 Run Flow 組件 替換。
Sub Flow
此組件將整個 Flow作為組件集成到更大的工作 Flow中。 它基於選定的FLOW動態生成輸入並使用提供的參數執行FLOW。
它在 AgentBuilder 版本 1.1.2 中被棄用,並被 Run Flow 組件 替換。