openai/openai-cookbook

⭐ undefined 🍴 0 Jupyter Notebook (Python)📄 MIT License GitHubで見る →

主な特徴

  • **包括的なコード例**: 100以上のJupyter Notebookで様々なユースケースをカバー
  • **最新モデル対応**: GPT-5、o-series、gpt-ossなど最新モデルのガイドを含む
  • **実践的なチュートリアル**: 初心者から上級者まで対応する段階的な学習コンテンツ
  • **マルチモーダル対応**: テキスト、画像、音声、動画の処理例
  • **ベクトルデータベース統合**: 20以上の主要ベクトルDBとの統合例
  • **エンタープライズ統合**: Azure、AWS、GCP、Databricksなどの統合ガイド
  • **コミュニティ駆動**: OpenAIスタッフとコミュニティの貢献者による維持
  • **オープンソース**: MITライセンスで自由に利用可能

リポジトリ解析: openai/openai-cookbook

基本情報

  • リポジトリ名: openai/openai-cookbook
  • 主要言語: Jupyter Notebook (Python)
  • スター数: GitHub Trendingにランクイン
  • フォーク数: 多数のフォークされたプロジェクト
  • 最終更新: 2025年活発に更新中
  • ライセンス: MIT License
  • トピックス: OpenAI API, AI/ML, チュートリアル, コード例, LLM, エンベディング, ファインチューニング

概要

一言で言うと

OpenAI APIを使用して一般的なタスクを達成するための実用的なコード例とガイドを提供する、OpenAI公式の包括的なリソース集です。

詳細説明

OpenAI Cookbookは、OpenAIが管理する公式リポジトリで、開発者がOpenAI APIを効果的に活用できるように設計されています。主にPythonで書かれたJupyter Notebook形式の例を中心に、実践的なコードサンプル、詳細な解説、ベストプラクティスが提供されています。

このリポジトリは、AIアプリケーション開発の実践的なガイドとして機能し、エンベディング、ファインチューニング、関数呼び出し、エージェント構築、RAG(Retrieval-Augmented Generation)など、幅広いトピックをカバーしています。また、最新のOpenAIモデル(GPT-5、gpt-ossなど)に対応した内容も含まれており、常に最前線の技術情報が提供されています。

主な特徴

  • 包括的なコード例: 100以上のJupyter Notebookで様々なユースケースをカバー
  • 最新モデル対応: GPT-5、o-series、gpt-ossなど最新モデルのガイドを含む
  • 実践的なチュートリアル: 初心者から上級者まで対応する段階的な学習コンテンツ
  • マルチモーダル対応: テキスト、画像、音声、動画の処理例
  • ベクトルデータベース統合: 20以上の主要ベクトルDBとの統合例
  • エンタープライズ統合: Azure、AWS、GCP、Databricksなどの統合ガイド
  • コミュニティ駆動: OpenAIスタッフとコミュニティの貢献者による維持
  • オープンソース: MITライセンスで自由に利用可能

使用方法

インストール

前提条件

  • Python 3.8+
  • OpenAIアカウントとAPIキー
  • Jupyter NotebookまたはJupyterLab(Notebook実行用)
  • Git(リポジトリクローン用)

インストール手順

# リポジトリのクローン
git clone https://github.com/openai/openai-cookbook.git
cd openai-cookbook

# Python仮想環境の作成(推奨)
python -m venv venv
source venv/bin/activate  # Windowsの場合: venv\Scripts\activate

# 必要なライブラリのインストール
pip install openai jupyter ipykernel python-dotenv

# APIキーの設定
# .envファイルを作成してOPENAI_API_KEYを設定
echo "OPENAI_API_KEY=your-api-key-here" > .env

# Jupyter Notebookの起動
jupyter notebook

基本的な使い方

Hello World相当の例

from openai import OpenAI
import os
from dotenv import load_dotenv

# .envファイルからAPIキーを読み込み
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# シンプルなチャット完了
response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "Hello, World!"}
    ]
)

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

実践的な使用例(エンベディングを使った検索)

