Skip to main content

Components概覽

Components是您 Flow的建構區塊。 就像應用程式中的類別一樣,每個Components都是為特定使用案例或整合而設計的。

tip

AgentBuilder 為工作區提供鍵盤快捷鍵。

在 AgentBuilder 標頭中,點擊您的個人資料圖示,選取 Settings,然後點擊 Shortcuts 以查看可用的快捷鍵。

將Components新增到 Flow

要將Components新增到 Flow,請從 Core components Bundles 選單中將Components拖曳到 工作區

Components按類型或提供者分組,有些Components預設為隱藏:

  • Core components:AgentBuilder 的基礎Components按用途分組,例如 Inputs and OutputsData。 這些 Components 麼提供通用功能,如迴圈和解析,要麼提供支援多個第三方整合的單一 Component。

  • Bundles:Bundles 包含一個或多個支援特定第三方整合的Components,並按服務提供者分組。

  • Legacy:這些Components預設為隱藏。 有關更多資訊,請參閱 Legacy components

配置Components

將Components新增到 Flow後,配置Components的參數並將其連接到 Flow中的其他Components。

每個Components都有與Components用途相關的輸入、輸出、參數和控制項。 預設情況下,Components僅顯示必需和常見選項。 要存取其他設定和控制項,包括元設定,請使用 Components的標頭選單

Components標頭選單

要存取Components的標頭選單,請點擊工作區中的Components。

Agent component

標頭選單上直接提供一些選項。 例如:

  • Code:通過直接編輯Components的 Python 程式碼來修改Components設定。
  • Controls:調整所有Components參數,包括預設隱藏的可選設定。
  • Tool Mode:將Components與 Agent Components結合時啟用此選項。

對於所有其他選項,包括 DeleteDuplicate 控制項,請點擊 Show More

重新命名Components

要修改Components的名稱或描述,請點擊工作區中的Components,然後點擊 Edit。 Components描述接受 Markdown 語法。

運行Components

要運行單一Components,請點擊 Run componentLast Run 值表示Components成功運行。

運行單一Components與運行整個 Flow不同。在單一Components運行中,會呼叫 build_vertex 函數,這會使用通過視覺化編輯器提供的直接輸入(inputs_dict 參數)來建置和運行僅該單一Components。VertexBuildResult 資料會傳遞給呼叫Components build 方法的 build_and_run 方法。與運行整個 Flow不同,運行單一Components不會自動執行其上游依賴項。

檢查Components輸出和日誌

要查看單一Components的輸出和日誌,請點擊 Inspect

Freeze Component

info

Freeze Component 也會 Freeze 選取 Component 上游的所有 Components。

如果您期望 Component(以及所有上游 Components)產生一致的輸出,並且只需要運行這些 Components 一次,請使用 Freeze 選項。

Freeze Component 會阻止該 Component 和所有上游 Components 重新運行,並保留這些 Components 的最後輸出狀態。 任何未來的 Flow運行都會使用保留的輸出。

要 Freeze Component,請點擊工作區中的 Component 以公開 Component 的標頭選單,點擊 Show More,然後選取 Freeze

Component Ports

在每個Components的邊框周圍,有圓形連接埠圖示,如 。 這些表示Components的 連接點Port

Port 麼接受輸入,要麼產生特定資料類型的輸出。 您可以從 Port 附加的欄位或 Port 的顏色 推斷資料類型。 例如,System Message 欄位接受 message data,如藍色連接埠圖示所示:

Prompt Template component with multiple inputs

在建置 Flow 時,將輸出 Port 連接到相同類型(顏色)的輸入 Port,以在兩個 Component 之間傳輸該類型的資料。 有關每個資料類型的程式化表示的資訊,請參閱 AgentBuilder data types

tip
  • 在工作區中,將滑鼠懸停在 Port 上以查看該 Port 的連接詳細資訊。 點擊 Port 以 Search 相容 Component。

  • 如果兩個Components具有不相容的資料類型,您可以使用處理Components如 Type Convert Components 在Components之間轉換資料。

動態 Port

有些 Component 具有動態新增或移除的 Port。 例如,Prompt Template Component 接受 在大括號中包裝的輸入,當在 Template 欄位中偵測到在大括號中包裝的值時,會開啟新的 Port。

Prompt Template component with multiple inputs

輸出類型選擇

所有 Component 都會產生輸出,這些輸出麼發送到 Flow 中的另一個 Component,要麼作為最終 Flow 結果返回。

有些Components可以產生多種類型的輸出:

  • 如果 Component 一次發出所有類型,Component 在視覺化編輯器中具有多個輸出 Port。在 Component 程式碼中,這由 group_outputs=True 表示

  • 如果 Component 僅發出一個類型,您必須通過點擊輸出 Port 附近的輸出標籤來選取輸出類型,然後選取所需的輸出類型。在 Component 程式碼中,這由 group_outputs=False 或省略 group_outputs 參數表示。

例如,語言模型Components可以輸出 either Model ResponseLanguage ModelModel Response 輸出產生可以傳遞到另一個 Component Message Port 的 Message 資料。 Language Model 輸出必須連接到具有 Language Model 輸入的Components,例如使用附加 LLM 為接收Components提供動力的 Structured Output Components

Output type selection in the Language Model component

Port 顏色

Component Port 顏色表示 Port 攝取或發出的資料類型。 例如,Message 連接埠接受或發出 Message 資料。

下表列出了Components資料類型及其對應的連接埠顏色:

資料類型連接埠顏色連接埠圖示示例
DataRed
DataFramePink
EmbeddingsEmerald
LanguageModelFuchsia
MemoryOrange
MessageIndigo
ToolCyan
Unknown or multiple typesGray

