microsoft/generative-ai-for-beginners

⭐ 93,438 🍴 17,000 Python, TypeScript, JavaScript📄 MIT License GitHubで見る →

主な特徴

  • **21の体系的なレッスン**: 基礎から応用まで段階的に学習
  • **マルチモーダル学習**: 動画、テキスト、コードを組み合わせた学習体験
  • **複数言語サポート**: Python、TypeScript/JavaScript、.NET版も利用可能
  • **実用的なアプリケーション構築**: テキスト生成、チャット、検索、画像生成アプリ
  • **エンタープライズ対応**: セキュリティ、UXデザイン、LLMOpsなど
  • **40以上の言語に翻訳**: GitHub Actionsで自動更新
  • **アクティブなコミュニティ**: Discordサーバーとフォーラムでのサポート

リポジトリ解析: microsoft/generative-ai-for-beginners

基本情報

  • リポジトリ名: microsoft/generative-ai-for-beginners
  • 主要言語: Python, TypeScript, JavaScript
  • スター数: 93,438
  • フォーク数: 17,000+
  • 最終更新: アクティブに更新中
  • ライセンス: MIT License
  • トピックス: generative-ai, curriculum, llm, openai, azure-openai, prompt-engineering, rag, ai-agents, fine-tuning, education

概要

一言で言うと

生成AIアプリケーションの構築に必要な全てを学べる21レッスンの包括的なカリキュラム。Microsoft Cloud Advocatesチームによる初心者向け生成AI教育プログラム。

詳細説明

このプロジェクトは、生成AIの基礎から実用的なアプリケーション構築までをカバーする包括的な教育カリキュラムです。プロンプトエンジニアリングの基礎からRAG(Retrieval Augmented Generation)、AIエージェント、ファインチューニングまで、現代の生成AI技術の全スペクトラムをカバーしています。

各レッスンは「Learn」(概念理解)または「Build」(実装フォーカス)に分類され、PythonとTypeScriptの両方でコードサンプルが提供されています。Azure OpenAI Service、GitHub Model Catalog、OpenAI APIのいずれかを使用して学習できる柔軟性があります。

カリキュラムは常に更新されており、最新の技術トレンド(SLM、Mistral、Metaモデルなど)も含まれています。

主な特徴

  • 21の体系的なレッスン: 基礎から応用まで段階的に学習
  • マルチモーダル学習: 動画、テキスト、コードを組み合わせた学習体験
  • 複数言語サポート: Python、TypeScript/JavaScript、.NET版も利用可能
  • 実用的なアプリケーション構築: テキスト生成、チャット、検索、画像生成アプリ
  • エンタープライズ対応: セキュリティ、UXデザイン、LLMOpsなど
  • 40以上の言語に翻訳: GitHub Actionsで自動更新
  • アクティブなコミュニティ: Discordサーバーとフォーラムでのサポート

使用方法

インストール

前提条件

  • Python 3.10以上またはTypeScript/Node.js
  • Git
  • GitHubアカウント(リポジトリをForkするため)
  • 以下のいずれかのAPIキー:
    • Azure OpenAI Service
    • GitHub Model Catalog
    • OpenAI API
  • PythonまたはTypeScriptの基本知識

インストール手順

# リポジトリのクローン
# まずGitHubでForkしてから
git clone https://github.com/[your-username]/generative-ai-for-beginners.git
cd generative-ai-for-beginners

# Pythonの場合(レッスンディレクトリで)
cd 06-text-generation-apps/python
pip install -r requirements.txt

# TypeScript/JavaScriptの場合
cd 06-text-generation-apps/typescript
npm install

# 環境変数の設定(.envファイル作成)
# AZURE_OPENAI_ENDPOINT=your_endpoint
# AZURE_OPENAI_API_KEY=your_key
# または
# OPENAI_API_KEY=your_key

基本的な使い方

Hello World相当の例(テキスト生成)

# Pythonの例: シンプルなテキスト生成
from openai import OpenAI

client = OpenAI(api_key="your-api-key")

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Generate a short story about a robot learning to paint."}
    ],
    temperature=0.7,
    max_tokens=200
)

print(response.choices[0].message.content)

実践的な使用例(レシピアプリ)

# レッスン06のレシピアプリ例
import os
from openai import OpenAI

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

ingredients = input("What ingredients do you have? ")

messages = [
    {
        "role": "system", 
        "content": "You are a helpful assistant that suggests recipes based on ingredients."
    },
    {
        "role": "user", 
        "content": f"Suggest a recipe using these ingredients: {ingredients}"
    }
]

response = client.chat.completions.create(
    model="gpt-4",
    messages=messages,
    temperature=0.7
)

print("\nHere's a recipe for you:\n")
print(response.choices[0].message.content)

高度な使い方(RAGパターン)