# examples/Semantic_text_search_using_embeddings.ipynbより
from openai import OpenAI
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

client = OpenAI()

# テキストのエンベディングを取得
def get_embedding(text, model="text-embedding-3-small"):
    return client.embeddings.create(input=[text], model=model).data[0].embedding

# ドキュメントのエンベディングを取得
documents = [
    "OpenAIはAI研究会社です",
    "GPT-4は大規模言語モデルです",
    "Pythonはプログラミング言語です"
]
doc_embeddings = [get_embedding(doc) for doc in documents]

# クエリのエンベディングを取得して検索
query = "AIモデルについて教えて"
query_embedding = get_embedding(query)

# コサイン類似度で最も関連するドキュメントを找す
similarities = cosine_similarity([query_embedding], doc_embeddings)[0]
best_match_idx = np.argmax(similarities)

print(f"最も関連するドキュメント: {documents[best_match_idx]}")

高度な使い方(エージェントとMCP統合)

# examples/mcp/databricks_mcp_cookbook.ipynbより
from openai import OpenAI
import json

# MCP(Model Context Protocol)サーバーと連携するエージェント
class DataAnalysisAgent:
    def __init__(self, client, mcp_server):
        self.client = client
        self.mcp_server = mcp_server
        
    async def analyze_data(self, query):
        # MCPサーバーから利用可能なツールを取得
        tools = await self.mcp_server.get_available_tools()
        
        # LLMにツール使用を含めたリクエスト
        response = self.client.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "user", "content": query}],
            tools=tools,
            tool_choice="auto"
        )
        
        # ツール呼び出しの実行
        if response.choices[0].message.tool_calls:
            for tool_call in response.choices[0].message.tool_calls:
                result = await self.mcp_server.execute_tool(
                    tool_call.function.name,
                    json.loads(tool_call.function.arguments)
                )
                # 結果をLLMにフィードバック
                
        return response

ドキュメント・リソース

公式ドキュメント

  • README.md: プロジェクト概要、基本的なセットアップ手順
  • cookbook.openai.com: Webサイトでのナビゲーションと検索機能
  • registry.yaml: 全コンテンツのメタデータとタグ管理
  • authors.yaml: 貢献者情報とプロフィール

サンプル・デモ

  • examples/基礎: エンベディング、分類、チャット完了の基本例
  • examples/agents_sdk/: エージェント構築、マルチエージェントシステム
  • examples/gpt-5/: GPT-5用プロンプトガイドと最適化
  • examples/mcp/: Model Context Protocol統合例
  • examples/dalle/: 画像生成、編集、マスク作成
  • examples/vector_databases/: 20+のベクトルDB統合例

チュートリアル・ガイド

  • 初級者向け: How_to_format_inputs_to_ChatGPT_models.ipynb
  • エンベディング入門: Using_embeddings.ipynb
  • ファインチューニング: How_to_finetune_chat_models.ipynb
  • 関数呼び出し: How_to_call_functions_with_chat_models.ipynb
  • RAG構築: Question_answering_using_embeddings.ipynb
  • エージェント開発: How_to_build_an_agent_with_the_node_sdk.mdx

技術的詳細

アーキテクチャ

全体構造

OpenAI Cookbookは、モジュール式のコンテンツ構造を採用しており、各ノートブックが独立した学習ユニットとして機能します。コンテンツはYAMLファイルで管理され、Webサイトでのナビゲーションと検索を容易にしています。

ディレクトリ構成

openai-cookbook/
├── examples/              # メインコンテンツ(Jupyter Notebook)
│   ├── agents_sdk/       # エージェント開発キット
│   ├── azure/            # Azure統合例
│   ├── chatgpt/          # ChatGPTカスタマイズ、GPT Actions
│   ├── dalle/            # 画像生成・編集
│   ├── evaluation/       # 評価・ベンチマーク
│   ├── fine-tuned_qa/    # ファインチューニング例
│   ├── gpt-5/            # GPT-5特有機能
│   ├── mcp/              # Model Context Protocol
│   ├── multimodal/       # マルチモーダル処理
│   ├── o-series/         # o3/o4モデルガイド
│   ├── vector_databases/ # ベクトルDB統合
│   └── voice_solutions/  # 音声処理・リアルタイムAPI
├── articles/             # 概念説明、ガイド記事
│   └── gpt-oss/         # オープンソースモデル関連
├── images/               # ドキュメント用画像
├── registry.yaml         # コンテンツメタデータ
└── authors.yaml          # 貢献者情報

