OpenAIのAssistants APIにおける「Create assistant」エンドポイントでは、AIアシスタントを作成する際に様々なオプション(パラメータ)を指定できます。以下では、コード生成やデバッグ支援に焦点を当て、各オプションの役割と使い方、そして具体的なAPIリクエスト例について解説します。
model(モデル選択)オプション
オプションの説明: model
は使用するAIモデルを指定する必須パラメータです (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。ChatGPTのような対話型モデル(例: GPT-4やGPT-3.5-Turbo)を選択します。このモデルが実際にコード生成やデバッグ回答を行うエンジンになります。モデル名はOpenAIプラットフォーム上のデプロイ名やモデルIDで指定し、Azure OpenAIの場合はデプロイ名を指定します (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。
具体的な使用例: コード生成やデバッグ用途では高性能なモデルを選ぶことが重要です。例えば、複雑なバグ解析や高度なコード最適化にはGPT-4を使用し、簡単なコード補完程度であればコストを抑えるためGPT-3.5-Turboを使う選択肢もあります。それぞれのモデルには得意不得意がありますが、一般にGPT-4はより深い問題理解と正確なコード出力に優れています。一方、GPT-3.5-Turboは応答速度が速くコストが低いため、日常的なコード補完アシスタントとして有用です。例えば、Pythonコードのデバッグ支援アシスタントを作る場合、"model": "gpt-4-0613"
のようにGPT-4系モデルを指定すると、複雑なバグの原因推測や最適な修正案の提示といった高度なタスクにも対応しやすくなります。
APIリクエストのサンプル: 以下はGPT-4モデルを使用してアシスタントを作成するJSONリクエスト例です。この例では、モデルとしてgpt-4-0613
を指定し、他に基本的な設定も含めています(他のオプションについては後述)。:
POST https://api.openai.com/v1/assistants
Content-Type: application/json
{
"model": "gpt-4-0613",
"name": "CodeAssistantGPT4",
"description": "An assistant that helps with code completion and debugging.",
"instructions": "You are a helpful coding assistant...",
"tools": []
}
この例ではmodel
にGPT-4のIDを指定しています(OpenAIのAPIではモデルバージョンを指定、Azureの場合はデプロイ名を指定) (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。コード生成・デバッグ用途では適切なモデルを選ぶことで、アシスタントの能力や挙動を調整できます。
name(アシスタント名)オプション
オプションの説明: name
はアシスタントに任意の名前を付けるためのオプションです (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。最大256文字まで指定でき、主に開発者やユーザがアシスタントを区別しやすくするための識別子として使われます。アシスタントの振る舞いそのものには直接影響しません(この名前はシステムやUI上で表示・管理するためのメタ情報です)。
具体的な使用例: 複数のアシスタントを運用する場合に、それぞれの役割がわかる名前を付けると便利です。例えば、コード補完に特化したアシスタントには"name": "CodeCompleter"
、デバッグ支援に特化したものには"name": "BugFinderAssistant"
といった名前を付けることで、どのアシスタントが何を目的としているか一目で判別できます。社内ツールで複数のAIエージェント(例: コード生成用とドキュメント生成用)を使い分ける際にも、名前を設定しておけばログやリスト表示で混乱しにくくなります。
APIリクエストのサンプル: 以下はアシスタント名を設定したリクエスト例です。"name"
フィールドに「DebugHelper」という名前を与え、他の必要項目(モデルや命令など)も併せて指定しています。:
POST https://api.openai.com/v1/assistants
Content-Type: application/json
{
"model": "gpt-3.5-turbo-0613",
"name": "DebugHelper",
"description": "Assists with finding and fixing code bugs.",
"instructions": "You are an AI that helps developers debug code...",
"tools": []
}
この例ではname
に"DebugHelper"
が指定されています。アプリケーション内でこの名前を用いてアシスタントを管理したり表示したりできますが、モデルの応答内容そのものには影響しません (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。
description(説明)オプション
オプションの説明: description
はアシスタントの説明文を設定するオプションです (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。最大512文字まで指定可能で、アシスタントの目的や機能を簡潔に記述します。これもname
同様にメタ情報であり、モデルの応答生成には直接関与しませんが、アシスタント一覧の表示やドキュメント目的に役立ちます。
具体的な使用例: アシスタントの用途や特長を明記しておくことで、後から見たときにそのアシスタントの役割をすぐ理解できます。例えば、コード補完アシスタントには"description": "Helps developers by auto-completing code and suggesting improvements."
と書いておけば、何をするアシスタントか明瞭です。またデバッグ支援用なら"description": "Analyzes code for bugs and suggests fixes."
のように記述できます。この説明は開発者向けUIやログ上で確認でき、チームでアシスタントを共有する場合にも役立ちます。
APIリクエストのサンプル: 以下は説明文を含めたリクエスト例です。アシスタントの概要を"description"
フィールドに設定しています。:
POST https://api.openai.com/v1/assistants
Content-Type: application/json
{
"model": "gpt-3.5-turbo-0613",
"name": "RefactorGuru",
"description": "Improves code readability and optimizes performance.",
"instructions": "You are a coding assistant focused on refactoring code...",
"tools": []
}
この例では、"description"
として「Improves code readability and optimizes performance.」という説明文を付与しています。リファクタリング支援を行うアシスタントであることがひと目で分かるようになっています。説明文はあくまで補助情報ですが、アシスタントの管理や用途確認に有用です (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。
instructions(システム命令)オプション
オプションの説明: instructions
は**アシスタントに与えるシステムレベルの指示(プロンプト)**です (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。ChatGPTで言うところの「システムメッセージ」に相当し、アシスタントの振る舞いや口調、優先すべきルールなどを定義します。最大256,000文字もの長文を与えられるため、包括的な指示やドキュメントを含めることも可能です (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。コード生成・デバッグ用途では、この命令文がアシスタントの専門性や回答方針を決定づけます。
具体的な使用例: たとえば、コード補完アシスタントでは「与えられたコードの続きや不足部分を補完し、必要に応じて説明も付記する」よう指示できます。一方、デバッグ支援アシスタントでは「ユーザが提供したコードにバグがないか確認し、問題を特定して修正案を提示する」旨を命令します。複数のシナリオに対応する場合、箇条書きで詳細なルールを記述することもあります。以下は英語での命令文の一例です:
"You are a skilled Python programmer tasked with creating Python 3 solutions for user problems, following top industry practices. Make sure your code complies with these rules: 1. Plan first: ... 2. Quality code: ... 3. Test well: ..." (Function Calling and Code Interpretation with OpenAI's Assistant API: A Quick and Simple Tutorial - DEV Community)
上記のように、コードを書く際の具体的指針やルール(計画を立てること、可読性の高いコード、テストの徹底など)をシステム命令で包括的に伝えられます。この命令によって、アシスタントはユーザからの質問に答える際にこれらルールを踏まえた回答を行うようになります。
例えばデバッグ支援用の命令では「あなたは熟練したソフトウェアエンジニアです。ユーザからコードが与えられた場合、まずバグや問題点を分析し、詳細な説明と修正コードを提供してください。」といった内容を設定できます。リファクタリング支援なら「コードをより読みやすく最適化する方法を提案し、例示してください。」、ドキュメント生成であれば「関数やクラスの説明を日本語で分かりやすく作成してください。」等、用途に合わせて細かく指示を調整します。
APIリクエストのサンプル: 以下はシステム命令を指定したリクエスト例です。この例ではPythonのデバッグ支援アシスタントを想定し、バグ検出と修正を行うよう指示する命令文を設定しています。:
POST https://api.openai.com/v1/assistants
Content-Type: application/json
{
"model": "gpt-4-0613",
"name": "PythonDebugger",
"instructions": "You are an expert Python developer. When the user provides code with errors, analyze the code, identify the bug, and suggest a corrected version of the code with an explanation.",
"tools": [ { "type": "code_interpreter" } ]
}
この例では、"instructions"
フィールドにデバッグの方針を具体的に記載しています。例えば「エラーを特定し、修正案付きで回答せよ」という指示が含まれています。tools
にコード実行ツールを含めているため、アシスタントは必要に応じてコードを実行しながらデバッグを行うことも可能です(後述のツール設定参照) (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。適切なシステム命令を与えることで、アシスタントはコード生成やデバッグ支援の際に一貫した振る舞いを示すようになります。
tools(ツールの有効化)オプション
オプションの説明: tools
はアシスタントに使用可能なツールを指定するオプションです (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。デフォルトは空のリスト([]
)で、指定しない場合アシスタントはツールを使いません。現在(ベータ版時点)使用できるツールには、**コード実行環境の「code_interpreter」**や、カスタム関数呼び出し用の「function」があります (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。ツールを設定すると、アシスタントは通常の言語モデル応答に加えて、ツールを呼び出すアクションを取ることができます。
具体的な使用例: コード生成・デバッグ支援のシナリオでは、code_interpreter
ツールを有効にすることでアシスタントにPythonコードの実行能力を持たせることができます。例えば、ユーザが「このコードを実行してみて」と依頼した場合や、デバッグのために実際にコードを走らせてエラーメッセージを確認したい場合、アシスタントは内部でコードを実行し、その結果をもとに回答できます (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。デバッグ支援では、アシスタントがユーザのコードを受け取り、code_interpreter
で実行してエラーを再現・解析し、バグの原因を突き止めることが可能です。またコード補完やリファクタリングの場面でも、生成したコードをテストケースと一緒に実行して正しく動くか検証したり、性能を測定したりといったことができます。
さらにfunction
ツールを使えば、開発者が独自の機能をアシスタントに持たせることもできます。例えば、特定のライブラリのドキュメントを検索する関数や、コードの静的解析を行う関数(リンター)を用意し、それをツールとして登録すれば、アシスタントは必要に応じてその関数を呼び出すことができます。これにより、コードリファクタリング支援でコーディング規約に沿っているかチェックしたり、ドキュメント生成で外部の辞書から専門用語の説明を引いたりすることも実現可能です。
APIリクエストのサンプル: 以下はコードインタプリタツール(Python実行環境)を有効化した例です。"tools"
フィールドに{"type": "code_interpreter"}
を追加しています。:
POST https://api.openai.com/v1/assistants
Content-Type: application/json
{
"model": "gpt-4-0613",
"name": "CodeGuru",
"instructions": "You are a coding assistant that writes and executes Python code to solve problems.",
"tools": [
{ "type": "code_interpreter" }
]
}
この設定により、アシスタント「CodeGuru」はPythonコードの生成と実行が可能になります (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。例えばユーザが「このデータセットを分析してグラフを描いて」と要求した場合、アシスタントはコードを生成し、自身で実行してグラフ画像を生成する(※画像の表示はAPI側で取得可能)といった応答もできます。デバッグシナリオでは、ユーザのコードを実行してエラー内容を取得し、その情報をもとに解決策を提示する動きが可能です。tools
オプションはこのようにアシスタントの能力を拡張し、コード生成・実行・関数呼び出しといった高度な支援を実現します。
tool_resources(ツール用リソース)オプション
オプションの説明: tool_resources
はツールが利用するリソース(ファイルやベクトルストアなど)を提供するためのオプションです (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。このパラメータはツールの種類に応じて特定のリソース情報を持ち、例えばcode_interpreter
ツールにはアクセス可能なファイルIDのリストを渡すことができます (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。file_search
ツール(ベクトルストア検索)を使う場合はベクトルストアIDのリストを指定する形になります。tool_resources
はツールごとにオブジェクトを持ち、その中に必要なリソースIDを配列で列挙します (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。
具体的な使用例: デバッグ支援でユーザのコードファイルを解析したい場合、事前にそのコードファイルをOpenAIにアップロードし(Assistants APIで利用するファイルはpurpose
をassistants
に設定してアップロードする必要があります (How to create Assistants with Azure OpenAI Service - Azure OpenAI | Microsoft Learn))、そのファイルのfile_id
をアシスタントに渡します。こうすることで、アシスタント(のcode_interpreter
ツール)はアップロードされたコードを開き、内容を読んだり実行したりできます (How to create Assistants with Azure OpenAI Service - Azure OpenAI | Microsoft Learn)。例えば、ユーザのプログラムファイルmain.py
にバグがあるとき、tool_resources
でそのファイルIDを指定しておけば、アシスタントはmain.py
を実際に実行しエラーログを取得することができます。その結果に基づいて「◯行目のロジックにバグがあります」というように具体的なデバッグ情報を提供できます。
同様に、コード補完のユースケースでも部分的なコードが書かれたファイルを渡して続きを書かせたり、ドキュメント生成ではコードファイル一式を渡してその内容から自動的にドキュメントを作成するといったことが可能です。要するにtool_resources
はアシスタントに追加のコンテキストやデータを与える手段であり、与えられたファイルやデータを元により適切なコード解析・生成を行わせることができます。
APIリクエストのサンプル: 以下はコードインタプリタツールにファイルを渡す設定の例です。すでにアップロード済みのファイルIDを用いて、tool_resources
内でcode_interpreter
に関連付けています。:
POST https://api.openai.com/v1/assistants
Content-Type: application/json
{
"model": "gpt-4-0613",
"name": "DataAnalyzer",
"instructions": "You are a data analyst assistant. You have access to a CSV data file to analyze.",
"tools": [
{ "type": "code_interpreter" }
],
"tool_resources": {
"code_interpreter": {
"file_ids": [ "file-abc123456789" ]
}
}
}
この例では、"file_ids"
に一つのファイルID(例:file-abc123456789
)を渡しています。これによって、アシスタント「DataAnalyzer」は指定されたCSVファイルにアクセスできるようになり、そのデータを読み込んで解析するPythonコードを書いて実行するといったデータ分析支援が可能となります (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn) (How to create Assistants with Azure OpenAI Service - Azure OpenAI | Microsoft Learn)。デバッグ用途でも、ユーザのコードファイルを同様に渡せば、内容のチェックや実行によるバグ特定が容易になります。
temperature(温度)オプション
オプションの説明: temperature
は出力のランダム性(創造性)を制御するパラメータです (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。0から2の値を取り、デフォルトは1に設定されています (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。値を高くすると出力にランダム性が増し(創造的で多様な応答になりやすい)、低くすると出力はより決定的で一貫性のあるものになります (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。例えばtemperature=0.8
では応答にある程度ランダムな要素が入り、temperature=0.2
ではモデルは高確率の語を優先して選ぶためほぼ毎回似たような応答になります。
具体的な使用例: コード生成やデバッグの用途では、一般的にこの値は低めに設定するのがおすすめです。コードは正確さや一貫性が重視され、不要な創造性はバグの原因になりかねないためです。例えば、コード補完アシスタントが毎回異なる変数名や構文をランダムに返すと開発者は困惑します。そのためtemperature
を0
に近い値(例: 0〜0.3程度)にすると、モデルはもっとも可能性が高い(普通に考えて正しい)コードを返しやすくなり、余計なブレが減ります (Best Temperature
for Code Generation - API - OpenAI Developer Community)。実際、開発者コミュニティでも「コーディングではほぼ常に最も確からしい単語(トークン)を選んで欲しいので、ランダム性は抑えるべきだ」という意見があります (Best Temperature
for Code Generation - API - OpenAI Developer Community)。一方で、リファクタリングの提案や複数の実装アプローチの比較など、多少多様なアイデアが欲しい場面ではtemperature
を中程度(例: 0.5前後)に上げ、異なる解決策を試すことも考えられます。ただし、高すぎる値(例: 1.5以上)を設定するとコードの場合は意味不明な出力や構文エラーを含むコードを生成するリスクが高まるため注意が必要です。
APIリクエストのサンプル: 以下は温度パラメータを低めに設定した例です。コードの決定論的な提案を重視し、"temperature": 0.2
としています。:
POST https://api.openai.com/v1/assistants
Content-Type: application/json
{
"model": "gpt-3.5-turbo-0613",
"name": "CodeCompleter",
"instructions": "You are an AI that completes the user's code following their intent without introducing bugs.",
"tools": [],
"temperature": 0.2
}
この設定では、アシスタント「CodeCompleter」は出力のばらつきが小さくなり、毎回安定したコード補完を返すよう期待できます (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。例えばユーザが同じ入力をした場合、ほぼ同じコード提案が得られるでしょう。デバッグ支援においても、temperature
を下げておくことで一貫性のあるバグ修正案を提供しやすくなります。一方、もし意図的に多様な提案をさせたい場合は、この値を少し上げて調整します(ただしtemperature
と後述のtop_p
は同時に極端な設定にしないことが推奨されています (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn))。
top_p(トップP)オプション
オプションの説明: top_p
は核サンプリング(nucleus sampling)の範囲を制限するパラメータです (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。0から1の値を取り、デフォルトは1です。これは「次の単語を生成する際、確率上位top_pの質量を占める選択肢のみ考慮する」という制限をかけます (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。例えば、top_p=0.1
では出力確率の上位10%に含まれる候補からしか単語を選びません。top_p=1
は全候補を考慮することを意味し、事実上制限なしとなります(従ってtop_p=1
の場合、このパラメータは無効に等しいです)。
具体的な使用例: top_p
はtemperature
と組み合わせて出力の多様性を調整しますが、一般にはどちらか一方を調整すれば十分とされています (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。コード生成の場合、デフォルトのtop_p=1.0
のままで運用するケースが多いです。これは、不必要に有力な候補を削ると正しいコードまで除外してしまう可能性があるためです。例えば、あるバグの原因が通常とは少し異なるパターンにあるとき、確率的にやや低めのトークン列が正解となる場合があります。極端にtop_p
を下げてしまうと、その正解候補が候補から外れてしまう可能性があります。
一方、応答をより保守的にしたい場合にはtop_p
を下げることが考えられます。例えばコード生成であまりに風変わりな回答を避けたいとき、top_p=0.8
などに設定すると、モデルはより高確率の語彙に絞って応答するため、奇抜なコードや不適切な表現が出にくくなります。ただし、この調整もやりすぎると有用なアイデアを捨ててしまうリスクがあるため、慎重に行います。一般的な推奨は、temperature
かtop_p
のどちらか片方のみを調整し、もう一方はデフォルトに近い値(例えばtemperature
を下げるならtop_p=1
のままにする等)にしておくことです (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。
APIリクエストのサンプル: 以下はtop_p
を絞って応答のばらつきを制限した例です。"top_p": 0.9
とし、高確率90%に含まれる語彙からのみ応答を生成させています。:
POST https://api.openai.com/v1/assistants
Content-Type: application/json
{
"model": "gpt-3.5-turbo-0613",
"name": "ConservativeCoder",
"instructions": "You provide straightforward code solutions without unnecessary complexity.",
"tools": [],
"temperature": 0.0,
"top_p": 0.9
}
この設定では、temperature
を0に、top_p
を0.9にしています。完全に決定論的にする場合(毎回同じ出力を得る)はtemperature=0
かつtop_p=1
とするのが一般的ですが、本例のようにtop_p
を0.9に設定すると、ごく僅かなランダム性を残しつつも大半は確実性の高い出力となります (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。コード生成において、これは「ほぼ安定した出力だが、わずかに異なる表現になる可能性もある」程度の調整です。なお、temperature
とtop_p
の両方を低く設定すると出力が極端に単調・保守的になるため、目的に応じてバランスを取ってください (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。
response_format(応答フォーマット)オプション
オプションの説明: response_format
はモデルの出力形式を指定するオプションです (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。デフォルトは"auto"
(通常のテキスト応答)ですが、オブジェクト形式で指定することでJSON専用モードや特定のスキーマに沿った出力を強制することが可能です (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。例えば{ "type": "json_object" }
を指定すると、モデルは必ずJSONオブジェクトとして有効なテキストを出力するようになります (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。他にも"text"
(通常のテキスト出力)や、さらに高度な"json_schema"
(JSONスキーマを与えて出力形式を制約)を指定することもできます (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn) (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。
具体的な使用例: コード生成やデバッグ支援において、通常はモデルの応答は**人間が読むことを前提としたテキスト(Markdown形式のコードブロックなど)**になります。多くの場合、response_format
を明示的に設定する必要はありません。しかし、応答をプログラムでパースしやすい形にしたい場合にはこのオプションが有用です。例えば、アシスタントの応答をそのまま開発ツールに取り込みたい場合、JSON形式で{"code": "...", "explanation": "..."}
のように出力させれば、コード部分と説明部分を機械的に分離しやすくなります。その場合、response_format
にjson_object
を指定し、さらにシステム命令やユーザーメッセージで「JSONで出力せよ」とモデルに指示します。
注意点: response_format
をJSONに設定しただけでは自動的にJSONになるわけではなく、モデルに対してJSONで答えるようプロンプトで促す必要があります (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。適切に指示しないと、モデルが無限に空白を出力し続けたり、トークン上限まで空白を埋めてしまうといった問題が報告されています (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。また、json_schema
を使って出力を厳格に制約することも可能ですが、モデルに与える制約が強すぎると期待通り動作しない場合もあります。従って、このオプションは必要な場合にのみ慎重に使うのが良いでしょう。
APIリクエストのサンプル: 以下はJSON形式の出力を要求する設定例です。アシスタントにはコードと説明をJSONで返させたい想定で、response_format
を指定しています。:
POST https://api.openai.com/v1/assistants
Content-Type: application/json
{
"model": "gpt-4-0613",
"name": "JsonCoder",
"instructions": "You are a coding assistant. When you solve a problem, respond ONLY in JSON with keys 'solution_code' and 'explanation'.",
"tools": [],
"response_format": { "type": "json_object" }
}
この例では、システム命令でJSONで答えるよう指示し、response_format
でもjson_object
を指定しています。これにより、例えばユーザからプログラミング問題が与えられると、アシスタントは以下のようなJSON文字列を返すことが期待できます(実際の応答例):
{
"solution_code": "def add(a, b):\n return a + b",
"explanation": "関数addは引数aとbを受け取り、その和を返します。"
}
このように出力が整形されていれば、後段のプログラムでパースしてコード部分を抽出することも容易です。ただし、通常の対話型コード支援ではテキストで十分なケースが多いため、response_format
の指定は特殊な要件がある場合にのみ使用すれば良いでしょう。
metadata(メタデータ)オプション
オプションの説明: metadata
はアシスタントに紐づけられる任意のメタ情報を格納するためのオプションです (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。キーと値のペアを最大16組まで保持でき、キーは最大64文字、値は最大512文字まで設定可能です (Azure OpenAI Service Assistants Python & REST API reference - Azure OpenAI | Microsoft Learn)。この情報はアシスタントのオブジェクトに付随して保存されますが、モデルの応答内容や動作には直接影響を与えません。
具体的な使用例: 開発者がアシスタントを管理する際に、補足情報を持たせたい場合に使います。例えば、複数のコードアシスタントを使っている場合に"metadata": {"purpose": "code_completion", "language": "Python"}
のようにタグ付けしておけば、後でそのアシスタントがどういった目的・言語対象で作られたものか把握しやすくなります。デバッグ支援向けなら"purpose": "debug", "project": "MobileApp"
のようにプロジェクト名や用途を記録できます。また、社内で複数人がアシスタントを作成する場合に"creator": "Alice"
のような情報を付与しておけば、誰が作成したアシスタントかを追跡するのにも役立ちます。
APIリクエストのサンプル: 以下はメタデータを設定したリクエスト例です。コード生成アシスタントに対して、関連する言語や目的のタグを付与しています。:
POST https://api.openai.com/v1/assistants
Content-Type: application/json
{
"model": "gpt-3.5-turbo-0613",
"name": "DocWriter",
"instructions": "You generate documentation comments for given code.",
"tools": [],
"metadata": {
"purpose": "documentation",
"target_language": "Java",
"creator": "DevTeamA"
}
}
この例では、"metadata"
フィールドに3つの情報を格納しています。"purpose": "documentation"
はドキュメント生成用であること、"target_language": "Java"
は主にJavaコードを対象としていること、"creator": "DevTeamA"
は開発チームAが作成したことを示すメタデータです。これらの情報はアシスタント管理上の目印となり、APIでアシスタント一覧を取得した際にフィルタリングや検索をしやすくなります(例えば特定のpurposeを持つアシスタントだけ列挙するといったことが可能になります)。メタデータは将来的に組織内ドキュメントとして活用したり、アシスタントのライフサイクル管理に役立てたりできます。
以上、OpenAI APIのCreate assistant
エンドポイントで指定可能な各オプションについて、コード生成やデバッグ支援の観点から説明しました。適切にオプションを組み合わせて設定することで、コード補完アシスタントからバグ検出エージェント、コードリファクタリング提案ボット、自動ドキュメント生成ツールまで、幅広い用途に合わせたAIアシスタントを構築できます。それぞれのオプションが果たす役割を理解し、ユースケースに応じて調整することで、より効果的なコーディング支援が実現できるでしょう。