# レッスン15のRAG実装例
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI

# ドキュメントをベクトル化
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(documents, embeddings)

# RAGチェーンの作成
qa_chain = RetrievalQA.from_chain_type(
    llm=OpenAI(temperature=0),
    chain_type="stuff",
    retriever=vectorstore.as_retriever()
)

# 質問応答
query = "What is prompt engineering?"
result = qa_chain.run(query)
print(result)

ドキュメント・リソース

公式ドキュメント

サンプル・デモ

  • テキスト生成アプリ: レッスン06のレシピアプリ、歴史ボット、学習バディ
  • チャットアプリ: レッスン07の会話型アプリケーション
  • 検索アプリ: レッスン08のベクトル検索実装
  • 画像生成アプリ: レッスン09のDALL-E統合
  • RAG実装: レッスン15の完全なRAGパイプライン

チュートリアル・ガイド

  • 各レッスンの動画チュートリアル
  • Jupyter Notebookによるインタラクティブな学習
  • "Keep Learning"セクションでの追加リソース
  • Azure AI Foundry Discordサーバーでのコミュニティサポート

技術的詳細

アーキテクチャ

全体構造

このカリキュラムはモジュラー設計を採用し、各レッスンが独立した学習ユニットとして機能します。Learnレッスンで概念を理解し、Buildレッスンで実装を学ぶアプローチを採用しています。

ディレクトリ構成

generative-ai-for-beginners/
├── 00-course-setup/      # 環境セットアップ
├── 01-introduction-to-genai/  # 生成AIの基礎
├── 02-exploring-and-comparing-different-llms/  # LLMの比較
├── ...〈レッスン03-21〉...
│   ├── README.md        # レッスンの説明
│   ├── images/          # ビジュアルコンテンツ
│   ├── python/          # Pythonサンプルコード
│   ├── typescript/      # TypeScriptサンプル
│   └── dotnet/          # .NETサンプル(一部)
├── images/               # 共通画像リソース
├── translations/         # 40+言語の翻訳
└── docs/                 # Docsify設定

主要コンポーネント

  • レッスンモジュール: 各トピックの独立した学習ユニット

    • 場所: [01-21]-[topic-name]/
    • 内容: README、コードサンプル、ノートブック
    • 依存: APIプロバイダー(Azure OpenAI/OpenAI/GitHub Models)
  • コードサンプル: 実用的なアプリケーション例

    • Python: .pyファイルとJupyter Notebook
    • TypeScript: プロジェクト構造での実装
    • 共通: API抽象化、エラーハンドリング
  • 翻訳システム: GitHub Actionsによる自動翻訳

    • 場所: translations/[language-code]/
    • 更新: メインブランチの変更に同期

技術スタック

コア技術

  • 言語:
    • Python 3.10+: メインの実装言語
    • TypeScript/JavaScript: Webアプリケーション向け
    • .NET/C#: 別リポジトリで提供
  • LLM API:
    • OpenAI API (GPT-4, GPT-3.5)
    • Azure OpenAI Service
    • GitHub Model Catalog
    • Hugging Face Models
  • 主要ライブラリ:
    • openai (^4.103.0): OpenAI Python SDK
    • @azure-rest/ai-inference: Azure AIクライアント
    • langchain: RAGとエージェント構築(一部レッスン)
    • transformers: Hugging Faceモデル利用
    • faiss/chromadb: ベクトルデータベース

開発・運用ツール

  • 開発環境:
    • Jupyter Notebook: インタラクティブ学習
    • VS Code: 推奨IDE
    • GitHub Codespaces: クラウド開発環境
  • パッケージ管理:
    • Python: pip/requirements.txt
    • TypeScript: npm/package.json
  • CI/CD:
    • GitHub Actions: 翻訶自動化
    • Docsify: ドキュメントサイト生成
  • バージョン管理: Git/GitHub

設計パターン・手法

  • プログレッシブラーニング: 基礎から高度な概念への段階的学習
  • マルチランゲージサポート: PythonとTypeScriptで同一概念を実装
  • プロバイダー抽象化: 複数のLLMプロバイダーに対応する設計
  • 実践的なアプローチ: 理論と実装のバランス
  • エラーハンドリング: API失敗時の適切な処理

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

典型的な生成AIアプリケーションフロー

  1. 入力処理: ユーザー入力の受け取りと前処理
  2. プロンプト構築: システムプロンプトとユーザープロンプトの組み合わせ
  3. API呼び出し: LLM APIへのリクエスト
  4. レスポンス処理: 結果のパースとエラーハンドリング
  5. 後処理: フォーマット調整、検証
  6. 出力: ユーザーへの結果表示

