openai/openai-cookbook
主な特徴
- **包括的なコード例**: 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パターン
データフロー・処理フロー
-
入力処理:
- ユーザー入力(テキスト、画像、音声)
- 前処理(トークナイゼーション、フォーマット変換)
-
コンテキスト拡張:
- エンベディング検索
- 関連ドキュメント取得
- プロンプトテンプレート適用
-
LLM呼び出し:
- APIリクエスト構築
- モデル選択(タスクに応じた最適モデル)
- パラメータ調整
-
出力処理:
- ストリーミングまたはバッチ処理
- 構造化出力(JSON、関数呼び出し)
- 後処理と検証
-
フィードバックループ:
- 結果評価
- プロンプト/パラメータ最適化
- エラーハンドリングと再試行
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アプリケーション開発を始める際の最初のリファレンスとして、また継続的な学習リソースとして、非常に価値の高いリポジトリです。