Shubhamsaboo/awesome-llm-apps

⭐ 52,440 🍴 6,129 Python📄 Apache License 2.0 GitHubで見る →

主な特徴

  • **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/: エージェントベースRAG
    • corrective_rag/: 修正機能付きRAG
    • hybrid_search_rag/: ハイブリッド検索RAG
  • voice_ai_agents/: 音声対応アプリケーション
  • mcp_ai_agents/: Model Context Protocol実装

チュートリアル・ガイド

  • 各サンプルの詳細なREADME
  • 段階的な難易度設定(starter → advanced)
  • フレームワーク別の実装例
  • 実際に動作するコードとUI

技術的詳細

アーキテクチャ

全体構造

このリポジトリは、教育的なサンプル集として構成され、以下のアーキテクチャを採用しています:

  1. カテゴリベースの整理: 用途や難易度に応じた7つの主要カテゴリ
  2. モジュラー設計: 各サンプルが独立したプロジェクト
  3. 統一的な構造: app.py + requirements.txt + READMEの基本構成
  4. フレームワーク中立: 特定のフレームワークに依存しない設計

ディレクトリ構成

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の標準化

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

  1. ユーザー入力: Streamlit UI経由でのテキスト/音声入力
  2. エージェント処理:
    • 入力解析とタスク理解
    • 必要に応じてツール呼び出し
    • 知識ベース検索(RAGの場合)
    • LLMへのクエリ送信
  3. 結果生成: LLMレスポンスの整形と表示
  4. フィードバック: 会話履歴の保持(一部のアプリ)

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アプリケーション開発の出発点としては、これ以上ないリソースと言えるでしょう。特に、新しい技術やフレームワークが継続的に追加されている点も評価でき、最新のトレンドをキャッチアップするのにも役立ちます。