microsoft/generative-ai-for-beginners

⭐ 90,316 🍴 46,256 Jupyter Notebook📄 MIT License GitHubで見る →

主な特徴

  • 21の包括的なレッスンで構成された体系的なカリキュラム
  • PythonとTypeScriptの両方でのコード例提供
  • Azure OpenAI、OpenAI API、GitHub Model Catalogをサポート
  • 各レッスンにビデオ、ドキュメント、実践的な課題を含む
  • 41言語への自動翻訳対応(GitHub Actionによる)
  • 開発コンテナ(devcontainer)による環境構築の簡素化
  • 豊富なサンプルコードと実践的なプロジェクト
  • 責任あるAI開発の原則を含む包括的な内容

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

基本情報

  • リポジトリ名: microsoft/generative-ai-for-beginners
  • 主要言語: Jupyter Notebook
  • スター数: 90,316
  • フォーク数: 46,256
  • 最終更新: アクティブにメンテナンス中
  • ライセンス: MIT License
  • トピックス: generative ai, curriculum, LLM, education, beginners, Azure OpenAI, OpenAI, Python, TypeScript

概要

一言で言うと

Microsoftが提供する、生成AIアプリケーション構築の基礎を学ぶための包括的な21レッスンの教育カリキュラム。

詳細説明

このリポジトリは、生成AI(Generative AI)の初心者向けに設計された、体系的な学習カリキュラムです。MicrosoftのCloud Advocatesチームによって開発され、LLM(大規模言語モデル)の基礎から実践的なアプリケーション開発まで、段階的に学習できるように構成されています。各レッスンは「Learn」(概念説明)と「Build」(実装例)に分かれており、PythonとTypeScriptの両方でコード例が提供されています。

主な特徴

  • 21の包括的なレッスンで構成された体系的なカリキュラム
  • PythonとTypeScriptの両方でのコード例提供
  • Azure OpenAI、OpenAI API、GitHub Model Catalogをサポート
  • 各レッスンにビデオ、ドキュメント、実践的な課題を含む
  • 41言語への自動翻訳対応(GitHub Actionによる)
  • 開発コンテナ(devcontainer)による環境構築の簡素化
  • 豊富なサンプルコードと実践的なプロジェクト
  • 責任あるAI開発の原則を含む包括的な内容

使用方法

インストール

前提条件

  • Python 3.8以上またはNode.js(TypeScriptの場合)
  • GitHubアカウント(リポジトリのフォーク用)
  • 以下のいずれかのAIサービスアカウント:
    • Azure OpenAI Service
    • OpenAI API
    • GitHub Model Catalog
  • VS Code(推奨)
  • Docker Desktop(ローカル開発環境の場合)またはGitHub Codespaces

インストール手順

# 方法1: GitHub Codespacesを使用(推奨)
# 1. GitHubでリポジトリをフォーク
# 2. "Code" → "Create codespace on main"をクリック

# 方法2: ローカル環境でのセットアップ
# リポジトリのクローン
git clone https://github.com/microsoft/generative-ai-for-beginners.git
cd generative-ai-for-beginners

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

# Node.js依存関係のインストール(TypeScriptの場合)
npm install

基本的な使い方

Hello World相当の例

# Azure OpenAIを使用した最小限のテキスト生成
from openai import AzureOpenAI
import os
from dotenv import load_dotenv

load_dotenv()

client = AzureOpenAI(
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_key=os.environ['AZURE_OPENAI_API_KEY'],
    api_version="2024-02-01"
)

prompt = "Complete the following: Once upon a time there was a"
messages = [{"role": "user", "content": prompt}]
completion = client.chat.completions.create(
    model=os.environ['AZURE_OPENAI_DEPLOYMENT'],
    messages=messages
)

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

実践的な使用例

# レシピ生成アプリケーション(06-text-generation-apps/python/aoai-app-recipe.py)
import os
import asyncio
from dotenv import load_dotenv
from openai import AsyncAzureOpenAI

load_dotenv()

client = AsyncAzureOpenAI(
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_key=os.environ["AZURE_OPENAI_API_KEY"],
    api_version="2024-02-01"
)

async def create_recipe(ingredients):
    messages = [
        {"role": "system", "content": "You are a helpful assistant that creates recipes."},
        {"role": "user", "content": f"Create a recipe using these ingredients: {ingredients}"}
    ]
    
    response = await client.chat.completions.create(
        model=os.environ["AZURE_OPENAI_DEPLOYMENT"],
        messages=messages,
        temperature=0.7,
        max_tokens=500
    )
    
    return response.choices[0].message.content

# 使用例
ingredients = "chicken, rice, bell peppers, onions"
recipe = await create_recipe(ingredients)
print(recipe)

高度な使い方

