Get Started

コードノードの使い方(Python)

コードノードの使い方(Python)

コードノードの使い方(Python)

ノードの使い方 - Pythonノード

このチュートリアルでは、AgentriaのPythonノードの使い方を説明します。Pythonノードは、コードを直接記述してデータを加工できるだけでなく、**ファンクションピン(Function-Pin)**を使って他のノードを関数のように呼び出すことができます。これにより、Pythonコード内から任意のタイミングでAIノードを呼び出し、その結果を再びPythonのロジックで処理する柔軟なワークフローを構築できます。

このチュートリアルでは、顧客レビューのテキストを入力として受け取り、PythonノードがLLMノードを関数として呼び出してセンチメントを分類し、カスタマイズされた返信の下書きを生成するワークフローを完成させます。

事前準備

Agentriaのキャンバスへのアクセス方法は、🔗3ステップコアガイドをご参照ください。

このチュートリアルを完了すると、以下のことができるようになります。

  1. PythonノードのファンクションピンFunctionPinを理解し、LLMノードに接続できます。

  2. Pythonコードでawait function()構文を使ってLLMノードを関数として呼び出せます。

  3. LLMノードのシステムプロンプトと入力変数を設定できます。

  4. デバッグログでPythonコードのエラーを確認できます。

ワークフロー概要

全体の流れ:スタートノードPythonノードエンドノード




このチュートリアルのポイントは、PythonノードのファンクションピンFunctionPinです。

Pythonノード下部の青い**ファンクションピン(Function-Pin)**をLLMノードのインピン(In-Pin)にドラッグ&ドロップ(Drag and Drop)で接続すると、LLMノードがファンクションノードに変換されます。ファンクションノードはメインのワークフローフローに含まれず、Pythonコード内のawait {%functionName%}()構文で呼び出されたときだけ実行されます。これにより、AIの呼び出しタイミングと渡す引数をPythonのロジックで直接制御できます。

ステップ1:アビリティの作成

Agentriaのキャンバスで新しいアビリティ(Ability)を作成します。

+ノード追加(Add Node)をクリックし、PythonノードとLLMノードをキャンバスに追加します。Pythonノードの名前をProcessing、LLMノードの名前をReview Analyzerに変更します。

Processingノード下部の青いファンクションピンをドラッグし、Review Analyzerノードのインピンに接続します。「ファンクションノードに変換しますか?」というモーダルが表示されたら、確認をクリックします。

ファンクションピンはPythonノード下部の青いピンです。通常の接続に使う白いアウトピン(Out-Pin)と混同しないようにご注意ください。

ステップ2:入力変数の宣言

スタートノード(Start Node)をダブルクリックして、ノードエディター(Node Editor)を開きます。

以下の入力変数を宣言します。

項目

データ型

String(文字列)

名前

reviewText

説明

顧客レビューテキスト

宣言が完了したら、キャンバスに戻ります。

ステップ3:Pythonノードの設定

Processingノードをダブルクリックして、ノードエディターを開きます。

Pythonノードには**AIコード生成器(AI Code Generator)**が内蔵されています。コード生成器アイコンをクリックし、実行したい内容をプロンプトとして入力するとコードが自動生成されます。生成されたコードは承諾(Accept)ボタンで適用します。

コード入力欄に以下のスクリプトを記述します。reviewText変数とファンクションピンの参照は、左側のパネルからドラッグ&ドロップでコードに挿入します。

review_text = {{reviewText@1}}

# 空の入力を処理
if not review_text or not review_text.strip():
    return {"output": ""}

# LLMノードを関数として呼び出す
result = await {%new_bedrock_anthropic_l_l_m_node@6%}(
    reviewText=review_text
)

output = result.get("output", "").strip()
return {"output": output}
review_text = {{reviewText@1}}

# 空の入力を処理
if not review_text or not review_text.strip():
    return {"output": ""}

# LLMノードを関数として呼び出す
result = await {%new_bedrock_anthropic_l_l_m_node@6%}(
    reviewText=review_text
)

output = result.get("output", "").strip()
return {"output": output}
review_text = {{reviewText@1}}

# 空の入力を処理
if not review_text or not review_text.strip():
    return {"output": ""}

# LLMノードを関数として呼び出す
result = await {%new_bedrock_anthropic_l_l_m_node@6%}(
    reviewText=review_text
)

output = result.get("output", "").strip()
return {"output": output}

ステップ4:LLMファンクションノード — 入力変数の設定

