Hitachi

JP1 Cloud Service システム管理 生成AI連携 利用ガイド


1.5.6 ユーザープログラム呼び出し機能(02-40以降)

〈この項の構成〉

(1) 概要

ユーザープログラムがデプロイされているプログラム実行サービスに対して,ユーザープログラムの実行を要求する機能です。この機能により,生成AI連携機能が連携するLLMの判断により,ユーザープログラムの呼び出しを可能とし,ユーザーによるエージェントノードの機能拡張を実現します。本機能がサポートするプログラム実行サービスは,AWS Lambdaです。

重要

ユーザープログラムの実行処理中のエラーメッセージや,返却内容にパーソナルデータや機密データを出力しないでください。

出力した場合,回答内容およびログに上記データを含むことがあります。

本機能の仕様は以下の通りです。

表1‒12 ユーザープログラム呼び出し機能仕様

#

項目

仕様

1

ツール上限

1つのカスタムエージェントに対して,最大10個まで連携可能です。上限超過時は警告メッセージを出力します。カスタムエージェントのノードプロンプトのパラメータTOOLSにて利用するツール名を指定し,複数定義します。

2

ユーザープログラムの実行

ユーザープログラムの実行要求とともに,実行引数を送信します。実行引数が送信されるまでの流れは以下の通りです。

  1. カスタムエージェントは,ツールの説明と,その実行引数のJSONスキーマをLLMに送信します。

  2. LLMは実行引数のJSONスキーマに従って実行引数を生成し,返却します。

  3. カスタムエージェントは,返却された実行引数を付与してユーザープログラムの実行要求を送信します※1

  4. ユーザープログラムは指定された実行引数で処理を行い,結果を返却します。

  5. カスタムエージェントはツール実行結果としてユーザープログラムの実行結果を取得します。

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文字列として以下の処理を行い,解釈します。

  • 応答をJSON文字列にデシリアライズ(文字コードはUTF-8)

  • JSON文字列をpythonの次のdict型に変換

    {"content": [{"type": "text", "text": "任意の文字列"}]}

ユーザープログラムの戻り値は,上記の処理を経て{"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

ログ出力

ユーザープログラムの呼び出しに合わせて下記のログを出力します。

  • ツールを利用可能なワークフローが呼び出されたとき,ツールに定義されたJSONスキーマを以下のメッセージIDのログに出力します。

    KNBD20037-I

  • カスタムエージェントがツールを実行したとき,ツールの識別子を以下のメッセージIDのログに出力します。

    KNBD20036-I

  • カスタムエージェントの処理が正常に終了したとき,実行したツールの情報を以下のメッセージIDのログに出力します。

    KNBD20003-I

これらのログに出力されるリクエストIDは,AWSによって発行されるリクエストの識別子です。

なお,ユーザープログラムの戻り値は,ユーザープログラム呼び出し機能では明示的にロギングされません。

注※1

AWS Lambdaの呼び出しは,同期(RequestResponse)呼び出しで,タイムアウトは90秒固定です。Lambda関数の処理のタイムアウト値は,90秒以下の値を設定することを推奨します。

注※2

指定できるJSONスキーマのデータ型は以下の通りです。

データ型

Enumでの指定

備考

オブジェクト

オブジェクトの配下には,オブジェクト以外のデータ型を指定できます。

配列

配列の要素に関しても,データ型(オブジェクト,数値,文字列)を定義できます。要素をEnumで指定することも可能です。

数値

整数または浮動小数点数

文字列

ブール値

null

(2) ユーザー利用方法

本機能を利用するためにはユーザープログラム(=AWS Lambda関数)の作成と,ユーザープログラムを実行するための生成AI連携機能への定義が必要です。

作成するLambda関数は上記仕様に則って作成してください。

ユーザープログラムを実行するための定義は「2.2.8ユーザープログラムの設定(任意)(02-40以降)」を参照してください。