PyCon JP 2026

LLMの出力を"いい感じに"する技術 — FastAPIで仕上げるAI Agent設計パターンを野球AIで実践した話

「全ての野球に関わる人にAI Agentで野球に新たな価値を吹き込みたい」

私はそんな気持ちでMLB(メジャーリーグ)野球分析AI Agent「The Scouter 3」を開発しました(詳細)。

その際に私は以下の課題に直面しました。

  • LLMのレスポンスが遅い
  • 出力が不安定

本トークでは、これらの課題をFastAPIの設計パターンでどうやって向き合い、解決したかを紹介します。

仕様とシステム構成

  • Geminiを用いてMLBの選手レポートを出力
  • BackendはFastAPI, FrontendをNext.jsで構築
  • Cloud Run(Google Cloud)でホスト

トークの構成

Live Demoで実際の分析レポートをお披露目します。

その上で2つの課題と意思決定について話します。

LLMのレスポンスが遅い

SSE(Server-Sent Events)を選択した背景からFastAPI StreamingResponseの実装までをコード付きで解説し、Next.jsプロキシやCloud Runタイムアウトなど運用上の落とし穴も一問一答で紹介します。

出力が不安定

Markdownフォーマット制御とPydanticによる出力バリデーションの合わせ技、野球ドメイン知識をプロンプトにどう注入するかの設計判断を共有します。

技術的な意思決定

LangChain等のフレームワークを使わずgoogle-genai SDKを直接利用した判断基準。

LLMをプロダクトに組み込むエンジニアが、知見として持ち帰れる再現可能な設計パターンを提供します。

Tell us about your own experience with this topic

全体的なPython歴は15年程度。Fast APIでの開発は業務で5年以上、個人開発でも同等の経験。業務および個人開発でAI Agent開発やSREとして保守運用およびアーキテクチャ設計・実装をフルスタックにこなしております。

What discussions can you have with attendees through this talk?

本トークで紹介するSSEストリーミングやプロンプト設計パターンは、野球に限らずLLMをWebアプリに組み込むあらゆるプロジェクトに応用可能です。「LangChainを使うべきか」「プロンプトをどう管理するか」といった、LLM時代のPython開発者が直面する設計判断について、参加者それぞれの経験を持ち寄った議論ができると考えています。

また、スポーツアナリティクスに興味がある方に対してスポーツのデータサイエンスや数理モデルの会話も対応可能です。

The speaker's profile picture
Shinichi Nakagawa(@shinyorke)

AI Platformを扱うソフトウェアエンジニアを本業とする傍ら, 「野球AIエンジニア」として活動.

2012年から野球(MLBおよびNPB)のデータ分析・システムづくりをPythonで行っており(本業にしていた時期あり), 近年は成績予測およびこれらを本格活用するデータ分析基盤の開発・運用を行っている.

本業および野球AIエンジニアで得た知見をブログ, 登壇等で継続的に発表.

表彰&登壇: Google Cloud Partner Top Engineer 2024, PyConJPおよびデブサミでの登壇複数回.

推しのPythonはFastAPIとmarimo, 推しのクラウドサービスはCloud RunとBigQueryで推しの野球選手は万波中正(北海道日本ハムファイターズ).