1.5.6 ユーザープログラム呼び出し機能(02-40以降)
- 〈この項の構成〉
(1) 概要
ユーザープログラムがデプロイされているプログラム実行サービスに対して,ユーザープログラムの実行を要求する機能です。この機能により,生成AI連携機能が連携するLLMの判断により,ユーザープログラムの呼び出しを可能とし,ユーザーによるエージェントノードの機能拡張を実現します。本機能がサポートするプログラム実行サービスは,AWS Lambdaです。
- 重要
-
ユーザープログラムの実行処理中のエラーメッセージや,返却内容にパーソナルデータや機密データを出力しないでください。
出力した場合,回答内容およびログに上記データを含むことがあります。
本機能の仕様は以下の通りです。
|
# |
項目 |
仕様 |
|---|---|---|
|
1 |
ツール上限 |
1つのカスタムエージェントに対して,最大10個まで連携可能です。上限超過時は警告メッセージを出力します。カスタムエージェントのノードプロンプトのパラメータTOOLSにて利用するツール名を指定し,複数定義します。 |
|
2 |
ユーザープログラムの実行 |
ユーザープログラムの実行要求とともに,実行引数を送信します。実行引数が送信されるまでの流れは以下の通りです。
|
|
3 |
ユーザープログラムの実行引数 |
実行引数のJSONスキーマはツールプロンプト定義ファイル(tools.ja.yml)に設定情報を記載して定義します。※2 指定できる引数の数や型には制限があります。詳細は「6.1.3ツールプロンプト定義ファイル(tools.ja.yml)(02-40以降)」を参照してください。 想定のJSONスキーマが作成されているかは設定ファイル(ai_assistant.yml)の該当ツールのservice.langchain.tools[].aws_lambda_function.handle.logging_args_schemaにtrueを指定することで,ログから確認できます。 |
|
4 |
ユーザープログラムへの入力 |
LLMが作成した実行引数の情報は,シリアライズされたJSON文字列として送信します。送信されるJSONオブジェクトは,ユーザーが定義したJSONスキーマに準拠したオブジェクトです。ユーザープログラム内でどの型のオブジェクトとして利用できるかはユーザープログラムを実装するランタイムに依存します。 |
|
5 |
ユーザープログラムの戻り値 |
ユーザープログラム実行要求の応答(HTTPレスポンスのレスポンスボディ)をシリアライズされたJSON文字列として以下の処理を行い,解釈します。
ユーザープログラムの戻り値は,上記の処理を経て{"content": [{"type": "text", "text": "任意の文字列"}]}と表される必要があり,この形式を満たさない場合,ユーザープログラム呼び出し機能は異常終了します。ユーザープログラム呼び出し機能は,処理結果として上記の"任意の文字列"に該当する値をLLMに返却します。ユーザープログラムの処理中にエラーが発生し,service.langchain.tools[].aws_lambda_function.handle. raise_function_processing_errorにfalseが設定されていた場合は,HTTPレスポンスボディに含まれる"errorMessage"フィールドの値をLLMに返却します。 本機能で受信できるサイズ(HTTPレスポンスヘッダのContent-Length)は80KBです。 |
|
6 |
ログ出力 |
ユーザープログラムの呼び出しに合わせて下記のログを出力します。
これらのログに出力されるリクエストIDは,AWSによって発行されるリクエストの識別子です。 なお,ユーザープログラムの戻り値は,ユーザープログラム呼び出し機能では明示的にロギングされません。 |
- 注※1
-
AWS Lambdaの呼び出しは,同期(RequestResponse)呼び出しで,タイムアウトは90秒固定です。Lambda関数の処理のタイムアウト値は,90秒以下の値を設定することを推奨します。
- 注※2
-
指定できるJSONスキーマのデータ型は以下の通りです。
|
データ型 |
Enumでの指定 |
備考 |
|---|---|---|
|
オブジェクト |
− |
オブジェクトの配下には,オブジェクト以外のデータ型を指定できます。 |
|
配列 |
− |
配列の要素に関しても,データ型(オブジェクト,数値,文字列)を定義できます。要素をEnumで指定することも可能です。 |
|
数値 |
○ |
整数または浮動小数点数 |
|
文字列 |
○ |
|
|
ブール値 |
− |
|
|
null |
− |
(2) ユーザー利用方法
本機能を利用するためにはユーザープログラム(=AWS Lambda関数)の作成と,ユーザープログラムを実行するための生成AI連携機能への定義が必要です。
作成するLambda関数は上記仕様に則って作成してください。
ユーザープログラムを実行するための定義は「2.2.8ユーザープログラムの設定(任意)(02-40以降)」を参照してください。