Review Analyzerノードをダブルクリックして、ノードエディターを開きます。

左側の入力パネルの入力編集(Edit Input)ボタンをクリックします。ここで追加した変数が、Pythonコードから関数として呼び出す際に渡す引数と連携します。スタートノードで宣言した入力変数と同じ名前で設定します。

変数名

データ型

reviewText

String

Pythonコードでawait function(reviewText=review_text)のように呼び出す場合、引数名reviewText=はここで宣言した変数名と一致している必要があります。

ステップ5:LLMファンクションノード — プロンプトの設定

システムプロンプトの設定

システムプロンプト(System Prompt)入力欄に以下の内容を入力します。

あなたは顧客レビューを分析する専門家です。
入力されたレビューを読み、以下の形式のみで回答してください。

感情:[ポジティブ / ネガティブ / ニュートラル]
返信下書き:[顧客に送るカスタマイズされた返信]

あなたは顧客レビューを分析する専門家です。
入力されたレビューを読み、以下の形式のみで回答してください。

感情:[ポジティブ / ネガティブ / ニュートラル]
返信下書き:[顧客に送るカスタマイズされた返信]

あなたは顧客レビューを分析する専門家です。
入力されたレビューを読み、以下の形式のみで回答してください。

感情:[ポジティブ / ネガティブ / ニュートラル]
返信下書き:[顧客に送るカスタマイズされた返信]

ユーザープロンプトの設定

ユーザープロンプト(User Prompt)入力欄に、左側の入力パネルのreviewTextアダプター変数をドラッグ&ドロップで挿入します。

ステップ6:エンドノードの設定

キャンバスに戻り、メインフローのエッジを接続します。

  1. スタートノードのアウトピン → Processingノードのインピン

  2. Processingノードのアウトピン → エンドノードのインピン

Review Analyzerノードはファンクションノードのため、メインフローのエッジには接続しません。

エンドノード(End Node)をダブルクリックして、ノードエディターを開きます。アウトプットセクション(Output Section)に以下の変数を追加します。

変数名

データ型

result

String

Processingノードのアウトプットoutput変数をドラッグ&ドロップで、エンドノードのresultにバインドします。

ステップ7:ランテスト

キャンバス右下のRUN TESTボタンをクリックします。

reviewTextの入力欄にテストするレビューテキストを入力して実行します。

入力例

出力例




ステップ8:デバッグログの確認

Pythonノードでコードエラーが発生した場合、 **デバッグログ(Debug Log)**でエラーが発生したコードの位置と内容を確認できます。エラーメッセージを参考にコードを修正してから、再度テストを実行します。

次のステップ

🎉 おめでとうございます! Agentriaを使って「顧客レビューのセンチメント分類と返信下書き生成」ワークフローを完成させました。

システムプロンプトを変更してさまざまな業界や状況に合わせた返信スタイルを適用したり、Pythonコードに前処理ロジックを追加してワークフローを拡張したりすることができます。

Agentriaは、アイデアを現実に変える可能性の空間です。

あなたのアイデア次第で、ワークフローは無限に広がります。



使用できない関数

制限項目

理由

import

任意モジュールの読み込みを防止

exec()

動的コード実行を防止

eval()

動的式の評価を防止

exit(), quit()

プロセス終了を防止

globals(), locals()

内部コンテキストの露出を防止

open()

ファイルシステムへのアクセスを防止

__context__, __deco__, __params__

内部変数へのアクセスを防止

asyncio.create_subprocess_exec()

外部コマンド実行を防止

asyncio.create_subprocess_shell()

シェルコマンド実行を防止

asyncio.subprocess

subprocessモジュールへのアクセスを防止

使用可能なライブラリ

使用可能なモジュール

用途

re

正規表現

json, orjson

JSON処理

math

数学演算

datetime, time

日付/時刻

collections, itertools, functools

データ構造、反復処理、関数型ユーティリティ

base64

エンコード/デコード

ast

コードパース

typing, pydantic

型関連

pd (pandas), np (numpy)

データ分析

tiktoken

トークンカウント

asyncio(制限あり)

非同期処理(subprocess関連を除く)

mecab

形態素解析

helpers

内蔵ヘルパー関数

Helpers(ファイル処理ユーティリティ)

コードノードでは、ファイル処理やデータ変換のためにhelpersユーティリティ関数を使用できます。

詳しい使い方は 🔗Helpers ページのガイドをご確認ください。