Shubhamsaboo/awesome-llm-apps

⭐ 53,663 🍴 6,235 Python📄 Apache License 2.0 GitHubで見る →

主な特徴

  • 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またはインメモリでの会話履歴保存

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

  1. 基本フロー:

    • ユーザー入力(UI経由)
    • エージェントによる処理
    • ツール呼び出し(必要に応じて)
    • LLMによる応答生成
    • 結果の表示
  2. RAGフロー:

    • ドキュメントアップロード/取得
    • テキスト抽出とチャンク分割
    • 埋め込みベクトル生成
    • ベクトルデータベースへの保存
    • 質問に基づく検索
    • コンテキストを使用した回答生成
  3. マルチエージェントフロー:

    • コーディネーターがタスクを受け取り
    • 適切な専門エージェントに振り分け
    • 各エージェントが並列/直列に作業
    • 結果の統合と最終応答生成

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以上のスターが、このリポジトリの有用性を証明しています。