Dev Classmethod Jp Articles Athena Bedrock Converse API Natural Language SQL Agent
Amazon Athena × Bedrock Converse APIで自然言語からSQLを自動生成・実行するエージェントを構築してみた
- URL: https://dev.classmethod.jp/articles/athena-bedrock-converse-api-natural-language-sql-agent/
- 日付: 2026-06-05
- Tier: Tier 3
- 要旨: Bedrock Converse API の
tool_useを使いアプリ側でエージェントループを自前実装。Claude が SQL を生成し Athena に直接実行させ結果を回答生成する仕組みを、Lambda・Bedrock Agents 不要で構築。
詳細
- なぜ Bedrock Agents ではなく自前ループか: Lambda 不要で直接 Athena を呼べる。ストリーミング制御・カスタムUI・ループ制御・デバッグが自由
- アーキテクチャ: FastAPI →
bedrock_runtime.converse()(tool_use でSQLツール定義) → Claudeが SQL 生成 (stop_reason: "tool_use") → Athena に直接実行 →toolResultとして追加 → 再度converse()→end_turnまで繰り返す - S3/Parquet採用理由: Athena は結果を S3 に書き出す仕様。Parquet 形式はカラムナ形式でスキャン量を減らしコスト削減、型情報保持、高圧縮効率
- 環境: Python 3.12, boto3, ap-northeast-1, Parquetデータ: S3の
sql/プレフィックス以下にテーブル別フォルダ - 集計・比較クエリへの対応: RAGだけでは対応困難な「2025年度1Qの売上合計は?」のような集計型質問に対応できる
- 評価: 既存アプリケーションサーバーがある場合は Bedrock Agents より Converse API の自前ループがシンプル