Assistants API (プレビュー) の実行に関するリファレンス
Note
- ファイル検索では、アシスタントあたり最大 10,000 個のファイルを取り込むことができます。これは以前の 500 倍以上の量です。 これは高速で、マルチスレッド検索を通して並列クエリをサポートしており、強化された再ランク付けとクエリの書き換えを特徴としています。
- ベクトル ストアは、API 内の新しいオブジェクトです。 ファイルがベクトル ストアに追加されると、自動的にそのファイルの解析、チャンク、埋め込みが行われ、検索の準備が整います。 ベクトル ストアは、複数のアシスタントとスレッドにわたって使用できるため、ファイル管理と課金が単純化されます。
- 特定の実行において特定のツール (ファイル検索、コード インタープリター、関数など) の使用を強制するために使用できる
tool_choice
パラメーターのサポートが追加されました。
この記事では、新しい Assistants API (プレビュー) に関する Python と REST のリファレンス ドキュメントを提供します。 さらに詳しいステップ バイ ステップのガイダンスについては、概要ガイドで説明されています。
実行の作成
POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs?api-version=2024-08-01-preview
実行を作成します。
パス パラメーター
パラメーター | タイプ | Required | Description |
---|---|---|---|
thread_id |
string | 必須 | メッセージを作成するスレッドの ID。 |
要求本文
名前 | タイプ | Required | Description |
---|---|---|---|
assistant_id |
string | 必須 | この実行を実行するために使われるアシスタントの ID。 |
model |
文字列または null 値 | 省略可能 | この実行を実行するために使われるモデル デプロイ名。 ここで値を指定すると、アシスタントに関連付けられたモデル デプロイ名がオーバーライドされます。 そうでない場合は、アシスタントに関連付けられたモデル デプロイ名が使われます。 |
instructions |
文字列または null 値 | 省略可能 | アシスタントの手順をオーバーライドします。 これは、実行ごとに動作を変更する場合に役立ちます。 |
additional_instructions |
string | 省略可能 | 実行の手順の最後に追加の手順を追加します。 これは、他の手順をオーバーライドすることなく、実行ごとに動作を変更する場合に役立ちます。 |
additional_messages |
配列 | 省略可能 | 実行を作成する前に、スレッドにメッセージを追加します。 |
tools |
配列または null 値 | 省略可能 | アシスタントがこの実行に使用できるツールをオーバーライドします。 これは、実行ごとに動作を変更する場合に役立ちます。 |
metadata |
map | 省略可能 | オブジェクトにアタッチできる 16 個のキーと値のペアのセット。 これは、オブジェクトに関する追加情報を構造化された形式で格納する場合に役立ちます。 キーの最大長は 64 文字、値の最大長は 512 文字です。 |
temperature |
数値 | 省略可能 | 使用するサンプリング温度 (0 から 2)。 0.8 のような大きい値にすると、出力はよりランダムになり、0.2 のような小さい値にすると、出力はより集中的および決定論的になります。 既定値は 1 です。 |
top_p |
数値 | 省略可能 | 温度によるサンプリングに代わる核サンプリングと呼ばれるもので、モデルは top_p の確率質量を持つトークンの結果を考慮します。 したがって、0.1 は、上位 10% の確率質量を含むトークンのみが考慮されることを意味します。 一般的に、これと temperature の両方ではなく、いずれかを変更することをお勧めします。 既定値は 1 です。 |
stream |
boolean | 省略可能 | true の場合は、サーバー送信イベントとして実行中に発生したイベントのストリームを返します。実行が終了状態になると、data: [DONE] メッセージが表示されて終了します。 |
max_prompt_tokens |
integer | 省略可能 | 実行の過程で使用される可能性がある入力候補トークンの最大数。 実行はベスト エフォート型で、実行の複数のターンにわたって、指定された数の入力候補トークンのみを使用しようとします。 実行が指定された入力候補トークンの数を超えると、実行は状態 incomplete で終了します。 |
max_completion_tokens |
integer | 省略可能 | 実行の過程で使用される可能性がある入力候補トークンの最大数。 実行はベスト エフォート型で、実行の複数のターンにわたって、指定された数の入力候補トークンのみを使用しようとします。 実行が指定された入力候補トークンの数を超えると、実行は状態 incomplete で終了します。 |
truncation_strategy |
truncationObject | 省略可能 | 実行前にスレッドを切り捨てる方法を制御します。 これを使用して、実行の初期コンテキスト ウィンドウを制御します。 |
tool_choice |
文字列またはオブジェクト | 省略可能 | モデルによって呼び出されるツールを制御します (ある場合)。 none 値は、モデルでツールが呼び出されず、代わりにメッセージが生成されることを意味します。 auto は既定値であり、モデルがメッセージの生成またはツールの呼び出しを選択できることを意味します。 {"type": "file_search"} や {"type": "function", "function": {"name": "my_function"}} などの特定のツールを指定すると、モデルでそのツールの呼び出しが強制されます。 |
response_format |
文字列またはオブジェクト | 省略可能 | モデルから出力する必要がある形式を指定します。 GPT-4 Turbo、および gpt-3.5-turbo-1106 以降のすべての GPT-3.5 Turbo モデルと互換性があります。 { "type": "json_object" } に設定すると、JSON モードが有効になります。これにより、モデルが生成するメッセージが有効な JSON であることが保証されます。 重要: JSON モードを使うときは、システムまたはユーザー メッセージ経由で、JSON を生成するようにユーザー自身がモデルに指示することも必要です。 これがないと、トークンの上限に達するまで、モデルはいつまでも空白のストリームを生成する可能性があります。その結果、実行時間が長く、一見 "止まっている" ように見える要求が発生します。 また、生成が max_tokens を超えたか、会話がコンテキストの最大長を超えたことを示す finish_reason="length" の場合、メッセージの内容が部分的に切り取られる可能性があります。 |
返品
実行オブジェクト。
実行を作成する要求の例
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-08-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
run = client.beta.threads.runs.create(
thread_id="thread_abc123",
assistant_id="asst_abc123"
)
print(run)
スレッドを作成して実行する
POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/runs?api-version=2024-08-01-preview
スレッドを作成し、1 つの要求で実行します。
要求本文
名前 | タイプ | Required | Description |
---|---|---|---|
assistant_id |
string | 必須 | この実行を実行するために使われるアシスタントの ID。 |
thread |
object | 省略可能 | |
model |
文字列または null 値 | 省略可能 | この実行を実行するために使われるモデル デプロイの ID。 ここで値を指定すると、アシスタントに関連付けられたモデル デプロイ名がオーバーライドされます。 そうでない場合は、アシスタントに関連付けられたモデル デプロイ名が使われます。 |
instructions |
文字列または null 値 | 省略可能 | アシスタントの既定のシステム メッセージをオーバーライドします。 これは、実行ごとに動作を変更する場合に役立ちます。 |
tools |
配列または null 値 | 省略可能 | アシスタントがこの実行に使用できるツールをオーバーライドします。 これは、実行ごとに動作を変更する場合に役立ちます。 |
metadata |
map | 省略可能 | オブジェクトにアタッチできる 16 個のキーと値のペアのセット。 これは、オブジェクトに関する追加情報を構造化された形式で格納する場合に役立ちます。 キーの最大長は 64 文字、値の最大長は 512 文字です。 |
temperature |
数値 | 省略可能 | 使用するサンプリング温度 (0 から 2)。 0.8 のような大きい値にすると、出力はよりランダムになり、0.2 のような小さい値にすると、出力はより集中的および決定論的になります。 既定値は 1 です。 |
top_p |
数値 | 省略可能 | 温度によるサンプリングに代わる核サンプリングと呼ばれるもので、モデルは top_p の確率質量を持つトークンの結果を考慮します。 したがって、0.1 は、上位 10% の確率質量を含むトークンのみが考慮されることを意味します。 一般的に、これと temperature の両方ではなく、いずれかを変更することをお勧めします。 既定値は 1 です。 |
stream |
boolean | 省略可能 | true の場合は、サーバー送信イベントとして実行中に発生したイベントのストリームを返します。実行が終了状態になると、data: [DONE] メッセージが表示されて終了します。 |
max_prompt_tokens |
integer | 省略可能 | 実行の過程で使用される可能性がある入力候補トークンの最大数。 実行はベスト エフォート型で、実行の複数のターンにわたって、指定された数の入力候補トークンのみを使用しようとします。 実行が指定された入力候補トークンの数を超えると、実行は状態 incomplete で終了します。 |
max_completion_tokens |
integer | 省略可能 | 実行の過程で使用される可能性がある入力候補トークンの最大数。 実行はベスト エフォート型で、実行の複数のターンにわたって、指定された数の入力候補トークンのみを使用しようとします。 実行が指定された入力候補トークンの数を超えると、実行は状態 incomplete で終了します。 |
truncation_strategy |
truncationObject | 省略可能 | 実行前にスレッドを切り捨てる方法を制御します。 これを使用して、実行の初期コンテキスト ウィンドウを制御します。 |
tool_choice |
文字列またはオブジェクト | 省略可能 | モデルによって呼び出されるツールを制御します (ある場合)。 none 値は、モデルでツールが呼び出されず、代わりにメッセージが生成されることを意味します。 auto は既定値であり、モデルがメッセージの生成またはツールの呼び出しを選択できることを意味します。 {"type": "file_search"} や {"type": "function", "function": {"name": "my_function"}} などの特定のツールを指定すると、モデルでそのツールの呼び出しが強制されます。 |
response_format |
文字列またはオブジェクト | 省略可能 | モデルから出力する必要がある形式を指定します。 GPT-4 Turbo、および gpt-3.5-turbo-1106 以降のすべての GPT-3.5 Turbo モデルと互換性があります。 { "type": "json_object" } に設定すると、JSON モードが有効になります。これにより、モデルが生成するメッセージが有効な JSON であることが保証されます。 重要: JSON モードを使うときは、システムまたはユーザー メッセージ経由で、JSON を生成するようにユーザー自身がモデルに指示することも必要です。 これがないと、トークンの上限に達するまで、モデルはいつまでも空白のストリームを生成する可能性があります。その結果、実行時間が長く、一見 "止まっている" ように見える要求が発生します。 また、生成が max_tokens を超えたか、会話がコンテキストの最大長を超えたことを示す finish_reason="length" の場合、メッセージの内容が部分的に切り取られる可能性があります。 |
返品
実行オブジェクト。
スレッドを作成して実行する要求の例
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-08-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
run = client.beta.threads.create_and_run(
assistant_id="asst_abc123",
thread={
"messages": [
{"role": "user", "content": "Explain deep learning to a 5 year old."}
]
}
)
実行のリストの取得
GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs?api-version=2024-08-01-preview
スレッドに属する実行のリストを返します。
パス パラメーター
パラメーター | タイプ | Required | Description |
---|---|---|---|
thread_id |
string | 必須 | 実行が属するスレッドの ID。 |
クエリ パラメーター
名前 | タイプ | Required | 説明 |
---|---|---|---|
limit |
integer | 省略可能 - 既定値は 20 | 返されるオブジェクトの数の制限。 制限の範囲は 1 から 100 で、既定値は 20 です。 |
order |
string | 省略可能 - 既定値は desc | オブジェクトの created_at タイムスタンプによる並べ替え順序。 昇順の場合は asc、降順の場合は desc。 |
after |
string | 省略可能 | 改ページで使うカーソル。 after は、リスト内での場所を定義するオブジェクト ID です。 たとえば、リスト取得要求を行い、obj_foo で終わる 100 個のオブジェクトを受け取った場合、後続の呼び出しに after=obj_foo を含めて、リストの次のページをフェッチできます。 |
before |
string | 省略可能 | 改ページで使うカーソル。 before は、リスト内での場所を定義するオブジェクト ID です。 たとえば、リスト取得要求を行い、obj_foo で終わる 100 個のオブジェクトを受け取った場合、後続の呼び出しに before=obj_foo を含めて、リストの前のページをフェッチできます。 |
返品
実行オブジェクトのリスト。
実行のリストを取得する要求の例
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-08-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
runs = client.beta.threads.runs.list(
"thread_abc123"
)
print(runs)
実行ステップのリストの取得
GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/steps?api-version=2024-08-01-preview
実行に属するステップのリストを返します。
パス パラメーター
パラメーター | タイプ | Required | Description |
---|---|---|---|
thread_id |
string | 必須 | 実行が属するスレッドの ID。 |
run_id |
string | 必須 | クエリ対象の実行ステップに関連付けられた実行の ID。 |
クエリ パラメーター
名前 | タイプ | Required | 説明 |
---|---|---|---|
limit |
integer | 省略可能 - 既定値は 20 | 返されるオブジェクトの数の制限。 制限の範囲は 1 から 100 で、既定値は 20 です。 |
order |
string | 省略可能 - 既定値は desc | オブジェクトの created_at タイムスタンプによる並べ替え順序。 昇順の場合は asc、降順の場合は desc。 |
after |
string | 省略可能 | 改ページで使うカーソル。 after は、リスト内での場所を定義するオブジェクト ID です。 たとえば、リスト取得要求を行い、obj_foo で終わる 100 個のオブジェクトを受け取った場合、後続の呼び出しに after=obj_foo を含めて、リストの次のページをフェッチできます。 |
before |
string | 省略可能 | 改ページで使うカーソル。 before は、リスト内での場所を定義するオブジェクト ID です。 たとえば、リスト取得要求を行い、obj_foo で終わる 100 個のオブジェクトを受け取った場合、後続の呼び出しに before=obj_foo を含めて、リストの前のページをフェッチできます。 |
返品
実行ステップ オブジェクトのリスト。
実行ステップのリストを取得する要求の例
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-08-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
run_steps = client.beta.threads.runs.steps.list(
thread_id="thread_abc123",
run_id="run_abc123"
)
print(run_steps)
実行の取得
from openai import OpenAI
client = OpenAI()
run = client.beta.threads.runs.retrieve(
thread_id="thread_abc123",
run_id="run_abc123"
)
print(run)
実行を取得します。
パス パラメーター
パラメーター | タイプ | Required | Description |
---|---|---|---|
thread_id |
string | 必須 | 実行されたスレッドの ID。 |
run_id |
string | 必須 | 取得する実行の ID。 |
返品
指定された実行 ID に一致する実行オブジェクト。
実行ステップのリストを取得する要求の例
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-08-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
run = client.beta.threads.runs.retrieve(
thread_id="thread_abc123",
run_id="run_abc123"
)
print(run)
実行ステップの取得
GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/steps/{step_id}?api-version=2024-08-01-preview
実行ステップを取得します。
パス パラメーター
パラメーター | タイプ | Required | Description |
---|---|---|---|
thread_id |
string | 必須 | 実行および実行ステップが属するスレッドの ID。 |
run_id |
string | 必須 | 実行ステップが属する実行の ID。 |
step_id |
string | 必須 | 取得する実行ステップの ID。 |
返品
指定された ID に一致する実行ステップ オブジェクト。
実行ステップを取得する要求の例
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-08-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
run_step = client.beta.threads.runs.steps.retrieve(
thread_id="thread_abc123",
run_id="run_abc123",
step_id="step_abc123"
)
print(run_step)
実行の変更
POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}?api-version=2024-08-01-preview
実行を変更します。
パス パラメーター
パラメーター | タイプ | Required | Description |
---|---|---|---|
thread_id |
string | 必須 | 実行されたスレッドの ID。 |
run_id |
string | 必須 | 変更する実行の ID。 |
要求本文
名前 | タイプ | Required | 説明 |
---|---|---|---|
metadata |
map | 省略可能 | オブジェクトにアタッチできる 16 個のキーと値のペアのセット。 これは、オブジェクトに関する追加情報を構造化された形式で格納する場合に役立ちます。 キーの最大長は 64 文字、値の最大長は 512 文字です。 |
返品
指定された ID に一致する、変更された実行オブジェクト。
実行を変更する要求の例
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-08-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
run = client.beta.threads.runs.update(
thread_id="thread_abc123",
run_id="run_abc123",
metadata={"user_id": "user_abc123"},
)
print(run)
ツールの出力を実行に送信する
POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/submit_tool_outputs?api-version=2024-08-01-preview
実行の状態が "requires_action" であり、required_action.type が submit_tool_outputs である場合、このエンドポイントを使って、ツール呼び出しがすべて完了した後で、それらからの出力を送信できます。 すべての出力は 1 つの要求で送信する必要があります。
パス パラメーター
パラメーター | タイプ | Required | Description |
---|---|---|---|
thread_id |
string | 必須 | この実行が属するスレッドの ID。 |
run_id |
string | 必須 | ツール出力の送信を必要とする実行の ID。 |
要求本文
名前 | タイプ | Required | 説明 |
---|---|---|---|
tool_outputs |
array | 必須 | 出力が送信されるツールのリスト。 |
stream |
boolean | 省略可能 | true の場合は、サーバー送信イベントとして実行中に発生したイベントのストリームを返します。実行が終了状態になると、data: [DONE] メッセージが表示されて終了します。 |
返品
指定された ID に一致する、変更された実行オブジェクト。
ツールの出力を実行に送信する要求の例
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-08-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
run = client.beta.threads.runs.submit_tool_outputs(
thread_id="thread_abc123",
run_id="run_abc123",
tool_outputs=[
{
"tool_call_id": "call_abc123",
"output": "28C"
}
]
)
print(run)
実行をキャンセルする
POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/cancel?api-version=2024-08-01-preview
in_progress である実行を取り消します。
パス パラメーター
パラメーター | タイプ | Required | Description |
---|---|---|---|
thread_id |
string | 必須 | この実行が属するスレッドの ID。 |
run_id |
string | 必須 | 取り消す実行の ID。 |
返品
指定された ID に一致する、変更された実行オブジェクト。
ツールの出力を実行に送信する要求の例
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-08-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
run = client.beta.threads.runs.cancel(
thread_id="thread_abc123",
run_id="run_abc123"
)
print(run)
実行オブジェクト
スレッド上で実行される実行を表します。
名前 | 種類 | 説明 |
---|---|---|
id |
string | API エンドポイントで参照できる識別子。 |
object |
string | オブジェクトの種類。常に thread.run です。 |
created_at |
integer | 実行が作成されたときの Unix タイムスタンプ (秒単位)。 |
thread_id |
string | この実行の一部として実行されたスレッドの ID。 |
assistant_id |
string | この実行が実行される際に使われるアシスタントの ID。 |
status |
string | 実行の状態。queued 、in_progress 、requires_action 、cancelling 、cancelled 、failed 、completed 、または expired のいずれか。 |
required_action |
オブジェクトまたは null 値 | 実行を続行するために必要なアクションの詳細。 アクションが必要ない場合は null 値になります。 |
last_error |
オブジェクトまたは null 値 | この実行に関連付けられた最後のエラー。 エラーがない場合は null 値になります。 |
expires_at |
integer | 実行が期限切れになるときの Unix タイムスタンプ (秒単位)。 |
started_at |
整数または null 値 | 実行が開始されたときの Unix タイムスタンプ (秒単位)。 |
cancelled_at |
整数または null 値 | 実行が取り消されたときの Unix タイムスタンプ (秒単位)。 |
failed_at |
整数または null 値 | 実行が失敗したときの Unix タイムスタンプ (秒単位)。 |
completed_at |
整数または null 値 | 実行が完了したときの Unix タイムスタンプ (秒単位)。 |
model |
string | アシスタントがこの実行に使ったモデル デプロイ名。 |
instructions |
string | アシスタントがこの実行に使った手順。 |
tools |
配列 | アシスタントがこの実行に使ったツールのリスト。 |
file_ids |
配列 | アシスタントがこの実行に使ったファイル ID のリスト。 |
metadata |
map | オブジェクトにアタッチできる 16 個のキーと値のペアのセット。 これは、オブジェクトに関する追加情報を構造化された形式で格納する場合に役立ちます。 キーの最大長は 64 文字、値の最大長は 512 文字です。 |
tool_choice |
文字列またはオブジェクト | モデルによって呼び出されるツールを制御します (ある場合)。 none は、モデルでツールが呼び出されず、代わりにメッセージが生成されることを意味します。 auto は既定値であり、モデルがメッセージの生成またはツールの呼び出しを選択できることを意味します。 {"type": "file_search"} や {"type": "function", "function": {"name": "my_function"}} などの特定のツールを指定すると、モデルでそのツールの呼び出しが強制されます。 |
max_prompt_tokens |
整数または null 値 | 実行の過程で使用されるように指定されたプロンプト トークンの最大数。 |
max_completion_tokens |
整数または null 値 | 実行の過程で使用されるように指定された入力候補トークンの最大数。 |
usage |
オブジェクトまたは null 値 | 実行に関連する使用状況の統計。 実行が終了状態でない場合(たとえば、in_progress 、queued の場合)、この値は null 値になります。 |
truncation_strategy |
オブジェクト | 実行前にスレッドを切り捨てる方法を制御します。 |
response_format |
string | モデルから出力する必要がある形式。 GPT-4 Turbo、および gpt-3.5-turbo-1106 以降のすべての GPT-3.5 Turbo モデルと互換性があります。 |
tool_choice |
string | モデルによって呼び出されるツールを制御します (ある場合)。 none は、モデルでツールが呼び出されず、代わりにメッセージが生成されることを意味します。 auto は既定値であり、モデルがメッセージの生成またはツールの呼び出しを選択できることを意味します。 |
実行ステップ オブジェクト
実行の実行中のステップを表します。
名前 | 種類 | 説明 |
---|---|---|
id |
string | 実行ステップの識別子。API エンドポイントで参照できます。 |
object |
string | オブジェクトの種類。常に thread.run.step です。 |
created_at |
integer | 実行ステップが作成されたときの Unix タイムスタンプ (秒単位)。 |
assistant_id |
string | 実行ステップに関連付けられたアシスタントの ID。 |
thread_id |
string | 実行されたスレッドの ID。 |
run_id |
string | この実行ステップが含まれる実行の ID。 |
type |
string | 実行ステップの種類。message_creation または tool_calls のいずれか。 |
status |
string | 実行ステップの状態。in_progress 、cancelled 、failed 、completed 、または expired のいずれか。 |
step_details |
object | 実行ステップの詳細。 |
last_error |
オブジェクトまたは null 値 | この実行ステップに関連付けられた最後のエラー。 エラーがない場合は null 値になります。 |
expired_at |
整数または null 値 | 実行ステップが期限切れになるときの Unix タイムスタンプ (秒単位)。 親実行の有効期限が切れている場合、ステップは期限切れと見なされます。 |
cancelled_at |
整数または null 値 | 実行ステップが取り消されたときの Unix タイムスタンプ (秒単位)。 |
failed_at |
整数または null 値 | 実行ステップが失敗したときの Unix タイムスタンプ (秒単位)。 |
completed_at |
整数または null 値 | 実行ステップが完了したときの Unix タイムスタンプ (秒単位)。 |
metadata |
map | オブジェクトにアタッチできる 16 個のキーと値のペアのセット。 これは、オブジェクトに関する追加情報を構造化された形式で格納する場合に役立ちます。 キーの最大長は 64 文字、値の最大長は 512 文字です。 |
実行結果のストリーミング (プレビュー)
ツールの出力を送信した後、実行の実行または再開の結果をストリーミングします。 イベントは、次の手順を行った後でストリーミングできます。
結果をストリーミングするには、実行の作成中に "stream": true
を渡します。 応答は、Server-Sent イベントのストリーミングになります。
ストリーミングの例
from typing_extensions import override
from openai import AssistantEventHandler
# First, we create a EventHandler class to define
# how we want to handle the events in the response stream.
class EventHandler(AssistantEventHandler):
@override
def on_text_created(self, text) -> None:
print(f"\nassistant > ", end="", flush=True)
@override
def on_text_delta(self, delta, snapshot):
print(delta.value, end="", flush=True)
def on_tool_call_created(self, tool_call):
print(f"\nassistant > {tool_call.type}\n", flush=True)
def on_tool_call_delta(self, delta, snapshot):
if delta.type == 'code_interpreter':
if delta.code_interpreter.input:
print(delta.code_interpreter.input, end="", flush=True)
if delta.code_interpreter.outputs:
print(f"\n\noutput >", flush=True)
for output in delta.code_interpreter.outputs:
if output.type == "logs":
print(f"\n{output.logs}", flush=True)
# Then, we use the `create_and_stream` SDK helper
# with the `EventHandler` class to create the Run
# and stream the response.
with client.beta.threads.runs.stream(
thread_id=thread.id,
assistant_id=assistant.id,
instructions="Please address the user as Jane Doe. The user has a premium account.",
event_handler=EventHandler(),
) as stream:
stream.until_done()
切り捨てオブジェクト
実行前にスレッドを切り捨てる方法を制御します。 これを使用して、実行の初期コンテキスト ウィンドウを制御します。
名前 | 種類 | 内容 | 必須 |
---|---|---|---|
type |
string | スレッドに使用する切り捨て戦略。 既定値は、auto です。 last_messages に設定すると、スレッドはスレッド内の n 個までの最新のメッセージを残して切り捨てられます。 auto に設定すると、スレッドの途中にあるメッセージが、モデルのコンテキスト長 max_prompt_tokens に合わせて削除されます。 |
はい |
last_messages |
integer | 実行のコンテキストを構築するときのスレッドからの最新のメッセージの数。 | いいえ |
メッセージ差分オブジェクト
メッセージの差分を表します。 たとえば、ストリーミング中にメッセージのフィールドが変更された場合などです。
名前 | 種類 | 説明 |
---|---|---|
id |
string | メッセージの識別子。API エンドポイントで参照できます。 |
object |
string | オブジェクトの種類。これは常に thread.message.delta です。 |
delta |
オブジェクト | メッセージ上で変更されたフィールドを含む差分。 |
実行ステップ差分オブジェクト
実行ステップの差分を表します。 たとえば、ストリーミング中に実行ステップでフィールドが変更された場合などです。
名前 | 種類 | 説明 |
---|---|---|
id |
string | 実行ステップの識別子。API エンドポイントで参照できます。 |
object |
string | オブジェクトの種類。これは常に thread.run.step.delta です。 |
delta |
オブジェクト | 実行ステップで変更されたフィールドを含む差分。 |
アシスタント ストリーム イベント
実行をストリーミングするときに出力されたイベントを表します。 server-sent イベント ストリーム内の各イベントには、イベントとデータ プロパティがあります。
event: thread.created
data: {"id": "thread_123", "object": "thread", ...}
イベントは、新しいオブジェクトが作成されるたび、新しい状態に遷移するたび、または分割 (差分) してストリーミングされるたびに出力されます。 たとえば、thread.run.created
は新しい実行が作成されたときに、thread.run.completed
は実行が完了したときに出力されます。 実行中にアシスタントがメッセージの作成を選択した場合は、thread.message.created
イベントや thread.message.in_progress
イベントに加え、多くのスレッドを出力します。message.delta
イベント、最後に thread.message.completed
イベントもあります。
名前 | 種類 | 説明 |
---|---|---|
thread.created |
data はスレッドです。 |
新しいスレッドが作成されると発生します。 |
thread.run.created |
data は実行です。 |
新しい実行が作成されると発生します。 |
thread.run.queued |
data は実行です。 |
実行がキューに登録されている状態に移行すると発生します。 |
thread.run.in_progress |
data は実行です。 |
実行が in_progress 状態に移行すると発生します。 |
thread.run.requires_action |
data は実行です。 |
実行が requires_action 状態に移行すると発生します。 |
thread.run.completed |
data は実行です。 |
実行が完了すると発生します。 |
thread.run.failed |
data は実行です。 |
実行が失敗すると発生します。 |
thread.run.cancelling |
data は実行です。 |
実行が cancelling 状態に移行すると発生します。 |
thread.run.cancelled |
data は実行です。 |
実行が取り消されると発生します。 |
thread.run.expired |
data は実行です。 |
実行の有効期限が切れると発生します。 |
thread.run.step.created |
data は実行ステップです。 |
実行ステップが作成されると発生します。 |
thread.run.step.in_progress |
data は実行ステップです。 |
実行ステップが in_progress 状態に移行すると発生します。 |
thread.run.step.delta |
data は、実行ステップの差分です。 |
実行ステップの一部がストリーミングされているときに発生します。 |
thread.run.step.completed |
data は実行ステップです。 |
実行ステップが完了すると発生します。 |
thread.run.step.failed |
data は実行ステップです。 |
実行ステップが失敗すると発生します。 |
thread.run.step.cancelled |
data は実行ステップです。 |
実行ステップが取り消されると発生します。 |
thread.run.step.expired |
data は実行ステップです。 |
実行ステップの有効期限が切れると発生します。 |
thread.message.created |
data はメッセージです。 |
メッセージが作成されると発生します。 |
thread.message.in_progress |
data はメッセージです。 |
メッセージが in_progress 状態に移行すると発生します。 |
thread.message.delta |
data はメッセージの差分です。 |
メッセージの一部がストリーミングされているときに発生します。 |
thread.message.completed |
data はメッセージです。 |
メッセージが完了すると発生します。 |
thread.message.incomplete |
data はメッセージです。 |
メッセージが完成前に終了すると発生します。 |
error |
data はエラーです。 |
エラーが発生すると発生します。 これは、内部サーバー エラーまたはタイムアウトが原因で発生することがあります。 |
done |
data は [DONE] です |
ストリーミングが終了すると発生します。 |