Azure OpenAI Assistants API (プレビュー)

Azure OpenAI Service の新機能であるアシスタントを、パブリック プレビューで利用できるようになりました。 Assistants API を使うと、開発者は、データを選別し、ソリューションを提案し、タスクを自動化できる、高度なコパイロットのようなエクスペリエンスを備えたアプリケーションを簡単に作成できます。

  • Assistants を使うと、Azure OpenAI のモデルを呼び出し、個性や機能を調整する具体的な指示を与えることができます。
  • Assistants は、複数のツールに並列でアクセスできます。 これには、コード インタープリターファイル検索などの Azure OpenAI でホストされるツールと、関数呼び出しを通じて構築、ホスト、アクセスするツールの両方が含まれます。
  • Assistants は永続的なスレッドにアクセスできます。 スレッドは、メッセージ履歴を保存し、モデルのコンテキストの長さに対して会話が長すぎる場合に切り捨てることで、AI アプリケーション開発を簡略化しています。 一度スレッドを作成した後は、ユーザーが返信するときにメッセージをそれに追加するだけで済みます。
  • Assistants は、いくつかの形式のファイルにアクセスできます。 作成の一部として、または Assistants とユーザー間のスレッドの一部として。 ツールを使う場合、Assistants はファイル (画像やスプレッドシートなど) を作成し、作成するメッセージ内で参照するファイルを引用することもできます。

概要

従来、カスタム AI アシスタントを構築するには、経験豊富な開発者でもたいへんな作業が必要でした。 Chat Completions API は軽量で強力ですが、本質的にステートレスであり、開発者は、会話の状態とチャット スレッド、ツールの統合、ドキュメントとインデックスの取得、コードの実行を、手動で管理する必要がありました。

Chat Completions API のステートフルな進化である Assistants API は、これらの課題に対する解決策を提供します。 Assistants API では、自動的に管理される永続的なスレッドがサポートされます。 つまり、開発者は、会話状態管理システムを開発し、モデルのコンテキスト ウィンドウの制約を回避する必要がなくなります。 Assistants API は、最適化を自動的に処理し、ユーザーが選んだモデルの最大コンテキスト ウィンドウの下にあるスレッドを保持します。 スレッドを作成した後は、ユーザーが応答したら新しいメッセージをそれに追加するだけでかまいません。 アシスタントは、必要に応じて複数のツールに並列アクセスすることもできます。 それらのツールを以下に示します。

ヒント

コード インタープリターまたはファイル検索ツールを使わない限り、Assistants の使用に追加の料金クォータはかかりません。

Assistants API は、OpenAI の GPT 製品に搭載されているものと同じ機能に基づいて構築されています。 考えられるユース ケースとしては、AI を搭載した製品レコメンダー、セールス アナリスト アプリ、コーディング アシスタント、従業員の Q&A チャットボットなどがあります。 Azure OpenAI Studio、AI Studio のノーコード Assistants プレイグラウンドで構築を始めるか、API を使って構築を始めます。

重要

関数呼び出し、コード インタープリターまたはファイル入力によるファイル検索、アシスタント スレッド機能を使って信頼されていないデータを取得すると、アシスタントまたはアシスタントを使うアプリケーションのセキュリティが損なわれる可能性があります。 軽減策についてはこちらをご覧ください。

アシスタント プレイグラウンド

アシスタント プレイグラウンドの詳細については、クイックスタート ガイドに関する記事で説明します。 これにより、アシスタントの機能をテストするためのコードなしの環境が提供されます。

アシスタントのコンポーネント

アシスタントのコンポーネントを示す図。

