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 Outputs 或 Data。 這些 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結合時啟用此選項。

對於所有其他選項,包括 Delete 和 Duplicate 控制項,請點擊 Show More。

重新命名Components​

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

運行Components​

要運行單一Components,請點擊 Run component。 Last 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 Response 或 Language Model。 Model 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 Components 是 LCTextSplitterComponent 類別的子類別。

每個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