2024年5月更新
"OpenAPI スキーマ"と"Function Schema"の2通りがある。"Function Schema"が簡単。
(*)ネットでは難しい方のリクエストとレスポンスの例が検索トップに表示されるが、簡単なFunction Schemaがお勧め。
ただし入力と出力が異なるのでサンプルを利用する場合など注意。
参考:https://qiita.com/hayao_k/items/57cf2e7950c04e88895a
パラメータのチェックサンプル
function = event['function'] if function == 'functionname': param1 = next((item['value'] for item in event['parameters'] if item['name'] == 'param1'), '') |
レスポンスサンプル
action_response = { 'actionGroup': event['actionGroup'], 'function': function, 'functionResponse': { 'responseBody': response_body } } return { 'messageVersion': '1.0', 'response': action_response |
・エージェントの設定で「すべて日本語でやりとり」と明確な指示をする。そうしないと英語で戻る場合がある。
・ナレッジベースあるいは関数どちらか取得するか明確な指示が必要。
そうしないとナレッジベースから取得して欲しい情報を関数で取得しようとしたりする。
・マネコン上でのQ & A では改行はうまく表示できなかった。表形式で出力ができなかった。(画像もサポートされていなかった)
・主語、述語は毎回正しく伝える。人間でも分かるような省略はできない場合がある。
・間違ったことを教えたらその後の会話に影響する。一度リセットするとよい。
・難しい処理は上位のモデルが必須。ネットワークの計算などClode3 Haiku より Sonnet の方が格段に良かった。
・指示は明確に「〇×をしてください。パラメータ = xxxxxx です これには関数が必要です」など。
・lambda 関数のエラーログは デフォルトで Cloudwatch log に送信される。数秒で反映される。
・Agent のパラメータが正しく渡されているかは Bedrock エージェントの トレースで確認が可能。
・action group パラメータは bedrock から渡られる。よって lamda のローカルデバッグでは別途パラメータに追記しないとエラーとなる。
・マネコンからエージェントに指示を出す場合、トレースでデバッグが可能。ただしS3のファイルがUTF8の場合は文字コードで出てしまう。人間が読める読めるようにするにはShift-JISに変換してS3にアップロードする必要あり。
【Q】
ActionGroup in Lambda response doesn't match input. Check that the ActionGroup in the input and response match and retry the request.
【A】
OpenAPIスキーマではなく"Define with function details"を指定した場合、なぜか input と output が異なる。