本ドキュメントは、OpenAI APIの概要と使用方法を日本語でまとめたものです。
OpenAI APIは、大規模言語モデル(LLM)を使用してプロンプトからテキストを生成するサービスです。ChatGPTと同様の機能をAPIとして提供しており、コード、数式、JSON形式のデータ、自然な文章など、様々な形式のテキストを生成できます。
- テキスト生成: プロンプトに基づいてテキストを生成
- 構造化出力: JSON形式での出力(Structured Outputs)
- 関数呼び出し: ツール連携のための関数呼び出し機能
- ストリーミング: リアルタイムでの応答取得
OpenAI APIでは複数のモデルタイプが提供されています。
内部で思考の連鎖を生成し、複雑なタスクやマルチステップの計画に優れています。GPTモデルと比較して処理が遅く、コストが高い傾向があります。
高速で費用対効果が高く、高い知性を持ちますが、タスクの達成方法について明示的な指示が必要です。
大規模モデルはプロンプトの理解と問題解決に優れ、小規模モデル(miniやnano)は高速で低コストです。
迷った場合は、gpt-4.1が知性、速度、コスト効率のバランスが取れているため推奨されます。
プロンプトエンジニアリングとは、モデルに対して効果的な指示を書くプロセスです。要求に合ったコンテンツを一貫して生成させるために重要な技術です。
- 特定のモデルスナップショット(例:gpt-4.1-2025-04-14)を固定して一貫した動作を確保する
- プロンプトの性能を測定するための評価(evals)を構築する
一般的に、developerメッセージには以下のセクションを含めます:
- Identity(アイデンティティ): アシスタントの目的、コミュニケーションスタイル、高レベルの目標を記述
- Instructions(指示): 応答生成に関するガイダンス、従うべきルール
- Examples(例): 入力例と期待される出力例
- Context(コンテキスト): 応答生成に必要な追加情報
OpenAI APIでは、異なる権限レベルを持つメッセージロールが提供されています。
アプリケーション開発者からの指示です。userメッセージよりも優先されます。
エンドユーザーからの指示です。developerメッセージの後に優先されます。
モデルによって生成されたメッセージです。
instructionsパラメータを使用すると、モデルに高レベルの指示を提供できます。inputパラメータのプロンプトよりも優先されます。
モデルは生成リクエスト中に考慮できるデータ量に制限があります。このメモリ制限をコンテキストウィンドウと呼び、トークン単位で定義されます。
モデルによってコンテキストウィンドウサイズが異なります。新しいGPT-4.1モデルは最大100万トークンのコンテキストウィンドウを持ちます。具体的なサイズは各モデルのドキュメントを参照してください。
GPT-4.1などのGPTモデルは、タスク完了に必要なロジックとデータを明示的に提供する正確な指示から恩恵を受けます。
エージェントの機能を最大限に活用するため、以下の3種類のリマインダーをプロンプトに含めることを推奨します:
ユーザーのクエリが完全に解決されるまで処理を継続し、問題が解決したと確信できるまでターンを終了しないよう指示します。
ファイル内容やコードベース構造について不明な場合は、推測せずにツールを使用して情報を収集するよう指示します。
各関数呼び出しの前に広範な計画を立て、前回の関数呼び出しの結果について広範に振り返るよう指示します。
GPT-4.1は100万トークンの入力コンテキストウィンドウを持ち、構造化されたドキュメント解析、関連情報の選択、マルチホップ推論などの長いコンテキストタスクに有用です。
コンテキストを区切るためにXMLタグや特定のフォーマットを使用することで、性能が向上します。JSONは長いコンテキストタスクでは性能が低下する傾向があります。
長いコンテキストの使用では、重要な指示をプロンプトの上部と下部の両方に配置することが最適です。
推論モデルはGPTモデルとは異なり、高レベルのガイダンスのみでより良い結果を生成します。
シニアの同僚のように、目標を与えれば詳細を自分で解決できます。
ジュニアの同僚のように、特定の出力を作成するための明示的な指示が最も効果的です。
テキスト生成の主要なAPIエンドポイントです。
- model: 使用するモデル(必須)
- input: 入力プロンプトまたはメッセージ(必須)
- instructions: 高レベルの指示(オプション)
- max_tokens: 最大トークン数(オプション)
チャット形式での会話を継続するためのAPIです。
- model: 使用するモデル(必須)
- messages: メッセージのリスト(必須)
- functions: 関数定義(オプション、関数呼び出し用)
- function_call: 関数呼び出しの制御(オプション)
本プロジェクトのOpenAIClientクラスでは、Chat Completions APIを使用してLLMとの対話を行います。
config.yamlのllm.openaiセクションで以下を設定します:
- api_key: OpenAI APIキー(環境変数OPENAI_API_KEYを推奨)
- base_url: APIベースURL
- model: 使用するモデル
- max_token: 最大トークン数
- context_length: コンテキスト長
参照元: OpenAI公式ドキュメント(https://platform.openai.com/docs)