Shubhamsaboo/awesome-llm-apps
主な特徴
- 50以上の実用的なLLMアプリケーション例
- 初心者向け(Starter AI Agents)から上級者向け(Advanced AI Agents)までの段階的な学習構成
- 複数のLLMプロバイダー対応(OpenAI、Anthropic、Google、ローカルモデル)
- RAG(Retrieval Augmented Generation)の様々な実装パターン
- 音声AIエージェントの実装例
- MCP(Model Context Protocol)を使用したエージェント
- マルチエージェントチームの構築例
- Streamlitを主としたUI実装
- プロダクションレディなアーキテクチャ例
- 8言語でのドキュメント対応
リポジトリ解析: Shubhamsaboo/awesome-llm-apps
基本情報
- リポジトリ名: Shubhamsaboo/awesome-llm-apps
- 主要言語: Python
- スター数: 53,663
- フォーク数: 6,235
- 最終更新: 2025年7月時点でアクティブ
- ライセンス: Apache License 2.0
- トピックス: llm-applications, ai-agents, rag, openai, anthropic, gemini, langchain, streamlit, multi-agent, voice-agents
概要
一言で言うと
OpenAI、Anthropic、Gemini、オープンソースモデルを使用したAIエージェントとRAGアプリケーションの実用的な実装例を集めた教育的リポジトリ。
詳細説明
Awesome LLM Appsは、Unwind AIのShubham Sabooが作成した、LLM(大規模言語モデル)を使用した様々なアプリケーションの実装例を収集したキュレートされたコレクションです。初心者から上級者まで、LLMアプリケーションの構築方法を学ぶための実践的なリソースとして設計されています。
各例は実装の容易さを重視し、コード、依存関係、実行手順が明確に示されています。単純なチャットボットから複雑なマルチエージェントシステムまで、幅広いユースケースをカバーしており、ビジネス自動化、コンテンツ作成、研究支援、エンターテインメントなどの分野でのアプリケーションが含まれています。
主な特徴
- 50以上の実用的なLLMアプリケーション例
- 初心者向け(Starter AI Agents)から上級者向け(Advanced AI Agents)までの段階的な学習構成
- 複数のLLMプロバイダー対応(OpenAI、Anthropic、Google、ローカルモデル)
- RAG(Retrieval Augmented Generation)の様々な実装パターン
- 音声AIエージェントの実装例
- MCP(Model Context Protocol)を使用したエージェント
- マルチエージェントチームの構築例
- Streamlitを主としたUI実装
- プロダクションレディなアーキテクチャ例
- 8言語でのドキュメント対応
使用方法
インストール
前提条件
- Python 3.8以降
- APIキー(使用するLLMプロバイダーに応じて)
- OpenAI APIキー
- Anthropic APIキー
- Google AI APIキー
- その他サービス用APIキー(SerpAPI、Tavily等)
インストール手順
# 方法1: リポジトリをクローン
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
# 方法2: 目的のプロジェクトに移動
cd awesome-llm-apps/starter_ai_agents/ai_travel_agent
# 方法3: 依存関係をインストール
pip install -r requirements.txt
# 方法4: 環境変数を設定(.envファイルまたは直接export)
export OPENAI_API_KEY="your-api-key"
# 方法5: アプリケーションを実行
streamlit run app.py
基本的な使い方
Hello World相当の例
# starter_ai_agents/ai_travel_agent/travel_agent.py の簡略版
from agno import Agent, Swarm
import os
# シンプルなエージェントを作成
travel_agent = Agent(
name="Travel Agent",
instructions="You are a helpful travel agent.",
model="gpt-4o"
)
# Swarmクライアントを初期化
client = Swarm(api_key=os.getenv("OPENAI_API_KEY"))
# エージェントを実行
response = client.run(
agent=travel_agent,
messages=[{"role": "user", "content": "What's the best time to visit Japan?"}]
)
print(response.messages[-1].content)
実践的な使用例
# RAGを使用したPDFチャットアプリの例
import streamlit as st
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_qdrant import QdrantVectorStore
from langchain.chains import RetrievalQA
from langchain_community.document_loaders import PyPDFLoader
# Streamlit UI
st.title("📚 Chat with PDF")
# PDFアップロード
uploaded_file = st.file_uploader("Upload a PDF", type="pdf")
if uploaded_file:
# PDFを読み込み、ベクトルストアに保存
loader = PyPDFLoader(uploaded_file)
docs = loader.load_and_split()
# ベクトルストアを作成
embeddings = OpenAIEmbeddings()
vectorstore = QdrantVectorStore.from_documents(
docs, embeddings, collection_name="pdf_collection"
)
# QAチェーンを作成
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o"),
retriever=vectorstore.as_retriever()
)
# 質問入力
question = st.text_input("🤔 Ask a question about the PDF")
if question:
answer = qa_chain.run(question)
st.write("💡 Answer:", answer)
高度な使い方
# マルチエージェントチームの例(AI Finance Team)
from agno import Agent, Swarm
from agno.tools import TavilySearchTool, BrowserBaseTool
# 専門エージェントを定義
web_searcher = Agent(
name="Web Search Agent",
instructions="You are an expert at searching the web for financial information.",
tools=[TavilySearchTool()],
model="gpt-4o"
)
finance_analyst = Agent(
name="Finance Analyst",
instructions="You are a senior financial analyst. Analyze data and provide insights.",
model="gpt-4o"
)
coordinator = Agent(
name="Coordinator",
instructions="You coordinate between agents to provide comprehensive financial advice.",
model="gpt-4o"
)
# エージェント間のハンドオフ関数
def transfer_to_web_searcher():
return web_searcher
def transfer_to_analyst():
return finance_analyst
coordinator.functions = [transfer_to_web_searcher, transfer_to_analyst]
# チームを実行
client = Swarm()
response = client.run(
agent=coordinator,
messages=[{
"role": "user",
"content": "Analyze Apple's financial performance in Q4 2024"
}]
)
# MCPエージェントの例(GitHub統合)
from mcp import ClientSession
import asyncio
async def run_github_agent():
async with ClientSession(
server_params={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {"GITHUB_TOKEN": os.getenv("GITHUB_TOKEN")}
}
) as session:
# GitHubリポジトリを操作
result = await session.call_tool(
"github_search_repositories",
{"query": "awesome-llm-apps", "limit": 5}
)
return result
# 音声AIエージェントの例
from openai import OpenAI
import speech_recognition as sr
class VoiceAgent:
def __init__(self):
self.client = OpenAI()
self.recognizer = sr.Recognizer()
def listen(self):
with sr.Microphone() as source:
audio = self.recognizer.listen(source)
text = self.recognizer.recognize_google(audio)
return text
def respond(self, text):
# LLMで応答を生成
response = self.client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": text}]
)
# 音声で応答
audio_response = self.client.audio.speech.create(
model="tts-1",
voice="alloy",
input=response.choices[0].message.content
)
return audio_response
ドキュメント・リソース
公式ドキュメント
- README.md: プロジェクトの概要、カテゴリ別のアプリケーション一覧
- 各アプリのREADME: 各ディレクトリ内の個別説明
- 多言語ドキュメント: 8言語でのドキュメント提供
サンプル・デモ
- starter_ai_agents/: 初心者向けのシンプルなエージェント実装
- advanced_ai_agents/: 複雑なマルチエージェントシステム
- rag_tutorials/: 様々なRAG実装パターン
- voice_ai_agents/: 音声入出力を持つエージェント
- mcp_ai_agents/: Model Context Protocolを使用したエージェント
チュートリアル・ガイド
- Chat with Xシリーズ: 様々なデータソースとの対話アプリ
- LLM Apps with Memory: メモリ機能を持つアプリケーション
- AI Agent Framework Crash Course: フレームワーク別の学習ガイド
技術的詳細
アーキテクチャ
全体構造
リポジトリは教育的な目的で構成され、難易度別にカテゴリ分けされたアプリケーション例が配置されています。各アプリケーションは独立して動作し、必要な依存関係と実行手順が含まれています。
ディレクトリ構成
awsome-llm-apps/
├── starter_ai_agents/ # 初心者向けシンプルなエージェント
│ ├── ai_travel_agent/ # 旅行プランニングエージェント
│ ├── ai_data_analysis_agent/ # データ分析エージェント
│ └── .../ # その他のスターターエージェント
├── advanced_ai_agents/ # 上級者向け複雑なエージェント
│ ├── single_agent_apps/ # 単一エージェントアプリ
│ ├── multi_agent_apps/ # マルチエージェントチーム
│ └── autonomous_game_playing_agent_apps/ # ゲームAI
├── rag_tutorials/ # RAG実装のチュートリアル
│ ├── agentic_rag/ # エージェント型RAG
│ ├── corrective_rag/ # 修正機能付きRAG
│ └── hybrid_search_rag/ # ハイブリッド検索RAG
├── voice_ai_agents/ # 音声入出力対応エージェント
├── mcp_ai_agents/ # MCPプロトコル使用エージェント
├── advanced_llm_apps/ # その他の高度なLLMアプリ
│ ├── chat_with_X_tutorials/ # 様々なデータソースとのチャット
│ └── llm_apps_with_memory_tutorials/ # メモリ機能付きアプリ
└── docs/ # ドキュメントとリソース
主要コンポーネント
-
エージェント実装: 各アプリの中核となるエージェント定義
- 場所:
[category]/[app_name]/[agent_name].py - 役割: 特定のタスクを実行するAIエージェント
- ツール: 検索、Webスクレイピング、API呼び出し等
- 場所:
-
UIコンポーネント: Streamlit/Gradioを使用したWeb UI
- 場所:
[category]/[app_name]/app.py - 役割: ユーザーインターフェースの提供
- 機能: 入力フォーム、結果表示、ファイルアップロード
- 場所:
-
テスト・デモスクリプト: 各アプリのテストとデモ
- 場所:
[category]/[app_name]/test_*.py - 役割: 機能テストとデモンストレーション
- 場所:
技術スタック
コア技術
- 言語: Python 3.8+
- 主要フレームワーク:
- Agno: 多くの例で使用されるシンプルなエージェントフレームワーク
- LangChain: RAGや複雑なワークフローに使用
- CrewAI: マルチエージェントコーディネーション
- OpenAI Swarm: 軽量エージェントオーケストレーション
- UIフレームワーク:
- Streamlit: メインのUIフレームワーク
- Gradio: 一部のアプリで使用
LLMプロバイダー
- OpenAI: GPT-4、GPT-4o、TTS、STT
- Anthropic: Claudeモデル
- Google: Gemini Pro、Gemini Vision
- ローカルモデル: Llama、DeepSeek、Qwen(Ollama経由)
- xAI: Grokモデル
主要ライブラリ
- ベクトルデータベース: Qdrant、LanceDB
- 検索ツール: SerpAPI、DuckDuckGo、Tavily
- ドキュメント処理: PyPDF、Newspaper4k、Firecrawl
- 音声処理: OpenAI TTS/STT、speech_recognition
- Webスクレイピング: BrowserBase、BeautifulSoup
設計パターン・手法
- 単一エージェントパターン: 直接的なLLMとツールの統合
- マルチエージェントチームパターン: コーディネーターが専門エージェントを管理
- RAGアーキテクチャ: ドキュメント埋め込み→ベクトル保存→検索→生成
- MCPパターン: 外部サービスとの非同期通信
- メモリ管理: SQLiteまたはインメモリでの会話履歴保存
データフロー・処理フロー
-
基本フロー:
- ユーザー入力(UI経由)
- エージェントによる処理
- ツール呼び出し(必要に応じて)
- LLMによる応答生成
- 結果の表示
-
RAGフロー:
- ドキュメントアップロード/取得
- テキスト抽出とチャンク分割
- 埋め込みベクトル生成
- ベクトルデータベースへの保存
- 質問に基づく検索
- コンテキストを使用した回答生成
-
マルチエージェントフロー:
- コーディネーターがタスクを受け取り
- 適切な専門エージェントに振り分け
- 各エージェントが並列/直列に作業
- 結果の統合と最終応答生成
API・インターフェース
公開API
エージェント定義API
- 目的: LLMエージェントの作成と管理
- 使用例:
# Agnoフレームワークの例
from agno import Agent, Swarm
agent = Agent(
name="My Agent",
instructions="You are a helpful assistant.",
model="gpt-4o",
tools=[web_search_tool, calculator_tool]
)
# LangChainの例
from langchain.agents import create_react_agent
from langchain_openai import ChatOpenAI
agent = create_react_agent(
llm=ChatOpenAI(model="gpt-4o"),
tools=tools,
prompt=prompt
)
設定・カスタマイズ
設定ファイル
# 一般的な設定パターン(.envファイル)
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=...
SERPAPI_API_KEY=...
QDRANT_URL=...
QDRANT_API_KEY=...
# Streamlit secretsの例
# .streamlit/secrets.toml
[api_keys]
openai = "sk-..."
anthropic = "sk-ant-..."
拡張・カスタマイズ
- カスタムツールの追加: Toolクラスを継承して実装
- 新しいエージェントタイプ: Agentクラスを拡張
- UIカスタマイズ: Streamlitコンポーネントの追加
- プロンプトテンプレート: instructionsのカスタマイズ
パフォーマンス・スケーラビリティ
パフォーマンス特性
- 応答時間: LLM APIのレイテンシに依存(通常1-10秒)
- ストリーミング: 多くの例でストリーミング応答をサポート
- 最適化手法:
- キャッシュの活用(RAGアプリケーション)
- 並列エージェント実行
- ローカルモデルの使用
スケーラビリティ
- 同時ユーザー数: Streamlitのセッション管理に依存
- APIレート制限: 各LLMプロバイダーの制限に従う
- ベクトルデータベース: Qdrant/LanceDBのスケーラビリティに依存
- マルチエージェント: エージェント数に応じたAPI呼び出し回数
制限事項
- APIコスト: 商用利用にはAPIキー管理とコスト管理が必要
- デプロイメント: 例はローカル実行前提、本番環境へのデプロイは追加作業必要
- セキュリティ: APIキーの管理、ユーザー認証は未実装
- エラーハンドリング: 基本的なエラー処理のみ実装
評価・所感
技術的評価
強み
- 幅広いユースケースをカバーする豊富な例
- 初心者から上級者までの段階的な学習パス
- 実装の容易さを重視したコード構成
- 複数のLLMプロバイダーとフレームワークの比較が可能
- プロダクションレディなアーキテクチャ例の提供
改善の余地
- テストコードの不足
- デプロイメントガイドの不足
- パフォーマンス最適化の詳細が不足
- セキュリティベストプラクティスの実装が限定的
向いている用途
- LLMアプリケーション開発の学習
- プロトタイプの迅速な開発
- フレームワークやパターンの比較検討
- POC(Proof of Concept)の作成
- ハッカソンやワークショップでの使用
向いていない用途
- そのままの本番環境へのデプロイ
- 大規模エンタープライズアプリケーション
- 厳格なセキュリティ要件がある用途
- 高度なカスタマイズが必要な場合
総評
Awesome LLM Appsは、LLMアプリケーション開発を学ぶための優れた教育リソースです。実用的な例を通じて、初心者でもAIエージェントやRAGアプリケーションを構築でき、上級者は複雑なマルチエージェントシステムの実装パターンを学べます。
特に、様々なフレームワークやLLMプロバイダーを使用した実装例があるため、技術選定の参考にもなります。また、実際のビジネスユースケースに基づいた例が多いため、実用的なアプリケーション開発のインスピレーション源としても価値があります。GitHubの53,000以上のスターが、このリポジトリの有用性を証明しています。