コンポーネント 説明
アシスタント Azure OpenAI モデルをツールと組み合わせて使うカスタム AI。
スレッド アシスタントとユーザーの間の会話セッション。 スレッドはメッセージを格納し、コンテンツをモデルのコンテキストに合わせるために切り捨てを自動的に処理します。
メッセージ アシスタントまたはユーザーによって作成されたメッセージ。 メッセージにはテキスト、画像、その他のファイルを含めることができます。 メッセージはスレッド上にリストとして格納されます。
実行 スレッドの内容に基づいて実行を開始するアシスタントのアクティブ化。 アシスタントは、その構成とスレッドのメッセージを使って、モデルとツールを呼び出してタスクを実行します。 実行の一部として、アシスタントはスレッドにメッセージを追加します。
実行ステップ アシスタントが実行の一部として実行したステップの詳細なリスト。 アシスタントは、実行中にツールを呼び出したり、メッセージを作成したりできます。 実行ステップを調べると、アシスタントが最終結果にどのように到達するかを理解できます。

アシスタントのデータ アクセス

現時点では、アシスタント用に作成されたアシスタント、スレッド、メッセージ、およびファイルは、Azure OpenAI リソース レベルにスコープ設定されます。 そのため、Azure OpenAI リソースまたは API キー アクセスにアクセスできるユーザーは、アシスタント、スレッド、メッセージ、ファイルの読み取り/書き込みを行うことができます。

次のデータ アクセス制御を強くお勧めします:

  • 承認を実装します。 アシスタント、スレッド、メッセージ、ファイルに対して読み取りまたは書き込みを行う前に、エンド ユーザーに許可されていることを確認します。
  • Azure OpenAI リソースと API キーのアクセスを制限します。 アシスタントが使用されている Azure OpenAI リソースと関連付けられた API キーにアクセスできるユーザーを慎重に検討します。
  • Azure OpenAI リソースにアクセスできるアカウント/個人を定期的に監査します。 API キーとリソース レベルのアクセスにより、メッセージやファイルの読み取りと変更など、さまざまな操作が可能になります。
  • 診断設定を有効にすると、Azure OpenAI リソースのアクティビティ ログの特定の側面を長期的に追跡できます。

パラメーター

Assistants API は、Assistants の出力をカスタマイズできるいくつかのパラメーターをサポートしています。 tool_choice パラメーターを使うと、指定したツールの使用をアシスタントに強制できます。 assistant ロールを使ってメッセージを作成し、スレッドのカスタムの会話履歴を作成することもできます。 temperaturetop_presponse_format を使うと、応答をさらに調整できます。 詳しくは、リファレンスドキュメント をご覧ください。

コンテキスト ウィンドウの管理

Assistants を使うと、モデルのコンテキストの最大長に収まるようにテキストを自動的に切り詰めることができます。 この動作をカスタマイズするには、実行で使う最大トークンや、実行に含める最近のメッセージの最大数を指定します。

最大完了と最大プロンプトのトークン

1 回の実行でのトークンの使用を制御するには、実行の作成時に max_prompt_tokensmax_completion_tokens を設定します。 これらの制限は、実行のライフサイクル全体を通してすべての完了で使われるトークンの合計数に適用されます。

たとえば、max_prompt_tokens を 500 に設定し、max_completion_tokens を 1,000 に設定して実行を開始した場合、最初の完了でスレッドは 500 トークンに切り詰められ、出力は 1,000 トークンに制限されることを意味します。 最初の完了で 200 個のプロンプト トークンと 300 個の入力候補トークンのみが使われた場合、2 回目の完了では使用可能な制限は 300 個のプロンプト トークンと 700 個の入力候補トークンになります。

完了が max_completion_tokens 制限に達すると、実行は不完全な状態で終了し、詳細は実行オブジェクトの incomplete_details フィールドに表示されます。

ファイル検索ツールを使う場合は、max_prompt_tokens を 20,000 以上に設定することをお勧めします。 会話が長い場合やファイル検索を複数回操作する場合は、この制限を 50,000 に増やすことを検討するか、理想的には、最高品質の結果を得るために max_prompt_tokens 制限を完全に削除することを検討してください。

切り捨て戦略

切り捨て戦略を指定して、スレッドをモデルのコンテキスト ウィンドウにレンダリングする方法を制御することもできます。 種類 auto の切り捨て戦略を使うと、OpenAI の既定の切り捨て戦略が使われます。 種類 last_messages の切り捨て戦略を使うと、コンテキスト ウィンドウに含める最新のメッセージ数を指定できます。

関連項目