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 実行の状態。queuedin_progressrequires_actioncancellingcancelledfailedcompleted、または 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_progressqueued の場合)、この値は 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_progresscancelledfailedcompleted、または 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] です ストリーミングが終了すると発生します。