Skip to main content
REPL(Read-Eval-Print Loop)ノードを使用すると、AIワークフローの一部としてカスタムコードスニペットを実行できます。これは、標準ノードではカバーされないデータ変換、計算、またはカスタムロジックに強力です。 ワークフロー内のREPLノード

概要

REPLノードは次の場合に使用します:
  • ノード間でデータを変換またはフォーマットする
  • 数学的計算を実行する
  • 文字列を解析または操作する
  • カスタムビジネスロジックを実装する
  • API応答を構造化形式に処理する

設定

REPL設定

基本設定

  • タイトル: ノードのわかりやすい名前(例:「合計の計算」、「応答のフォーマット」)。
  • 説明: 将来の参照用にコードの動作を記録します。

ランタイム環境

REPLノードは、安全なサンドボックス環境で実行されます。以下は、サポートされている関数、ライブラリ、および特定の制限事項です。

コア要件

  • 必須のメイン関数: コードには def main(): 関数を含める必要があります。
  • 保護された反復: for および while ループはサポートされていますが、無限実行を防ぐために監視されています。

入力コード

Pythonスクリプトを記述するコードエディタです。コードからは以下を利用できます:
  • ワークフロー変数: {{variable_name}} 構文を使用して、前のノードからの変数にアクセスします。
  • 組み込み関数: データ処理用の標準Pythonライブラリ。

入力と出力

  • 入力変数セレクター: 前のノードからの特定の変数をマップして、コードで使用します。
  • 出力: ノードは、出力ハンドルを介してコード実行の結果を下流ノードに渡します。
: JSON応答を解析し、特定のフィールドを抽出します:

組み込み関数

データ操作には標準のPython組み込み関数を使用できます:
  • コレクションヘルパー: list, dict, tuple, set, enumerate, reversed
  • 数学と論理: max, min, sum, abs, all, any
  • ユーティリティ: type

サポートされているライブラリ

以下の標準ライブラリはプリインストールされており、安全にインポートできます:
  • データとフォーマット: json, xml, base64, pandas
  • ネットワーキング: requests
  • 時間と日付: datetime, time
  • ユーティリティ: re (正規表現), hashlib, hmac, secrets, typing
  • データベース: sqlalchemy, sqlalchemy.orm, psycopg2

GCS ヘルパー関数

組み込みの Google Cloud Storage(GCS)ヘルパー関数を使用すると、現在のGIDR用ストレージバケット内のファイルを読み取り、書き込み、一覧表示、削除できます。これらの関数は実行時にサンドボックスへ注入されるため、インポートは不要です。 各GIDRには専用で分離された Google Cloud Storage バケットがあります。パスはそのGIDRのルート(gidr/files/{gidr_id}/)からの相対パスです。たとえば reports/2026/july.csv のように、サブフォルダへファイルを書き込めます。 あるGIDRが書き込んだファイルには、他のGIDRからアクセスできません。../other-gidr/file.txt のようなパストラバーサルはブロックされます。

gidr_write_gcs

コンテンツをGCSのファイルへアップロードします。ファイルが存在しない場合は作成し、存在する場合は上書きします。
戻り値: {"status": 200, "path": "reports/july.csv"} 例外: パスが空または無効な場合は ValueError。GCSへのアップロードに失敗した場合は RuntimeError

gidr_read_gcs

GCSからファイルの内容をダウンロードします。
戻り値: ファイルの内容を文字列として返します。 例外: パスが空または無効な場合は ValueError。ファイルが存在しない場合は RuntimeError(404)。

gidr_delete_gcs

GCSからファイルを削除します。
戻り値: {"status": 204, "path": "reports/july.csv"} 例外: パスが空または無効な場合は ValueError。GCSからの削除に失敗した場合は RuntimeError

gidr_list_gcs

指定したパス配下のすべてのファイルを一覧表示します。デフォルトではGIDRルートフォルダ内のすべてのファイルを一覧表示します。
戻り値: GIDRルートからの相対ファイルパスのリスト。
gidr_list_gcsgidr_read_gcs を組み合わせて、複数のファイルを処理できます。

データベース(DB)ユーティリティ関数

これらの組み込み関数を使用すると、GIDRのデータベースインスタンスにアクセスしてテーブルを作成できます。接続情報は実行時に注入されるため、データベース設定は不要です。

gidr_get_db

GIDRのデータベースインスタンスに接続されたSQLAlchemy Session を生成します。ジェネレータが使い尽くされると、セッションは自動的に閉じられます。
接続をプールへ戻すため、必ず finally ブロックで db_gen.close() を呼び出してください。session.close() を直接呼び出さず、ジェネレータにクリーンアップを任せてください。セッションは autocommit=False を使用するため、書き込み後は明示的に session.commit() を呼び出します。SQLAlchemyの text() はグローバルスコープにあらかじめインポートされているため、インポートは不要です。
例: 行を読み取る
例: 行を挿入する

create_table

GIDRのデータベースインスタンスにテーブルを作成し、SQL Agentへ登録します。これにより、後続のワークフローステップでテーブルをクエリできます。 すべてのテーブルには、row_id BIGINT のID列が自動生成されます。定義する必要はありません。
サポートされるSQL型 例: 基本的なテーブル
例: 主キーを持つテーブル
create_table は、gidr_get_db が返すセッションを使用してテーブルを作成し、DDLをコミットしてスキーマをJSONとしてシリアライズし、ai_services.public.sql_agent_user_tables_map にレコードを挿入します。これにより、SQL Agentは後続のワークフローステップで新しいテーブルを検出してクエリできます。
  • 既に存在する名前でテーブルを作成するとエラーになります。一意の名前を使用するか、先に既存のテーブルを削除してください。
  • 列の型には、string ではなく TEXT のような有効なSQL型文字列を指定する必要があります。
  • primary_key を指定する場合、その列は columns にも含まれている必要があります。
  • 新しいテーブルは0行の状態で作成されます。

セキュリティ制限

プラットフォームの安定性を確保するために、以下は ブロック されています:
  • ファイルシステム: ファイルI/O操作なし(例:open())。
  • システムアクセス: 許可リスト外のOS/システム関数または任意のインポートなし。
コード実行にはリソース制限とタイムアウトがあります。無限ループやメモリ集約的な操作は避けてください。