主要コンポーネント

  • examples/基礎ノートブック: OpenAI APIの基本的な使用方法

    • 場所: examples/How_to_*.ipynb
    • 依存: openai Python SDK
    • インターフェース: chat.completions, embeddings, moderation等
  • agents_sdkコンポーネント: エージェント構築用フレームワーク

    • 場所: examples/agents_sdk/
    • 依存: openai SDK, asyncio, MCPサーバー
    • インターフェース: マルチエージェントオーケストレーション
  • ベクトルDBアダプター: 各種ベクトルDBとの統合

    • 場所: examples/vector_databases/
    • 依存: 各DBのPython SDK
    • インターフェース: 統一されたエンベディング検索パターン

技術スタック

コア技術

  • 言語: Python 3.8+ (主要言語), JavaScript/TypeScript (Node.js SDK例)
  • フレームワーク:
    • Jupyter Notebook: インタラクティブな学習環境
    • LangChain: エージェント構築例
    • FastAPI: APIサーバー例
  • 主要ライブラリ:
    • openai (latest): OpenAI公式Python SDK
    • numpy/pandas: データ処理
    • scikit-learn: 機械学習ユーティリティ
    • tiktoken: トークンカウント
    • matplotlib/plotly: 可視化
    • asyncio: 非同期処理

開発・運用ツール

  • ビルドツール:
    • Jupyter Notebook: インタラクティブ実行環境
    • Python venv/conda: 仮想環境管理
    • GitHub Actions: 自動ビルドとテスト
  • テスト:
    • pytest: Pythonテストフレームワーク
    • サンプルデータ: 各例にテストデータ付属
  • CI/CD:
    • GitHub Actions: PRチェック、コード品質検証
    • 自動デプロイ: cookbook.openai.comへの自動更新
  • デプロイ:
    • GitHub Pages/Vercel: Webサイトホスティング
    • Static Site Generation: YAMLからサイト生成

設計パターン・手法

  • チェインオブリスポンシビリティ: LLM呼び出しの連鎖化
  • RAGパターン: エンベディングを使った情報検索と生成
  • エージェンティックパターン: ツール使用を伴う自律的な処理
  • プロンプトエンジニアリング: Few-shot、CoT、メタプロンプティング
  • ストリーミングパターン: リアルタイムレスポンス処理
  • 評価フレームワーク: LLM as a Judgeパターン

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

  1. 入力処理:

    • ユーザー入力(テキスト、画像、音声)
    • 前処理(トークナイゼーション、フォーマット変換)
  2. コンテキスト拡張:

    • エンベディング検索
    • 関連ドキュメント取得
    • プロンプトテンプレート適用
  3. LLM呼び出し:

    • APIリクエスト構築
    • モデル選択(タスクに応じた最適モデル)
    • パラメータ調整
  4. 出力処理:

    • ストリーミングまたはバッチ処理
    • 構造化出力(JSON、関数呼び出し)
    • 後処理と検証
  5. フィードバックループ:

    • 結果評価
    • プロンプト/パラメータ最適化
    • エラーハンドリングと再試行

API・インターフェース

公開API

Chat Completions API

  • 目的: テキスト生成、会話、コード生成
  • 使用例:
from openai import OpenAI
client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello"}],
    temperature=0.7,
    max_tokens=100
)

Embeddings API

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

設定・カスタマイズ

設定ファイル

# .envファイル
OPENAI_API_KEY=sk-...
OPENAI_ORG_ID=org-...
OPENAI_API_BASE=https://api.openai.com/v1  # カスタムエンドポイント

