Shubhamsaboo/awesome-llm-apps

⭐ 55,076 🍴 6,446 Python📄 Apache License 2.0 GitHubで見る →

主な特徴

  • 60以上のAIエージェント実装(初級から上級まで)
  • 17以上のRAGアプリケーションバリエーション
  • マルチエージェントチームの実装(金融、法務、採用等)
  • 音声対応エージェント
  • MCP(Model Context Protocol)エージェント
  • 複数のフレームワークサポート(LangChain、Phidata、CrewAI、Autogen等)
  • StreamlitベースのUIで簡単に実行可能
  • 8言語でのドキュメント提供
  • モジュラー設計と再利用可能なコンポーネント

リポジトリ解析: Shubhamsaboo/awesome-llm-apps

基本情報

  • リポジトリ名: Shubhamsaboo/awesome-llm-apps
  • 主要言語: Python
  • スター数: 55,076
  • フォーク数: 6,446
  • 最終更新: 活発に更新中(Trendingリポジトリ)
  • ライセンス: Apache License 2.0
  • トピックス: LLM, AI Agents, RAG, OpenAI, Anthropic, Gemini, LangChain, Multi-Agent Systems, Voice AI

概要

一言で言うと

awesome-llm-appsは、AIエージェント、RAGシステム、マルチエージェントチーム、音声AIなどの実用的なLLMアプリケーションコレクションで、教育リソースとプロダクションレディなテンプレートの両方を提供します。

詳細説明

awesome-llm-appsは、LLMアプリケーション開発者のための包括的なリソース集です。単純なチャットボットから複雑なマルチエージェントシステムまで、幅広いアプリケーションをカバーしています。各アプリケーションは、明確なセットアップ手順、完全なソースコード、実装例を含んでおり、学習目的と実用目的の両方に適しています。OpenAI、Anthropic、Google、オープンソースモデルなど、複数のLLMプロバイダーをサポートし、ローカル実行とクラウドデプロイの両方に対応しています。

主な特徴

  • 60以上のAIエージェント実装(初級から上級まで)
  • 17以上のRAGアプリケーションバリエーション
  • マルチエージェントチームの実装(金融、法務、採用等)
  • 音声対応エージェント
  • MCP(Model Context Protocol)エージェント
  • 複数のフレームワークサポート(LangChain、Phidata、CrewAI、Autogen等)
  • StreamlitベースのUIで簡単に実行可能
  • 8言語でのドキュメント提供
  • モジュラー設計と再利用可能なコンポーネント

使用方法

インストール

前提条件

  • Python 3.8以上
  • pipパッケージマネージャー
  • LLMプロバイダーのAPIキー(OpenAI、Anthropic等)またはOllama(ローカルモデル用)

インストール手順

# リポジトリのクローン
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git

# 特定のアプリケーションへ移動
cd awesome-llm-apps/[カテゴリ]/[アプリ名]

# 依存関係のインストール
pip install -r requirements.txt

基本的な使い方

Hello World相当の例(AIトラベルエージェント)

# ai_travel_agent.py
import streamlit as st
from phi.agent import Agent
from phi.llm.openai import OpenAIChat
from phi.tools.duckduckgo import DuckDuckGo

# エージェントの作成
travel_agent = Agent(
    name="Travel Agent",
    llm=OpenAIChat(model="gpt-4o"),
    tools=[DuckDuckGo()],
    description="I am a travel agent that can help you plan your trips."
)

# Streamlit UIで実行
if st.button("Plan a trip"):
    response = travel_agent.run("Plan a 3-day trip to Tokyo")
    st.write(response)

実行方法

# Streamlitで起動
streamlit run ai_travel_agent.py

# ブラウザで http://localhost:8501 を開く
# サイドバーでAPIキーを入力

実践的な使用例(RAGアプリケーション)

# rag_chain/app.py
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_qdrant import Qdrant
from langchain.chains import RetrievalQA
from langchain_community.document_loaders import PyPDFLoader

# PDFからドキュメントをロード
loader = PyPDFLoader("document.pdf")
documents = loader.load()

# ベクトルストアの作成
vectorstore = Qdrant.from_documents(
    documents,
    OpenAIEmbeddings(),
    collection_name="my_documents"
)

# RAGチェーンの作成
rag_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-4"),
    retriever=vectorstore.as_retriever()
)