RAGパターンのフロー

  1. ドキュメント取得: ソースデータの読み込み
  2. チャンキング: テキストの分割
  3. 埋め込み生成: テキストをベクトル化
  4. ベクトルDB保存: 検索用インデックス作成
  5. クエリ処理: ユーザー質問の埋め込み
  6. 類似検索: 関連チャンクの取得
  7. コンテキスト構築: 検索結果をプロンプトに統合
  8. 回答生成: LLMによる最終回答

API・インターフェース

公開API

OpenAI/Azure OpenAI API統合

  • 目的: 複数のLLMプロバイダーに対応
  • 使用例:
# OpenAI APIの場合
from openai import OpenAI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# Azure OpenAIの場合
from openai import AzureOpenAI
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version="2024-02-01",
    azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
)

# 共通のAPI呼び出し
response = client.chat.completions.create(
    model="gpt-4",
    messages=messages,
    temperature=0.7
)

設定・カスタマイズ

環境変数設定

# .envファイル
# OpenAIの場合
OPENAI_API_KEY=sk-...

# Azure OpenAIの場合
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_OPENAI_API_KEY=your-key
AZURE_OPENAI_DEPLOYMENT_NAME=your-deployment

# GitHub Modelsの場合
GITHUB_TOKEN=ghp_...

拡張・カスタマイズ

  • 新しいレッスンの追加: テンプレート構造に従って作成
  • 新しいプロバイダー対応: APIラッパーの実装
  • サンプルコードの追加: 各レッスンのpython/typescriptディレクトリへ
  • 翻訳の貢献: translations/ディレクトリへのPR

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

パフォーマンス特性

  • レスポンス時間: LLM APIのレイテンシに依存(数秒程度)
  • コスト効率: トークン数の最適化とキャッシング
  • 最適化手法:
    • プロンプトエンジニアリングによるトークン削減
    • ストリーミングレスポンスの活用
    • Function Callingによる効率的なデータ取得

スケーラビリティ

  • 水平スケーリング: APIキーの追加で簡単にスケール
  • ロードバランシング: 複数のLLMプロバイダー間での分散
  • キャッシュ戦略: 一般的なクエリの結果キャッシュ
  • 非同期処理: Python asyncio、TypeScript Promiseの活用

制限事項

  • APIレート制限(プロバイダーごとに異なる)
  • コンテキストウィンドウサイズ(モデルによる)
  • コスト(商用利用時の考慮が必要)
  • データプライバシーとセキュリティの考慮
  • モデルの出力の一貫性(temperature設定による)

評価・所感

技術的評価

強み

  • 包括性: 生成AIの全スペクトラムをカバーする唯一無二のカリキュラム
  • 実用性: 実際に動作するコードとアプリケーション例
  • アクセシビリティ: 初心者から上級者まで対応する段階的構成
  • 信頼性: Microsoftの公式プロジェクトとしての品質保証
  • 多言語対応: 40以上の言語でグローバルにアクセス可能
  • コミュニティ: 活発なコントリビューションとサポート

改善の余地

  • 一部のレッスンのビデオコンテンツが未完成
  • エンタープライズ向けの認証・認定プログラムの欠如
  • パフォーマンスチューニングや本番環境デプロイの詳細が不足
  • テストコードやベストプラクティスの追加

向いている用途

  • 生成AI技術の体系的な学習
  • プロトタイプアプリケーションの開発
  • チーム内での技術教育・トレーニング
  • ハッカソンやワークショップの教材
  • AIアプリケーション開発のリファレンス

向いていない用途

  • 大規模な本番環境でのそのままの利用
  • 特定の業界・ドメインに特化したソリューション
  • リアルタイム・ミッションクリティカルなシステム
  • 最適化されたプロダクションコードとしての利用

総評

microsoft/generative-ai-for-beginnersは、生成AI教育のゴールドスタンダードと言えるプロジェクトです。9万以上のスターを獲得していることからも、その価値の高さが明らかです。

特に秀逸な点は、単なるコンセプトの説明に留まらず、実際に動作するアプリケーションを構築しながら学べる点です。プロンプトエンジニアリングからRAG、AIエージェント、ファインチューニングまで、現代の生成AI開発に必要な全てのトピックが網羅されています。

また、Microsoftの公式プロジェクトとして継続的にアップデートされ、最新の技術トレンド(SLM、Mistral、Metaモデルなど)が常に追加されている点も大きな魅力です。多言語対応と活発なコミュニティにより、世界中の開発者がアクセスできる真のグローバルリソースとなっています。

一方で、これはあくまで教育用リソースであり、プロダクションレディなコードではないことに留意が必要です。実際のプロジェクトでは、エラーハンドリング、パフォーマンス最適化、セキュリティ強化などが追加で必要になります。

総じて、生成AI開発を始めるための最適な出発点であり、この分野の標準教材としての地位を確立しています。