# RAG(Retrieval Augmented Generation)の実装例
# 15-rag-and-vector-databases から
import os
from openai import AzureOpenAI
from azure.search.documents import SearchClient
from azure.core.credentials import AzureKeyCredential

# ベクトル検索とLLMを組み合わせたRAGシステム
def rag_search_and_generate(query, search_client, openai_client):
    # 1. ベクトル検索で関連ドキュメントを取得
    search_results = search_client.search(
        search_text=query,
        include_total_count=True,
        top=3
    )
    
    # 2. 検索結果をコンテキストとして整形
    context = "\n".join([doc['content'] for doc in search_results])
    
    # 3. LLMにコンテキストと質問を渡して回答生成
    messages = [
        {"role": "system", "content": "Answer questions based on the provided context."},
        {"role": "user", "content": f"Context: {context}\n\nQuestion: {query}"}
    ]
    
    completion = openai_client.chat.completions.create(
        model=os.environ['AZURE_OPENAI_DEPLOYMENT'],
        messages=messages,
        temperature=0.3
    )
    
    return completion.choices[0].message.content

ドキュメント・リソース

公式ドキュメント

サンプル・デモ

  • 06-text-generation-apps: テキスト生成アプリケーション(レシピ生成、歴史ボット、学習アシスタント)
  • 07-building-chat-applications: チャットボットの実装例
  • 08-building-search-applications: ベクトル検索とエンベディングの実装
  • 09-building-image-applications: 画像生成アプリケーション
  • 15-rag-and-vector-databases: RAGシステムの実装例

チュートリアル・ガイド

  • 各レッスンに含まれるビデオチュートリアル
  • Jupyter Notebookによるインタラクティブな学習環境
  • 「Keep Learning」セクションでの追加学習リソース
  • Discord サーバーでのコミュニティサポート
  • Azure AI Foundry Developer Forumでの技術サポート

技術的詳細

アーキテクチャ

全体構造

教育的なモジュール構造を採用し、各レッスンが独立したディレクトリとして構成されています。プログレッシブな学習パスを提供し、基礎概念から高度な実装まで段階的に学習できる設計です。

ディレクトリ構成

generative-ai-for-beginners/
├── 00-course-setup/          # 環境セットアップガイド
├── 01-introduction-to-genai/ # 生成AI入門
├── 02-exploring-and-comparing-different-llms/ # LLMの比較
├── 03-using-generative-ai-responsibly/ # 責任あるAI利用
├── 04-prompt-engineering-fundamentals/ # プロンプトエンジニアリング基礎
├── 05-advanced-prompts/      # 高度なプロンプト技術
├── 06-text-generation-apps/  # テキスト生成アプリ
│   ├── python/              # Pythonの実装例
│   ├── typescript/          # TypeScriptの実装例
│   └── dotnet/             # .NETの実装例
├── 07-building-chat-applications/ # チャットアプリ構築
├── 08-building-search-applications/ # 検索アプリ構築
├── 15-rag-and-vector-databases/ # RAGとベクトルDB
├── 16-open-source-models/    # オープンソースモデル
├── 17-ai-agents/            # AIエージェント
├── 18-fine-tuning/          # ファインチューニング
├── images/                  # 画像リソース
├── translations/            # 多言語翻訳(41言語)
└── .devcontainer/          # 開発コンテナ設定

主要コンポーネント

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

    • 場所: [番号]-[レッスン名]/
    • 構成: README.md、コード例、課題
    • 対応言語: Python、TypeScript、.NET
  • 開発環境設定: devcontainerによる統一環境

    • 場所: .devcontainer/
    • 機能: Python、Node.js、.NET、Javaをサポート
    • 統合: GitHub Codespaces、Docker Desktop対応

技術スタック

コア技術

  • 言語:

    • Python 3.8+: 主要な実装言語、Jupyter Notebook対応
    • TypeScript/JavaScript: Node.js環境での実装
    • C#/.NET: .NET開発者向けの実装(別リポジトリ)
  • AIサービス統合:

    • Azure OpenAI Service: エンタープライズ向けOpenAIモデル
    • OpenAI API: 直接的なOpenAI統合
    • GitHub Model Catalog: GitHubが提供するモデルカタログ
    • Hugging Face: オープンソースモデルの利用
  • 主要ライブラリ:

    • openai (>=0.28.0): OpenAI/Azure OpenAI APIクライアント
    • azure-ai-inference: Azure AI推論ライブラリ
    • tiktoken: トークンカウント用ライブラリ
    • python-dotenv (1.0.0): 環境変数管理
    • numpy (1.24.2): 数値計算
    • pandas (1.5.3): データ処理
    • matplotlib (3.9.4): データ可視化

開発・運用ツール

  • 環境管理: Development Container (devcontainer)
  • ドキュメント: Docsifyによる静的サイト生成
  • 翻訳: GitHub Actionによる自動翻訳(41言語対応)
  • パッケージ管理: pip (Python)、npm (Node.js)
  • バージョン管理: Git/GitHub

