-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_LangFlowThirdStep
-
戻る
- LangFlowのファースト・ステップ
- LangFlowのセカンド・ステップ
- LangFlowのサード・ステップ(本ページ)
- LangFlowの4thステップ
やっぱ、カスタム・コンポーネントを作成してみたいよね♨
-
コンポーネントサイドバーの「New Custom Component」の「+」ボタンを押下。
-
キャンバス上に新しいコンポーネントが生成される。
-
コンポーネントの「Code」をクリックして以下コードを修正
# from langflow.field_typing import Data from langflow.custom import Component from langflow.io import MessageTextInput, Output from langflow.schema import Data class CustomComponent(Component): display_name = "Custom Component" description = "Use as a template to create your own component." documentation: str = "https://docs.langflow.org/components-custom-components" icon = "code" name = "CustomComponent" inputs = [ MessageTextInput( name="input_value", display_name="Input Value", info="This is a custom component Input", value="Hello, World!", tool_mode=True, ), ] outputs = [ Output(display_name="Output", name="output", method="build_output"), ] def build_output(self) -> Data: data = Data(value=self.input_value) self.status = data return data -
コンポーネントの「Save」をクリックして修正コードを保存
-
コンポーネントサイドバーの「Saved」からコンポーネントを選択してキャンバスにドラッグして使用する。
- エクスポート機能はないので、手動で*.pyファイルに保存する。
- 現時点でJSONダウンロード機能があるのでアップロード機能(インポート相当)が実装されるかも?
-
以下のpathに配置して再起動すると、既存のdataカテゴリに追加される。
~/.venvのpath/lib/python3.12/site-packages/langflow/components/data -
カテゴリを新設する場合は、格納するフォルダを新設すれば良い!
~/.venvのpath/lib/python3.12/site-packages/langflow/components/mycomponent
display_name = "Custom Component"
description = "Use as a template to create your own component."
documentation: str = "https://docs.langflow.org/components-custom-components"
icon = "code"
name = "CustomComponent"
- display_name:UIに表示される名前
- description:ツールチップで表示される説明文
- documentation:ドキュメントへのリンク
- icon:アイコン識別子(ここでは "code")
- name:コンポーネント内部識別子
-
入力プロパティ
inputs = [ MessageTextInput( name="input_value", display_name="Input Value", info="This is a custom component Input", value="Hello, World!", tool_mode=True, ), ]-
入力1のタイプ
ココでは、MessageTextInput:ユーザー入力テキストフィールド- name:プログラム内部で参照する変数名
- display_name:UIに表示されるラベル
- info:ユーザー向け説明
- value:デフォルト値
- tool_mode=True:ツールモード利用可否
-
入力2のタイプ
...
-
-
出力プロパティ
outputs = [ Output(display_name="Output", name="output", method="build_output"), ]-
出力1のタイプ
ココでは、Output:Output- name:プログラム内部で参照する変数名
- display_name:UIに表示されるラベル
- method:関数名
-
出力2のタイプ
...
-
-
出力1のメソッド
既定では以下のような実装になっている。def build_output(self) -> Data: data = Data(value=self.input_value) self.status = data return data
文字反転するように変更
-
特にOutput Chatに出力したいので、Output周りを変更する必要がある。
-
name系を変更
-
型をDataからMessageに変更
outputs = [ Output(display_name="Message", name="message", method="build_output"), ] def build_output(self) -> Message: reversed_text = self.input_value[::-1] message = Message(text=reversed_text) self.status = message return message
-
-
上記のノードを「Basic Prompting」のInput Chat、Output Chatに接続、
-
[Playground]をクリックしてチャット セッションを開始、クエリを入力、ボットが応答することを確認。
-
上記で単体テストが完了したので、運用テスト準備
- コンポーネントのdisplay_nameをReverse componentにリネーム後
- コンポーネントの「Save」をクリックして修正コードを保存。
- display_nameは、コードからもUIからも編集することが出来る。
-
運用テストとして「Basic Prompting」テンプレートを新規作成して、OpenAIノードをReverse componentに置き換える。
- コンポーネントサイドバーの「Saved」からReverse componentコンポーネントを選択してキャンバスにドラッグ。
- ノードをInput Chat、Output Chatに接続し、[Playground]をクリックしてチャット セッションを開始、クエリを入力、ボットが応答することを確認。
- 基本的に、カスタマイズ対象のベース・コンポーネントを改修していけば良い。
- 該当する機能を提供するクラスを継承し、必要なプロパティやメソッドを実装していく。
LCVectorStoreComponentを継承したRAG(VDB)コンポーネントに必要な、プロパティやメソッドを実装していく。
ToolCallingAgentComponentを継承したAgentコンポーネントに必要な、プロパティやメソッドを実装していく。
-
Welcome to Langflow | Langflow Documentation
https://docs.langflow.org/-
Components
- Create custom Python components
https://docs.langflow.org/components-custom-components
- Create custom Python components
-
移行メモ
- 「戻る」の並びにある自ページは、元 Wiki では自動リンクを避けるために HTML 実体参照(
LangFlow…)で書かれていたが、 その旨を補ってプレーン・テキストとした。- PukiWiki のページ内アンカ(
#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替えた。- 元 Wiki の行頭空白によるプレフォーマット・ブロックは、 フェンス付きコードブロックにした。
Tags: 移行, LangFlow, カスタム・コンポーネント, テンプレート, RAG, Agent, Python
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。