# 設定例
from openai import OpenAI
client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),
    organization=os.getenv("OPENAI_ORG_ID"),
    max_retries=3,
    timeout=60.0
)

拡張・プラグイン開発

カスタム関数の定義:

# カスタムツール/関数の定義
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {"type": "string"},
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
                },
                "required": ["location"]
            }
        }
    }
]

GPT Actions開発:

  • ChatGPTカスタムGPTへの統合
  • OpenAPI仕様に準拠したAPI定義
  • OAuth、APIキー認証のサポート

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

パフォーマンス特性

  • レート制限対策: バッチ処理、リトライ機構、指数バックオフ
  • 並列処理: api_request_parallel_processor.pyによる大量リクエスト処理
  • キャッシング: エンベディングキャッシュ、プロンプトキャッシング
  • ストリーミング: リアルタイムレスポンスでUX向上

スケーラビリティ

  • バッチAPI: 大量リクエストの非同期処理
  • ベクトルDB統合: 分散インデックスによる大規模検索
  • マルチエージェント: 複数エージェントの並列実行
  • モデル選択: タスクに応じた最適モデルの自動選択

制限事項

  • 技術的な制限:
    • APIレート制限(TPM/RPM)
    • コンテキストウィンドウ制限
    • モデルごとの最大トークン数
  • 運用上の制限:
    • APIキーの管理とセキュリティ
    • コスト最適化の必要性
    • モデルの更新への対応

評価・所感

技術的評価

強み

  • 公式リソース: OpenAIが直接管理する信頼性の高いコンテンツ
  • 包括的なカバレッジ: 初級から上級まで幅広いトピック
  • 実動コード: すべての例が実際に動作するJupyter Notebook
  • 最新技術の反映: 新モデルや機能の迅速な追加
  • コミュニティの貢献: 多様な貢献者による豊富な例
  • ベストプラクティス: 実践的なテクニックとパターン

改善の余地

  • 統一的な構成: ノートブック間でのスタイルの一貫性
  • 体系的な学習パス: 初心者向けの明確な学習順序
  • エラーハンドリング: より詳細なエラー対処法
  • パフォーマンス最適化: コスト効率の詳細なガイド

向いている用途

  • AIアプリケーション開発: 実践的なコード例で迅速な開発
  • 学習・教育: OpenAI APIの学習教材として
  • プロトタイピング: アイデアの迅速な検証
  • エンタープライズ統合: 企業システムへのAI導入
  • 研究・実験: 最新技術の試行と評価

向いていない用途

  • 完全なプロダクトコード: そのまま本番環境で使うには追加実装が必要
  • 非Python環境: Python以外の言語での実装例が限定的
  • オフライン学習: オンライン接続が前提
  • 独立したアプリケーション: サンプルコードのため追加開発が必要

総評

OpenAI Cookbookは、OpenAI APIを使用したAIアプリケーション開発のデファクトスタンダードと言える優れたリソースです。OpenAIが直接管理していることで、常に最新の機能やベストプラクティスが反映され、信頼性の高い情報源となっています。

特に優れているのは、実践的なコード例の豊富さです。エンベディング、ファインチューニング、関数呼び出し、エージェント構築、RAGなど、現代のAIアプリケーション開発に必要なあらゆるトピックがカバーされています。また、GPT-5やgpt-ossなどの最新モデルにも迅速に対応しており、最前線の技術を学べる点も魅力です。

Jupyter Notebook形式を採用していることで、コードと説明が一体化し、学習者が実際にコードを実行しながら理解を深められる点も優れています。コミュニティの貢献も活発で、様々な観点からの実装例が提供されています。

ただし、コンテンツの量が膨大であるため、初心者にとってはどこから始めるべきか迷う可能性があります。また、実際のプロダクト開発には、エラーハンドリング、セキュリティ、スケーラビリティなどの追加考慮が必要です。

総じて、OpenAI APIを使ったAIアプリケーション開発を始める際の最初のリファレンスとして、また継続的な学習リソースとして、非常に価値の高いリポジトリです。