AWS Bedrock Agent 開発メモ



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 では改行はうまく表示できなかった。表形式で出力ができなかった。(画像もサポートされていなかった)

・主語、述語は毎回正しく伝える。人間でも分かるような省略はできない場合がある。

・間違ったことを教えたらその後の会話に影響する。一度リセットするとよい。

・指示は明確に「〇×をしてください。パラメータ = xxxxxx です これには関数が必要です」など。

デバッグ方法

・lambda 関数のエラーログは デフォルトで Cloudwatch log に送信される。数秒で反映される。

・Agent のパラメータが正しく渡されているかは Bedrock エージェントの トレースで確認が可能。

・action group パラメータは bedrock から渡られる。よって lamda のローカルデバッグでは別途パラメータに追記しないとエラーとなる。

・マネコンからエージェントに指示を出す場合、トレースでデバッグが可能。ただしS3のファイルがUTF8の場合は文字コードで出てしまう。人間が読める読めるようにするにはShift-JISに変換してS3にアップロードする必要あり。



Q and A

【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 が異なる。







[ AWS Bedrock まとめに戻る]

【注意事項】本ページの内容は個人的に調査した結果がであり内容が正しいことは保証されません。
またAWSサービスは常に改良、アップデートされており本ページの内容が古く誤った内容になる可能性もあります。変更になっても本ページが正しく更新されるとは限りません。
あくまでも参考程度でご覧ください。内容により発生したいかなる時間的損害、金銭的損害、その他の損害に関しても何人も保証しません。