# 質問応答
result = rag_chain.invoke("What is the main topic of this document?")

高度な使い方(マルチエージェントシステム)

# multi_agent_apps/ai_finance_team.py
from crewai import Agent, Crew, Task

# 専門エージェントの定義
market_analyst = Agent(
    role="Market Analyst",
    goal="Analyze market trends and provide insights",
    backstory="Expert in financial markets with 10 years experience"
)

risk_manager = Agent(
    role="Risk Manager",
    goal="Assess and manage investment risks",
    backstory="Specialized in risk assessment and mitigation"
)

financial_advisor = Agent(
    role="Financial Advisor",
    goal="Provide personalized investment recommendations",
    backstory="Certified financial planner with client focus"
)

# チームとタスクの設定
finance_crew = Crew(
    agents=[market_analyst, risk_manager, financial_advisor],
    tasks=[
        Task(description="Analyze S&P 500 trends", agent=market_analyst),
        Task(description="Assess portfolio risk", agent=risk_manager),
        Task(description="Create investment plan", agent=financial_advisor)
    ]
)

# 実行
result = finance_crew.kickoff()

ドキュメント・リソース

公式ドキュメント

  • README.md: プロジェクト概要、カテゴリ別アプリケーションリスト、セットアップ手順
  • 各アプリのREADME.md: 個別のセットアップ手順、使用例、要件
  • 多言語ドキュメント: 8言語(英語、中国語、スペイン語、フランス語等)対応

サンプル・デモ

  • starter_ai_agents/: 初心者向けシンプルエージェント(60+アプリ)
  • advanced_ai_agents/: 上級者向け複雑エージェント
  • rag_tutorials/: 様々なRAG実装パターン(17+アプリ)
  • voice_ai_agents/: 音声対応エージェント
  • mcp_ai_agents/: Model Context Protocolエージェント

チュートリアル・ガイド

  • chat_with_X_tutorials/: 様々なデータソースとのチャット実装
  • llm_apps_with_memory_tutorials/: メモリ機能付きアプリケーション
  • llm_finetuning_tutorials/: ファインチューニングガイド
  • ai_agent_framework_crash_course/: フレームワーク別チュートリアル

技術的詳細

アーキテクチャ

全体構造

このリポジトリはキュレートされたコレクションであり、各アプリケーションは独立したプロジェクトとして構成されています。カテゴリ別に整理され、段階的な学習が可能な構造になっています。

ディレクトリ構成

awesome-llm-apps/
├── starter_ai_agents/        # 初心者向けシングルエージェント
│   ├── ai_travel_agent/      # 旅行計画エージェント
│   ├── ai_data_analysis_agent/  # データ分析エージェント
│   └── ai_music_generator_agent/  # 音楽生成エージェント
├── advanced_ai_agents/       # 上級者向けエージェント
│   ├── single_agent_apps/    # 高度なシングルエージェント
│   ├── multi_agent_apps/     # マルチエージェントシステム
│   └── autonomous_game_playing_agent_apps/
├── voice_ai_agents/          # 音声対応エージェント
├── mcp_ai_agents/            # MCPエージェント
├── rag_tutorials/            # RAG実装集
└── advanced_llm_apps/        # 高度なアプリケーション

主要コンポーネント

  • エージェントフレームワーク: 各アプリは異なるフレームワークを使用

    • 場所: 各アプリケーションディレクトリ
    • 依存: requirements.txtで管理
    • インターフェース: Streamlit UIまたはCLI
  • UIコンポーネント: Streamlitベースの共通パターン

    • サイドバーでのAPIキー入力
    • リアルタイムのフィードバック
    • プログレスインジケーター

技術スタック

コア技術

  • 言語: Python 3.8+
  • フレームワーク:
    • LangChain: RAGアプリケーション、チェーン構築
    • Phidata/Agno: モダンなエージェント開発
    • CrewAI: マルチエージェントオーケストレーション
    • Autogen: Microsoftのマルチエージェントフレームワーク
    • OpenAI Swarm: エージェント調整
  • 主要ライブラリ:
    • Streamlit: UIフレームワーク
    • FastAPI: API開発
    • Qdrant/ChromaDB: ベクトルデータベース
    • OpenAI/Anthropic/Google SDKs: LLMプロバイダー
    • Ollama: ローカルモデル実行

