はじめに
「LLMを使ったアプリを作りたいけど、どのフレームワークを使えばいいかわからない」
「RAGシステムを構築したいが、ベクトルDBの設定が複雑で手が出ない」
「プロンプトエンジニアリングをコードに組み込む方法がわからない」
LLMアプリケーションの開発はLangChainやLlamaIndexなどのフレームワークが整備されて参入障壁が下がっていますが、依然として複雑な概念を理解する必要があります。Claude Codeを使えば、要件を伝えるだけでAIアプリのボイラープレートから実装・評価まで自律的に進められます。
目次
- LLMアプリ開発の全体像
- LangChainを使ったアプリ実装
- LlamaIndexを使ったRAGシステム
- プロンプト管理の設計
- ストリーミングレスポンスの実装
- LLMアプリの評価フレームワーク
- 本番環境での運用設計
- まとめ
1. LLMアプリ開発の全体像
LangChainとLlamaIndexの使い分け
| フレームワーク | 得意なケース | 主な用途 |
|---|---|---|
| LangChain | 複雑なチェーン・エージェント | チャットボット・エージェント・ワークフロー |
| LlamaIndex | ドキュメント検索・RAG | 社内文書検索・QAシステム |
| 直接API使用 | シンプルな用途 | 単純な生成タスク |
プロジェクト設計の相談
> 以下の要件のLLMアプリを設計してください。
要件:
- 社内のSlackメッセージ・Notionドキュメントに基づいてQAに答えるチャットボット
- 情報源を明示して回答する
- 会話履歴を保持する
- 多言語対応(日本語・英語)
最適なフレームワーク・アーキテクチャ・ベクトルDBを提案してから
実装を進めてください。
2. LangChainを使ったアプリ実装
基本的なチェーンの実装
> LangChainを使って以下のアプリを実装してください。
機能:
- PDFドキュメントを読み込む
- ユーザーの質問に文書に基づいて回答する
- 回答の根拠となる箇所を引用する
- 会話履歴を考慮したフォローアップ質問に対応
使用するモデル:Claude claude-sonnet-4-6
ベクトルDB:Chroma(ローカル開発用)
フレームワーク:LangChain v0.3
カスタムエージェントの実装
> 以下のツールを持つLangChainエージェントを作成してください。
ツール一覧:
- web_search:Tavily APIを使ったWeb検索
- code_executor:Pythonコードを安全に実行
- file_reader:ローカルファイルの読み込み
- database_query:読み取り専用のSQLクエリ実行
要件:
- ReActフレームワークを使う
- ツールの実行ログを記録する
- 最大実行ステップ数の制限(無限ループ防止)
- 実行コストの追跡
3. LlamaIndexを使ったRAGシステム
社内文書検索システムの構築
> LlamaIndexを使って社内文書検索システムを構築してください。
データソース:
- Notionのページ(Notion APIで取得)
- Confluenceのドキュメント
- Slack のピン留めメッセージ
- GitHubのREADMEとWiki
要件:
- ハイブリッド検索(ベクトル検索 + BM25キーワード検索)
- メタデータによるフィルタリング(更新日・作成者・カテゴリ)
- Re-rankingによる精度向上
- 差分更新(変更されたドキュメントのみ再インデックス)
- ベクトルDB:Qdrant使用
チャンク戦略の最適化
> このドキュメントタイプに最適なチャンク戦略を実装してください。
ドキュメントタイプ:技術仕様書(Markdown形式・見出し構造あり)
要件:
- 見出しに基づく階層的なチャンク分割
- 親子チャンクの関係を保持(Small-to-Big Retrieval)
- コードブロックは分割しない
- チャンクオーバーラップの最適化
4. プロンプト管理の設計
プロンプトのバージョン管理
> このアプリのプロンプトを管理しやすい形に整理してください。
要件:
- プロンプトをYAML・JSONファイルで管理
- バージョン管理(Gitで管理)
- 環境ごとのプロンプト切り替え(開発・本番)
- プロンプトの変数置換(Jinja2テンプレート形式)
- A/Bテスト用のプロンプトバリアント管理
LangSmithまたはPromptLayerとの連携も設定してください。
システムプロンプトの最適化
> このチャットボットのシステムプロンプトを最適化してください。
現在の問題:
- 回答が長すぎる
- 日本語と英語が混在することがある
- 情報源を正確に引用しないことがある
改善したプロンプトを3パターン提案してから、
評価データセットで性能を比較してください。
5. ストリーミングレスポンスの実装
FastAPIでのストリーミング
> FastAPIとLangChainを使って、
LLMのレスポンスをServer-Sent Events(SSE)で
ストリーミング配信するAPIを実装してください。
要件:
- トークンが生成されるたびにリアルタイムで配信
- エラー時の適切なハンドリング
- 接続切断時のクリーンアップ
- フロントエンド(React)での受信サンプルコードも作成
6. LLMアプリの評価フレームワーク
RAGasによる評価
> このRAGシステムの品質をRAGasで評価してください。
評価指標:
- Faithfulness(生成回答の忠実度)
- Answer Relevancy(回答の関連性)
- Context Precision(コンテキストの精度)
- Context Recall(コンテキストの網羅性)
評価用のテストデータセット(QAペア20件)も作成してください。
評価結果をダッシュボードで可視化してください。
LangSmithでのトレーシング
> LangSmithのトレーシングをこのアプリに組み込んでください。
トレースする情報:
- LLMへのリクエスト・レスポンス
- 使用トークン数とコスト
- 各ステップの実行時間
- エラーのスタックトレース
本番環境でもサンプリングレートを設定してトレーシングできるようにしてください。
7. 本番環境での運用設計
レートリミットとコスト管理
> このLLMアプリに以下の運用機能を実装してください:
- ユーザーごとの1日あたりのリクエスト上限
- トークン使用量のリアルタイム追跡
- コストアラート(日次・月次)
- レートリミット超過時の適切なエラーレスポンス
- 管理者向けの使用量ダッシュボード
フォールバック戦略
> LLMプロバイダーが障害を起こした場合の
フォールバック戦略を実装してください。
プライマリ:Claude claude-sonnet-4-6
フォールバック1:GPT-4o
フォールバック2:Gemini 2.0 Flash
最終手段:キャッシュされた類似の回答を返す
LiteLLMを使ってプロバイダーを抽象化してください。
8. まとめ
LLMアプリ開発でのClaude Code活用ポイント:
- フレームワーク選択(LangChain vs LlamaIndex)を要件に応じて相談できる
- RAGシステムのチャンク戦略・ベクトルDB設定を自動最適化
- プロンプト管理・バージョン管理の仕組みを自動構築
- 評価フレームワークの設定・実行を自律的に実施
LLMアプリの主要コンポーネント:
- データ取り込み・インデックス構築
- 検索・リトリーバル(ハイブリッド検索)
- 生成・プロンプト管理
- 評価・モニタリング
- コスト管理・レートリミット
次回の第29回:データ分析・可視化をする方法では、PandasとMatplotlibを使った分析をClaude Codeで自動化する方法を解説します。
よくある質問(FAQ)
Q. LLMアプリ開発でClaude Codeを使うと、どのモデルが内部で使われますか?
A. Claude Code自体はAnthropicのモデルを使ってコードを生成します。あなたが開発するLLMアプリで使うモデルは、要件に応じて自由に選択できます。Claude・GPT・Gemini・Llama等、どのモデルでも対応します。
Q. RAGシステムの精度が低い場合はどうすれば改善できますか?
A. Claude Codeに「RAGasでの評価スコアが低いです。チャンク戦略・埋め込みモデル・検索方法の改善案を提案してください」と相談することで、体系的な改善策を提案してくれます。
この記事はClaude Code入門シリーズ(第3部)の第28回です。← 第27回:セキュリティ診断 | 第29回:データ分析・可視化 →
ご質問はお問い合わせページからお気軽にどうぞ。