コンテンツにスキップ
Dev Classmethod Jp Articles Athena Bedrock Converse API Natural Language SQL Agent

Amazon Athena × Bedrock Converse APIで自然言語からSQLを自動生成・実行するエージェントを構築してみた

詳細

  • なぜ 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 の自前ループがシンプル