開発・運用ツール

  • パッケージ管理: pip + requirements.txt
  • 環境管理: venv/conda推奨
  • デプロイ:
    • ローカル: Streamlit経由
    • クラウド: Streamlit Cloud、Hugging Face Spaces、Vercel

設計パターン・手法

  • モジュラーエージェント設計: 明確な役割と責任を持つエージェント
  • 環境変数管理: APIキーの安全な管理
  • ストリーミング処理: リアルタイムフィードバック
  • エラーハンドリング: ユーザーフレンドリーなエラーメッセージ
  • ローカルファースト: Ollamaを使用したローカル実行オプション

データフロー・処理フロー

  1. ユーザー入力: Streamlit UIまたはCLI経由
  2. エージェント処理:
    • タスク解析
    • ツール呼び出し(必要な場合)
    • LLM推論
  3. 結果出力: ストリーミングまたはバッチ処理
  4. フィードバックループ: マルチエージェントの場合

API・インターフェース

共通APIパターン

LLMプロバイダー設定

  • 目的: 複数のLLMプロバイダーを切り替え可能
  • 使用例:
# OpenAI
from openai import OpenAI
client = OpenAI(api_key="your-api-key")

# Anthropic
from anthropic import Anthropic
client = Anthropic(api_key="your-api-key")

# ローカルモデル (Ollama)
import ollama
response = ollama.chat(model='llama3.1', messages=[...])

設定・カスタマイズ

環境設定

# .envファイル例
OPENAI_API_KEY=your-openai-key
ANTHROPIC_API_KEY=your-anthropic-key
GOOGLE_API_KEY=your-google-key

# ベクトルデータベース設定
QDRANT_URL=http://localhost:6333
QDRANT_API_KEY=your-qdrant-key

アプリケーションカスタマイズ

各アプリケーションは以下の方法でカスタマイズ可能:

  1. プロンプトの変更
  2. 新しいツールの追加
  3. UIの調整(Streamlitコンポーネント)
  4. モデルの変更(GPT-4、Claude、Gemini等)

パフォーマンス・スケーラビリティ

パフォーマンス特性

  • 応答時間: LLM APIのレイテンシに依存
  • 最適化手法:
    • ストリーミング応答の活用
    • 非同期処理
    • キャッシュの活用(RAGアプリ)

スケーラビリティ

  • 水平スケーリング:
    • 複数のLLMプロバイダーの並列利用
    • ロードバランシング
  • ローカル実行: Ollamaを使用した完全オフライン実行

制限事項

  • LLM APIのレートリミット
  • トークン制限(コンテキストウィンドウ)
  • APIコスト(商用LLM使用時)
  • Streamlitの同時接続数制限

評価・所感

技術的評価

強み

  • 非常に幅広いアプリケーションカバレッジ(60+の実装例)
  • プロダクションレディな完全な実装
  • 明確なセットアップ手順と優れたドキュメント
  • 複数のフレームワークとLLMプロバイダーのサポート
  • 段階的な学習が可能な構成(初級から上級まで)
  • ローカル実行とクラウドデプロイの両方に対応
  • アクティブなコミュニティと頻繁な更新

改善の余地

  • 統一的なコーディングスタイルの欠如
  • テストコードの不足
  • 依存関係の管理(各アプリごとにrequirements.txt)
  • パフォーマンス最適化の文書化

向いている用途

  • LLMアプリケーション開発の学習
  • プロトタイプの迅速な構築
  • ベストプラクティスの参考実装
  • 様々なフレームワークの比較検討
  • デモやPoCの作成

向いていない用途

  • 大規模プロダクションシステムの直接利用(カスタマイズが必要)
  • 高度なセキュリティ要件がある環境
  • リアルタイム性が厳格に要求されるシステム

総評

awesome-llm-appsは、LLMアプリケーション開発における最も包括的なリソースの一つです。特に、実用的なサンプルコードと明確なドキュメントにより、初心者から上級者まで幅広い開発者が即座に活用できる点が優れています。様々なフレームワークとLLMプロバイダーをカバーしているため、技術選定の参考にもなります。今後もコミュニティによる積極的な更新が期待され、LLMアプリケーション開発のデファクトスタンダードリソースとしての地位を確立しています。