設計パターン・手法

  • モジュラー設計: 各レッスンが独立したモジュールとして機能
  • プログレッシブ学習: 基礎から応用へ段階的に進む構造
  • マルチ言語対応: 同じ概念を複数のプログラミング言語で実装
  • 環境変数による設定管理: .envファイルでAPIキーなどを管理
  • 非同期処理: AsyncAzureOpenAIを使用した効率的な処理

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

  1. 環境設定: .envファイルからAPIキーとエンドポイントを読み込み
  2. クライアント初期化: OpenAI/Azure OpenAIクライアントの作成
  3. プロンプト構築: システムメッセージとユーザープロンプトの組み立て
  4. API呼び出し: chat.completions.createメソッドでLLMにリクエスト
  5. レスポンス処理: 生成されたテキストの取得と後処理
  6. 結果表示: ユーザーへの結果提示

API・インターフェース

公開API

OpenAI Chat Completions API

  • 目的: テキスト生成、会話、コード生成などの汎用的なLLM機能
  • 使用例:
completion = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain quantum computing"}
    ],
    temperature=0.7,
    max_tokens=500
)

Embeddings API

  • 目的: テキストのベクトル化、類似性検索
  • 使用例:
response = client.embeddings.create(
    input="Your text here",
    model="text-embedding-ada-002"
)
embedding = response.data[0].embedding

設定・カスタマイズ

設定ファイル

# .env ファイルの設定例
# OpenAI Provider
OPENAI_API_KEY='sk-...' # OpenAI APIキー

# Azure OpenAI
AZURE_OPENAI_API_VERSION='2024-02-01'
AZURE_OPENAI_API_KEY='your-key-here'
AZURE_OPENAI_ENDPOINT='https://your-resource.openai.azure.com/'
AZURE_OPENAI_DEPLOYMENT='gpt-35-turbo' # デプロイメント名
AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT='text-embedding-ada-002'

# Hugging Face
HUGGING_FACE_API_KEY='hf_...'

拡張・プラグイン開発

  • 各レッスンのコードをベースに独自の機能を追加可能
  • 提供されているベースクラスやユーティリティ関数を活用
  • 新しいAIプロバイダーの追加も環境変数の追加で対応可能

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

パフォーマンス特性

  • 非同期処理: AsyncAzureOpenAIによる並行処理対応
  • トークン管理: tiktokenによる事前のトークンカウント
  • ストリーミング対応: リアルタイムレスポンスの実装例あり

スケーラビリティ

  • APIレート制限への対応方法を学習
  • バッチ処理の実装例
  • キャッシング戦略の説明
  • 複数のAIプロバイダーへの負荷分散

制限事項

  • APIの利用にはそれぞれのプロバイダーのアカウントが必要
  • レート制限やトークン制限はプロバイダーによって異なる
  • 一部の高度な機能は特定のモデルでのみ利用可能
  • コスト管理が必要(特に大規模な利用時)

評価・所感

技術的評価

強み

  • 体系的で包括的なカリキュラム設計により、初心者でも段階的に学習可能
  • 複数のプログラミング言語とAIプロバイダーをサポート
  • 実践的なコード例が豊富で、すぐに動かして学べる
  • 開発環境のセットアップが簡単(devcontainer、Codespaces対応)
  • 41言語への自動翻訳により、グローバルなアクセシビリティ
  • Microsoftの公式リソースとしての信頼性と継続的な更新

改善の余地

  • より高度なトピック(モデルの最適化、大規模デプロイメント)のカバレッジ
  • 実運用環境でのベストプラクティスの詳細
  • コスト最適化に関するより詳しいガイダンス
  • エラーハンドリングとデバッグ手法の充実

向いている用途

  • 生成AI開発を始めたい開発者の学習
  • 企業内での生成AI技術の教育・トレーニング
  • プロトタイプ開発の参考実装
  • 大学や教育機関でのAI教育カリキュラム
  • 生成AIの概念実証(PoC)開発

向いていない用途

  • 即座にプロダクションレディなコードが必要な場合
  • 特定の業界に特化した高度なAIソリューション開発
  • 最新の研究論文レベルの先端技術の実装
  • リアルタイム・低レイテンシが要求されるシステム

総評

このリポジトリは、生成AI分野への参入を考えている開発者にとって理想的な学習リソースです。Microsoftによる品質保証と、実践的なアプローチ、包括的なカバレッジにより、基礎から応用まで体系的に学ぶことができます。特に、複数のAIプロバイダーに対応し、Python/TypeScriptの両方でコード例を提供している点は、多様な開発者のニーズに応える優れた設計です。ただし、これは教育用リソースであり、実運用システムの開発には追加の考慮事項が必要である点に注意が必要です。