Shubhamsaboo/awesome-llm-apps
主な特徴
- **200+の実践的なサンプル**: 基本から高度な実装まで幅広くカバー
- **7つの主要カテゴリ**: AIエージェント、RAG、音声アプリ、MCPなど体系的に整理
- **マルチフレームワーク対応**: agno、phidata、LangChain、CrewAI、Swarmなど
- **多様なLLMプロバイダー**: OpenAI、Anthropic、Google、ローカルモデルに対応
- **モジュラー設計**: 各サンプルが独立して動作、簡単にカスタマイズ可能
- **Streamlit UI**: ほとんどのサンプルにウェブUI付き
- **詳細なドキュメント**: 各サンプルにREADMEとセットアップ手順
- **多言語対応**: READMEが8言語で利用可能
リポジトリ解析: Shubhamsaboo/awesome-llm-apps
基本情報
- リポジトリ名: Shubhamsaboo/awesome-llm-apps
- 主要言語: Python
- スター数: 52,440
- フォーク数: 6,129
- 最終更新: アクティブに更新中
- ライセンス: Apache License 2.0
- トピックス: llm-apps, ai-agents, rag, openai, anthropic, gemini, multi-agent-systems, voice-agents
概要
一言で言うと
AIエージェントやRAGを使用したLLMアプリケーションの実践的なサンプル集。OpenAI、Anthropic、Gemini、オープンソースモデルに対応した、すぐに動くコード例を提供する教育リソース。
詳細説明
このリポジトリは、Unwind AIのShubham Saboo氏によって作成された、LLM(大規模言語モデル)を活用したアプリケーションの包括的な教育リソースです。
初心者から上級者までを対象に、様々なLLMプロバイダー(OpenAI、Anthropic、Google、xAIなど)やオープンソースモデル(Llama、DeepSeek、Qwenなど)を使用した実践的なコード例を提供しています。
各サンプルは独立したプロジェクトとして構成され、requirements.txtとREADMEが含まれているため、クローンしてすぐに試すことができます。UIは主にStreamlitを使用し、ウェブインターフェースを通じて簡単に操作できるように設計されています。
主な特徴
- 200+の実践的なサンプル: 基本から高度な実装まで幅広くカバー
- 7つの主要カテゴリ: AIエージェント、RAG、音声アプリ、MCPなど体系的に整理
- マルチフレームワーク対応: agno、phidata、LangChain、CrewAI、Swarmなど
- 多様なLLMプロバイダー: OpenAI、Anthropic、Google、ローカルモデルに対応
- モジュラー設計: 各サンプルが独立して動作、簡単にカスタマイズ可能
- Streamlit UI: ほとんどのサンプルにウェブUI付き
- 詳細なドキュメント: 各サンプルにREADMEとセットアップ手順
- 多言語対応: READMEが8言語で利用可能
使用方法
インストール
前提条件
- Python 3.8以上
- Git
- 各LLMプロバイダーのAPIキー(サンプルによって異なる)
- オプション: Ollama(ローカルモデル用)
インストール手順
# リポジトリをクローン
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
cd awesome-llm-apps
# 使いたいサンプルのディレクトリへ移動
cd [カテゴリ名]/[サンプル名]
# 依存関係をインストール
pip install -r requirements.txt
# APIキーを設定(.envファイルまたは環境変数)
export OPENAI_API_KEY="your-api-key"
# アプリを実行
python app.py # または streamlit run app.py
基本的な使い方
Hello World相当の例
# 基本的なLLMエージェント
from agno.agent import Agent
from agno.models.openai import OpenAIChat
import streamlit as st
# エージェントを作成
agent = Agent(
name="Simple Assistant",
role="ユーザーの質問に答えるアシスタント",
model=OpenAIChat(id="gpt-4o-mini"),
instructions=["フレンドリーに対応してください"],
markdown=True
)
# Streamlit UI
st.title("シンプルなLLMアシスタント")
user_input = st.text_input("質問を入力してください")
if st.button("送信"):
response = agent.run(user_input)
st.write(response.content)
実践的な使用例
# Web検索機能付きRAGエージェント
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.knowledge.pdf import PDFUrlKnowledgeBase
from agno.vectordb.lancedb import LanceDb
from agno.embedder.openai import OpenAIEmbedder
# 知識ベースを作成
knowledge_base = PDFUrlKnowledgeBase(
urls=["https://example.com/document.pdf"],
vector_db=LanceDb(
table_name="documents",
embedder=OpenAIEmbedder(model="text-embedding-3-small"),
),
)
# エージェントを作成
rag_agent = Agent(
name="Research Assistant",
role="ドキュメントとWeb検索を使って質問に答える",
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGoTools()],
knowledge=knowledge_base,
search_knowledge=True,
instructions=[
"まず知識ベースを検索し、不十分な場合はWeb検索を使用",
"情報源を明記する",
],
)
# 使用例
response = rag_agent.run("最新のAIトレンドについて教えて")
print(response.content)
高度な使い方
# マルチエージェントチームの実装
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.yfinance import YFinanceTools
from agno.tools.duckduckgo import DuckDuckGoTools
# 各エージェントを定義
market_analyst = Agent(
name="Market Analyst",
role="株式市場のデータを分析",
model=OpenAIChat(id="gpt-4o"),
tools=[YFinanceTools(enable_all=True)],
instructions=["リアルタイムの市場データを使用"],
)
news_analyst = Agent(
name="News Analyst",
role="最新のニュースを収集し分析",
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGoTools()],
instructions=["信頼できるソースから情報を収集"],
)
investment_advisor = Agent(
name="Investment Advisor",
role="分析を総合して投資アドバイスを提供",
model=OpenAIChat(id="gpt-4o"),
instructions=["リスクとリターンを考慮したバランスの取れたアドバイス"],
)
# チームを構成
finance_team = Agent(
team=[market_analyst, news_analyst, investment_advisor],
name="Finance Advisory Team",
model=OpenAIChat(id="gpt-4o"),
instructions=[
"各エージェントの専門知識を活用",
"最終的な推奨事項をまとめる",
],
)
# チームにタスクを実行
response = finance_team.run(
"Apple株の投資分析を行い、今後の見通しを教えてください"
)
print(response.content)
ドキュメント・リソース
公式ドキュメント
- README.md: プロジェクトの概要、カテゴリ説明、基本的な使い方
- 各サンプルのREADME: 具体的なセットアップ手順と使用方法
- 多言語対応: 中国語、日本語、フランス語、スペイン語等のREADME
サンプル・デモ
- starter_ai_agents/: 初心者向けの基本的なAIエージェント
ai_travel_agent/: 旅行計画アシスタントai_data_analysis_agent/: データ分析エージェントweb_scrapping_ai_agent/: Webスクレイピングエージェント
- advanced_ai_agents/: 高度なエージェント実装
multi_agent_apps/: チームベースのエージェントautonomous_game_playing_agent_apps/: ゲームAI
- rag_tutorials/: RAGの様々な実装パターン
agentic_rag/: エージェントベースRAGcorrective_rag/: 修正機能付きRAGhybrid_search_rag/: ハイブリッド検索RAG
- voice_ai_agents/: 音声対応アプリケーション
- mcp_ai_agents/: Model Context Protocol実装
チュートリアル・ガイド
- 各サンプルの詳細なREADME
- 段階的な難易度設定(starter → advanced)
- フレームワーク別の実装例
- 実際に動作するコードとUI
技術的詳細
アーキテクチャ
全体構造
このリポジトリは、教育的なサンプル集として構成され、以下のアーキテクチャを採用しています:
- カテゴリベースの整理: 用途や難易度に応じた7つの主要カテゴリ
- モジュラー設計: 各サンプルが独立したプロジェクト
- 統一的な構造: app.py + requirements.txt + READMEの基本構成
- フレームワーク中立: 特定のフレームワークに依存しない設計
ディレクトリ構成
awesome-llm-apps/
├── starter_ai_agents/ # 初心者向け基本エージェント
│ ├── ai_travel_agent/ # 旅行計画エージェント
│ ├── ai_data_analysis_agent/ # データ分析
│ └── web_scrapping_ai_agent/ # Webスクレイピング
├── 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/ # ハイブリッド検索
├── voice_ai_agents/ # 音声エージェント
├── mcp_ai_agents/ # MCP実装
├── advanced_llm_apps/ # その他の高度なアプリ
└── docs/ # ドキュメント用画像等
主要コンポーネント
-
Agentフレームワーク: AIエージェントの基盤
- agno: 最も使用されているフレームワーク
- phidata: 代替エージェントフレームワーク
- LangChain: RAGや複雑なワークフロー用
-
UIコンポーネント: ユーザーインターフェース
- Streamlit: メインUIフレームワーク
- Gradio: 一部のサンプルで使用
-
ツール統合: 外部サービス連携
- Web検索: DuckDuckGo、SerpAPI
- ベクトルDB: Qdrant、ChromaDB、LanceDB
- データ処理: pandas、matplotlib
技術スタック
コア技術
- 言語: Python 3.8+(型ヒント、async/await使用)
- LLMフレームワーク:
- agno: エージェント構築、ツール統合
- LangChain: RAGパイプライン、チェーン構築
- CrewAI: マルチエージェントオーケストレーション
- 主要ライブラリ:
- streamlit: Web UI構築
- openai: OpenAI APIクライアント
- anthropic: Claude APIクライアント
- qdrant-client: ベクトル検索
- duckduckgo-search: Web検索機能
開発・運用ツール
- ビルドツール: pip、requirements.txtベース
- テスト: 各サンプルは手動テスト推奨
- 環境管理: .envファイルまたは環境変数
- デプロイ: Streamlit Cloud、Hugging Face Spaces対応
設計パターン・手法
- エージェントパターン: 役割、指示、ツールを持つ自律的エージェント
- RAGパターン: 知識ベース+ベクトル検索+LLM生成
- チームパターン: 複数エージェントの協調動作
- ストリームリットUIパターン: シンプルなWeb UIの標準化
データフロー・処理フロー
- ユーザー入力: Streamlit UI経由でのテキスト/音声入力
- エージェント処理:
- 入力解析とタスク理解
- 必要に応じてツール呼び出し
- 知識ベース検索(RAGの場合)
- LLMへのクエリ送信
- 結果生成: LLMレスポンスの整形と表示
- フィードバック: 会話履歴の保持(一部のアプリ)
API・インターフェース
公開API
Agent API
- 目的: AIエージェントの作成と実行
- 使用例:
from agno.agent import Agent
from agno.models.openai import OpenAIChat
agent = Agent(
name="Assistant",
model=OpenAIChat(id="gpt-4o"),
tools=[...],
instructions=[...]
)
response = agent.run("Your query")
Knowledge Base API
- 目的: RAG用の知識ベース構築
- 使用例:
from agno.knowledge.pdf import PDFUrlKnowledgeBase
from agno.vectordb.lancedb import LanceDb
knowledge = PDFUrlKnowledgeBase(
urls=["https://example.com/doc.pdf"],
vector_db=LanceDb(table_name="docs")
)
設定・カスタマイズ
設定ファイル
# .envファイルの例
OPENAI_API_KEY="sk-..."
ANTHROPIC_API_KEY="sk-ant-..."
GEMINI_API_KEY="..."
# コード内での使用
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
拡張・プラグイン開発
- 新しいツールの追加: Toolクラスを継承して実装
- カスタムモデルの統合: 新しいModelクラスの作成
- UIのカスタマイズ: Streamlitコンポーネントの追加
- サンプルのフォークと改造が推奨される
パフォーマンス・スケーラビリティ
パフォーマンス特性
- レスポンス時間: LLMプロバイダーに依存(2-10秒程度)
- ストリーミング対応: 多くのサンプルでストリーミングレスポンス対応
- 同時処理: マルチエージェントでの並列処理サポート
スケーラビリティ
- 各サンプルは単一ユーザー向けのデモ
- APIレート制限に注意が必要
- プロダクション使用には適切なエラーハンドリングとスケーリングが必要
制限事項
- 各LLMプロバイダーのAPIキーが必要
- サンプルは教育目的で、プロダクション品質ではない
- 一部のサンプルは特定の環境でのみ動作
- テストカバレッジは限定的
評価・所感
技術的評価
強み
- 実践的なサンプル数: 200以上の動作するコード例
- 幅広いカバレッジ: 初心者から上級者まで対応
- マルチフレームワーク: 様々なアプローチを学べる
- アクティブな更新: 継続的に新しいサンプルが追加
- コミュニティサポート: 5万以上のスター
改善の余地
- 統一的なテストフレームワークの欠如
- ドキュメントの深さがサンプルごとに異なる
- ベストプラクティスのガイドラインがない
- エラーハンドリングの一貫性
向いている用途
- LLMアプリケーション開発の学習
- プロトタイプの素早い構築
- 様々なフレームワークの比較検討
- AIエージェントの概念証明
- 教育・デモ用途
向いていない用途
- そのままのプロダクション利用
- 大規模なエンタープライズアプリケーション
- セキュリティが重要な用途
- リアルタイム性が求められるシステム
- オフライン完結型のアプリケーション
総評
awesome-llm-appsは、LLMアプリケーション開発を学ぶための優れた教育リソースです。特に、実際に動作するコードが豊富に用意されている点が魅力的で、理論だけでなく実践を通じて学べる構成になっています。
フレームワークの多様性も大きな強みで、agno、LangChain、CrewAIなど様々なアプローチを比較検討できます。また、OpenAIだけでなく、Anthropic、Google、オープンソースモデルにも対応しているため、様々なLLMプロバイダーを試すことができます。
一方で、サンプルが教育目的に特化しているため、プロダクション品質のコードを期待することはできません。しかし、LLMアプリケーション開発の出発点としては、これ以上ないリソースと言えるでしょう。特に、新しい技術やフレームワークが継続的に追加されている点も評価でき、最新のトレンドをキャッチアップするのにも役立ちます。