Components程式碼

您可以在 工作區 中編輯Components,也可以在程式碼中編輯。編輯 Flow時,選取Components,然後點擊 Code 以查看和編輯Components的基礎 Python 程式碼。

所有Components都有基礎程式碼,決定如何配置它們以及它們可以執行哪些動作。 在建立和執行 Flow的上下文中,Components程式碼執行以下操作:

  • 決定在視覺化編輯器中顯示哪些配置選項。
  • 根據Components定義的輸入類型驗證輸入。
  • 使用配置的參數、方法和函數處理資料。
  • 將結果傳遞到 Flow中的下一個Components。

所有Components都繼承自定義Components介面和行為的基礎 Component 類別。 例如,Recursive Character Text Splitter ComponentsLCTextSplitterComponent 類別的子類別。

每個Components的程式碼包括輸入和輸出的定義,這些在工作區中表示為 Components連接埠。 例如,RecursiveCharacterTextSplitter 有四個輸入。每個輸入定義指定輸入類型,如 IntInput,以及該特定輸入的編碼名稱、顯示名稱、描述和其他參數。 這些值決定視覺化編輯器中的Components設定,如顯示名稱和工具提示。


_26
inputs = [
_26
IntInput(
_26
name="chunk_size",
_26
display_name="Chunk Size",
_26
info="The maximum length of each chunk.",
_26
value=1000,
_26
),
_26
IntInput(
_26
name="chunk_overlap",
_26
display_name="Chunk Overlap",
_26
info="The amount of overlap between chunks.",
_26
value=200,
_26
),
_26
DataInput(
_26
name="data_input",
_26
display_name="Input",
_26
info="The texts to split.",
_26
input_types=["Document", "Data"],
_26
),
_26
MessageTextInput(
_26
name="separators",
_26
display_name="Separators",
_26
info='The characters to split on.\nIf left empty defaults to ["\\n\\n", "\\n", " ", ""].',
_26
is_list=True,
_26
),
_26
]

此外,Components有處理其功能的方法或函數。 例如,RecursiveCharacterTextSplitter 有兩個方法:


_16
def get_data_input(self) -> Any:
_16
return self.data_input
_16
_16
def build_text_splitter(self) -> TextSplitter:
_16
if not self.separators:
_16
separators: list[str] | None = None
_16
else:
_16
# check if the separators list has escaped characters
_16
# if there are escaped characters, unescape them
_16
separators = [unescape_string(x) for x in self.separators]
_16
_16
return RecursiveCharacterTextSplitter(
_16
separators=separators,
_16
chunk_size=self.chunk_size,
_16
chunk_overlap=self.chunk_overlap,
_16
)

get_data_input 方法從Components的輸入中擷取要分割的文字,使資料可用於類別。 build_text_splitter 方法通過呼叫其父類別的 build 方法來建立 RecursiveCharacterTextSplitter 物件。然後,使用建立的分割器分割文字並傳遞到下一個Components。

Components版本

Components版本和狀態儲存在內部 AgentBuilder 資料庫中。當您將Components新增到 Flow時,您會根據 AgentBuilder 資料庫中的資訊建立Components的脫離複本。 這些複本脫離了主要的 AgentBuilder 資料庫,並且不會與升級 AgentBuilder 版本時可能發生的任何更新同步。

換言之,Components的個別實例會保留從您將其新增到特定FLOW那一刻開始的版本號碼和狀態。例如,如果Components在您將其新增到FLOW時處於版本 1.0,則它在該FLOW中保持為版本 1.0,除非您更新它。

更新Components版本

在工作區中編輯FLOW時,如果Components的 workspace 版本落後於資料庫版本,AgentBuilder 會通知您,以便您可以更新Components的 workspace 版本:

  • Update ready:此通知表示Components更新不包含重大變更。

  • Update available:此通知表示Components更新可能包含重大變更。

    重大變更會修改Components的輸入和輸出,導致Components斷開連接並破壞FLOW。更新Components後,您可能需要編輯Components設定或重新連接Components連接埠。

有兩種方式更新Components:

  • 點擊 Update 以更新單個Components。對於沒有重大變更的更新,建議使用此方式。

  • 點擊 Review 以查看所有可用更新並在更新前建立快照。對於包含重大變更的更新,建議使用此方式。

    要在更新Components前儲存FLOW的快照,請啟用 Create backup flow before updating。備份FLOW與原始FLOW儲存在相同的專案資料夾中,並帶有 (backup) 後綴。

    要更新特定Components,請選取您要更新的Components,然後點擊 Update Components

Components會更新到最新的可用版本,基於您正在執行的 AgentBuilder 版本。

群組Components

多個Components可以群組為單個Components以供重複使用。這對於通過將相關Components組合在一起來組織大型FLOW很有用,例如 RAG Agent Components及其相關工具或向量儲存Components。

  1. 按住 Shift,然後點擊並拖曳以突出顯示您要合併的所有Components。Components必須完全在選取區域內才能合併。

    或者,要逐個選取Components進行合併,按住 Windows 上的 Ctrl 或 Mac 上的 Cmd,然後點擊每個Components以將其新增到群組中。

  2. 釋放滑鼠和鍵盤,然後點擊 Group 以將Components合併為單個群組Components。

群組Components作為單個Components進行配置和管理,包括Components名稱、程式碼和設定。

要取消群組Components,請在工作區中點擊Components以顯示Components的標題選單,點擊 Show More,然後選取 Ungroup

如果您想在其他FLOW中重複使用此群組,請在工作區中點擊Components以顯示Components的標題選單,點擊 Show More,然後選取 Save 以將Components儲存到 Core components 選單作為自訂Components。

舊版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 篩選器。

Search