Справочник по API помощников (предварительная версия)

Примечание.

  • Поиск по файлам может получать до 10 000 файлов на помощника — 500 раз больше, чем раньше. Это быстрый процесс, который поддерживает параллельные многопоточные поисковые запросы, а также функции расширенного повторного ранжирования и перезаписи запросов.
    • Векторное хранилище — это новый объект в API. После добавления файла в векторное хранилище он автоматически анализируется, делится на блоки и кодируется в векторном представлении, чтобы подготовить к поиску по содержимому. Векторные хранилища можно использовать между разными помощниками и потоками, упрощая управление файлами и выставление счетов.
  • Мы добавили поддержку tool_choice параметра, который можно использовать для принудительного использования определенного средства (например, поиска файлов, интерпретатора кода или функции) в определенном запуске.

В этой статье приведена справочная документация по Python и REST для нового API Помощников (предварительная версия). Дополнительные пошаговые инструкции приведены в руководстве по началу работы.

Создать выполнение

POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs?api-version=2024-08-01-preview

Создайте запуск.

Параметр пути

Параметр Type Обязательно Описание
thread_id строка Обязательное поле Идентификатор потока для создания сообщения.

Текст запроса

Имя. Type Обязательно Описание
assistant_id строка Обязательное поле Идентификатор помощника, используемого для выполнения этого выполнения.
model строка или null Необязательно Имя развертывания модели, используемое для выполнения этого запуска. Если здесь указано значение, оно переопределит имя развертывания модели, связанное с помощником. В противном случае будет использоваться имя развертывания модели, связанное с помощником.
instructions строка или null Необязательно Переопределяет инструкции помощника. Это полезно для изменения поведения на основе каждого запуска.
additional_instructions строка Необязательно Добавляет дополнительные инструкции в конце инструкций для выполнения. Это полезно для изменения поведения на основе каждого запуска без переопределения других инструкций.
additional_messages array Необязательно Добавляет дополнительные сообщения в поток перед созданием запуска.
tools массив или null Необязательно Переопределите средства, которые помощник может использовать для этого запуска. Это полезно для изменения поведения на основе каждого запуска.
metadata map Необязательно Набор из 16 пар "ключ-значение", которые могут быть присоединены к объекту. Это может быть полезно для хранения дополнительных сведений об объекте в структурированном формате. Ключи могут содержать не более 64 символов, а значения могут содержать не более 512 символов.
temperature number Необязательно Какая температура выборки используется в диапазоне от 0 до 2. Более высокие значения, такие как 0,8, делают выходные данные более случайными, а более низкие значения, такие как 0,2, делают его более ориентированным и детерминированным. По умолчанию 1.
top_p number Необязательно Альтернативой выборке с температурой является так называемая выборка ядра, где модель рассматривает результаты маркеров с top_p всего массива значений вероятности. Таким образом, 0,1 означает, что учитываются только маркеры, входящие в верхние 10% массива значений вероятности. Как правило, мы рекомендуем изменить либо это значение, либо температуру, но не оба. По умолчанию 1.
stream boolean необязательно Если trueвозвращает поток событий, которые происходят во время событий запуска от имени сервера, завершая выполнение в состоянии терминала с сообщением data: [DONE] .
max_prompt_tokens integer необязательно Максимальное количество маркеров завершения, которые могут использоваться в ходе выполнения. Выполнение сделает все возможное, чтобы использовать только количество маркеров завершения, указанных в нескольких поворотах выполнения. Если выполнение превышает указанное число маркеров завершения, выполнение завершится состоянием incomplete.
max_completion_tokens integer необязательно Максимальное количество маркеров завершения, которые могут использоваться в ходе выполнения. Выполнение сделает все возможное, чтобы использовать только количество маркеров завершения, указанных в нескольких поворотах выполнения. Если выполнение превышает указанное число маркеров завершения, выполнение завершится состоянием incomplete.
truncation_strategy усечениеObject необязательно Определяет, как поток будет усечен до выполнения. Используйте это для управления начальным окном контекста выполнения.
tool_choice Строка или объект необязательно Определяет, какое средство (если таковое) вызывается моделью. Значение none означает, что модель не вызывает никаких инструментов и вместо этого создает сообщение. auto является значением по умолчанию и означает, что модель может выбирать между созданием сообщения или вызовом средства. Указание определенного инструмента, например {"type": "file_search"} или {"type": "function", "function": {"name": "my_function"}} принудительное вызов модели.
response_format Строка или объект необязательно Указывает формат, который модель должна выводить. Совместим с GPT-4 Turbo и всеми моделями GPT-3.5 Turbo с тех пор gpt-3.5-turbo-1106.
Параметр включения { "type": "json_object" } режима JSON, который гарантирует, что модель создает сообщение является допустимым JSON.
Важно: при использовании режима JSON необходимо также указать модели создавать JSON самостоятельно с помощью системного или пользовательского сообщения. Без этого модель может создать незавернутый поток пробелов до тех пор, пока поколение не достигнет предела маркера, в результате чего длительный и, казалось бы, "застрявший" запрос. Кроме того, обратите внимание, что содержимое сообщения может быть частично отрезано, если finish_reason="length", указывающее, что превышено поколение max_tokens или беседа превысила максимальную длину контекста.

Возвраты

Объект выполнения.

Пример создания запроса на выполнение

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

Создайте поток и запустите его в одном запросе.

Текст запроса

Имя. Type Обязательно Описание
assistant_id строка Обязательное поле Идентификатор помощника, используемого для выполнения этого выполнения.
thread объект Необязательно
model строка или null Необязательно Идентификатор имени развертывания модели, используемого для выполнения этого запуска. Если здесь указано значение, оно переопределит имя развертывания модели, связанное с помощником. В противном случае будет использоваться имя развертывания модели, связанное с помощником.
instructions строка или null Необязательно Переопределите системное сообщение помощника по умолчанию. Это полезно для изменения поведения на основе каждого запуска.
tools массив или null Необязательно Переопределите средства, которые помощник может использовать для этого запуска. Это полезно для изменения поведения на основе каждого запуска.
metadata map Необязательно Набор из 16 пар "ключ-значение", которые могут быть присоединены к объекту. Это может быть полезно для хранения дополнительных сведений об объекте в структурированном формате. Ключи могут содержать не более 64 символов, а значения могут содержать не более 512 символов.
temperature number Необязательно Какая температура выборки используется в диапазоне от 0 до 2. Более высокие значения, такие как 0,8, делают выходные данные более случайными, а более низкие значения, такие как 0,2, делают его более ориентированным и детерминированным. По умолчанию 1.
top_p number Необязательно Альтернативой выборке с температурой является так называемая выборка ядра, где модель рассматривает результаты маркеров с top_p всего массива значений вероятности. Таким образом, 0,1 означает, что учитываются только маркеры, входящие в верхние 10% массива значений вероятности. Как правило, мы рекомендуем изменить либо это значение, либо температуру, но не оба. По умолчанию 1.
stream boolean необязательно Если trueвозвращает поток событий, которые происходят во время событий запуска от имени сервера, завершая выполнение в состоянии терминала с сообщением data: [DONE] .
max_prompt_tokens integer необязательно Максимальное количество маркеров завершения, которые могут использоваться в ходе выполнения. Выполнение сделает все возможное, чтобы использовать только количество маркеров завершения, указанных в нескольких поворотах выполнения. Если выполнение превышает указанное число маркеров завершения, выполнение завершится состоянием incomplete.
max_completion_tokens integer необязательно Максимальное количество маркеров завершения, которые могут использоваться в ходе выполнения. Выполнение сделает все возможное, чтобы использовать только количество маркеров завершения, указанных в нескольких поворотах выполнения. Если выполнение превышает указанное число маркеров завершения, выполнение завершится состоянием incomplete.
truncation_strategy усечениеObject необязательно Определяет, как поток будет усечен до выполнения. Используйте это для управления начальным окном контекста выполнения.
tool_choice Строка или объект необязательно Определяет, какое средство (если таковое) вызывается моделью. Значение none означает, что модель не вызывает никаких инструментов и вместо этого создает сообщение. auto является значением по умолчанию и означает, что модель может выбирать между созданием сообщения или вызовом средства. Указание определенного инструмента, например {"type": "file_search"} или {"type": "function", "function": {"name": "my_function"}} принудительное вызов модели.
response_format Строка или объект необязательно Указывает формат, который модель должна выводить. Совместим с GPT-4 Turbo и всеми моделями GPT-3.5 Turbo с тех пор gpt-3.5-turbo-1106.
Параметр включения { "type": "json_object" } режима JSON, который гарантирует, что модель создает сообщение является допустимым JSON.
Важно: при использовании режима JSON необходимо также указать модели создавать JSON самостоятельно с помощью системного или пользовательского сообщения. Без этого модель может создать незавернутый поток пробелов до тех пор, пока поколение не достигнет предела маркера, в результате чего длительный и, казалось бы, "застрявший" запрос. Кроме того, обратите внимание, что содержимое сообщения может быть частично отрезано, если finish_reason="length", указывающее, что превышено поколение max_tokens или беседа превысила максимальную длину контекста.

Возвраты

Объект выполнения.

Пример создания потока и выполнения запроса

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

Возвращает список запусков, принадлежащих потоку.

Параметр пути

Параметр Type Обязательно Описание
thread_id строка Обязательное поле Идентификатор потока, к которому принадлежит выполнение.

Параметры запроса

Имя. Type Обязательно Описание
limit integer Необязательно. Значение по умолчанию — значение 20 Ограничение количества возвращаемых объектов. Ограничение может быть от 1 до 100, а значение по умолчанию — 20.
order строка Необязательно. Значения по умолчанию для desc Сортировка по created_at метке времени объектов. asc для возрастания порядка и desc для убывающего порядка.
after строка Необязательно Курсор для использования в разбиении на страницы. После этого является идентификатором объекта, который определяет место в списке. Например, если вы делаете запрос списка и получаете 100 объектов, заканчивая obj_foo, последующий вызов может включать after=obj_foo, чтобы получить следующую страницу списка.
before строка Необязательно Курсор для использования в разбиении на страницы. прежде чем является идентификатором объекта, который определяет место в списке. Например, если вы делаете запрос списка и получаете 100 объектов, заканчивая obj_foo, последующий вызов может включать до=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

Возвращает список шагов, принадлежащих выполнению.

Параметры пути

Параметр Type Обязательно Описание
thread_id строка Обязательное поле Идентификатор потока, к которому принадлежит выполнение.
run_id строка Обязательное поле Идентификатор выполнения, связанного с инструкциями по выполнению для запроса.

параметры запроса.

Имя. Type Обязательно Описание
limit integer Необязательно. Значение по умолчанию — значение 20 Ограничение количества возвращаемых объектов. Ограничение может быть от 1 до 100, а значение по умолчанию — 20.
order строка Необязательно. Значения по умолчанию для desc Сортировка по created_at метке времени объектов. asc для возрастания порядка и desc для убывающего порядка.
after строка Необязательно Курсор для использования в разбиении на страницы. После этого является идентификатором объекта, который определяет место в списке. Например, если вы делаете запрос списка и получаете 100 объектов, заканчивая obj_foo, последующий вызов может включать after=obj_foo, чтобы получить следующую страницу списка.
before строка Необязательно Курсор для использования в разбиении на страницы. прежде чем является идентификатором объекта, который определяет место в списке. Например, если вы делаете запрос списка и получаете 100 объектов, заканчивая obj_foo, последующий вызов может включать до=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)

Извлекает запуск.

Параметры пути

Параметр Type Обязательно Описание
thread_id строка Обязательное поле Идентификатор выполняемого потока.
run_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

Извлекает шаг выполнения.

Параметры пути

Параметр Type Обязательно Описание
thread_id строка Обязательное поле Идентификатор потока, к которому принадлежит шаг выполнения и выполнения.
run_id строка Обязательное поле Идентификатор выполнения, к которому принадлежит шаг выполнения.
step_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

Изменяет выполнение.

Параметры пути

Параметр Type Обязательно Описание
thread_id строка Обязательное поле Идентификатор выполняемого потока.
run_id строка Обязательное поле Идентификатор запуска для изменения.

Текст запроса

Имя. Type Обязательно Описание
metadata map Необязательно Набор из 16 пар "ключ-значение", которые могут быть присоединены к объекту. Это может быть полезно для хранения дополнительных сведений об объекте в структурированном формате. Ключи могут содержать не более 64 символов, а значения могут содержать не более 512 символов.

Возвраты

Измененный объект выполнения , соответствующий указанному идентификатору.

Пример запроса на выполнение изменения

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, эта конечная точка может использоваться для отправки выходных данных из вызовов средства после их завершения. Все выходные данные должны быть отправлены в одном запросе.

Параметры пути

Параметр Type Обязательно Описание
thread_id строка Обязательное поле Идентификатор потока, к которому принадлежит этот запуск.
run_id строка Обязательное поле Идентификатор выполнения, требующего отправки выходных данных средства.

Текст запроса

Имя. Type Обязательно Описание
tool_outputs array Обязательное поле Список инструментов, для которых отправляются выходные данные.
stream boolean Необязательно Если trueвозвращает поток событий, которые происходят во время событий запуска от имени сервера, завершая выполнение в состоянии терминала с сообщением data: [DONE] .

Возвраты

Измененный объект выполнения , соответствующий указанному идентификатору.

Пример выходных данных средства отправки для выполнения запроса

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.

Параметры пути

Параметр Type Обязательно Описание
thread_id строка Обязательное поле Идентификатор потока, к которому принадлежит этот запуск.
run_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 строка Идентификатор, на который можно ссылаться в конечных точках API.
object строка Тип объекта, который всегда является thread.run.
created_at integer Метка времени Unix (в секундах) для момента создания запуска.
thread_id строка Идентификатор потока, выполняемого в рамках этого запуска.
assistant_id строка Идентификатор помощника, используемого для выполнения этого запуска.
status строка Состояние выполнения, которое может быть , , , , , cancelled, completedfailedили expired. cancellingrequires_actionin_progressqueued
required_action объект или null Сведения о действии, необходимом для продолжения выполнения. Значение NULL будет иметь значение NULL, если никаких действий не требуется.
last_error объект или null Последняя ошибка, связанная с этим выполнением. Значение NULL будет иметь значение NULL, если ошибки отсутствуют.
expires_at integer Метка времени Unix (в секундах) для истечения срока действия выполнения.
started_at целое число или null Метка времени Unix (в секундах) для начала выполнения.
cancelled_at целое число или null Метка времени Unix (в секундах) для момента отмены выполнения.
failed_at целое число или null Метка времени Unix (в секундах) для момента сбоя выполнения.
completed_at целое число или null Метка времени Unix (в секундах) для завершения выполнения.
model строка Имя развертывания модели, используемое помощником для этого запуска.
instructions строка Инструкции, используемые помощником для этого запуска.
tools array Список инструментов, используемых помощником для этого запуска.
file_ids array Список идентификаторов файлов, используемых помощником для этого запуска.
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 Статистика использования, связанная с выполнением. Это значение будет иметь значение NULL, если выполнение не находится в состоянии терминала (напримерin_progress, ). queued
truncation_strategy объект Определяет, как поток будет усечен до выполнения.
response_format строка Формат, который должна выводить модель. Совместим с GPT-4 Turbo и всеми моделями GPT-3.5 Turbo с тех пор gpt-3.5-turbo-1106.
tool_choice строка Определяет, какое средство (если таковое) вызывается моделью. none означает, что модель не вызывает средства и вместо этого создает сообщение. auto является значением по умолчанию и означает, что модель может выбирать между созданием сообщения или вызовом средства.

Запуск объекта шага

Представляет шаг в выполнении запуска.

Имя. Тип Описание:
id строка Идентификатор шага выполнения, на который можно ссылаться в конечных точках API.
object строка Тип объекта, который всегда является thread.run.step.
created_at integer Метка времени Unix (в секундах) для момента создания шага выполнения.
assistant_id строка Идентификатор помощника, связанного с шагом выполнения.
thread_id строка Идентификатор выполняемого потока.
run_id строка Идентификатор выполнения, на который выполняется этот шаг, является частью.
type строка Тип шага выполнения, который может быть message_creation или tool_calls.
status строка Состояние шага выполнения, которое может быть либо in_progress, либо .expiredcancelledfailedcompleted
step_details объект Сведения о шаге выполнения.
last_error объект или null Последняя ошибка, связанная с этим шагом выполнения. Значение 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 строка Стратегия усечения, используемая для потока. Значение по умолчанию — auto. Если задано значение last_messages, поток будет усечен до n последних сообщений в потоке. Если задано значение auto, сообщения в середине потока будут удалены, чтобы соответствовать длине контекста модели. max_prompt_tokens Да
last_messages integer Количество последних сообщений из потока при создании контекста для выполнения. No

Объект delta message

Представляет разностную строку сообщения. Например, все измененные поля в сообщении во время потоковой передачи.

Имя. Тип Описание:
id строка Идентификатор сообщения, на которое можно ссылаться в конечных точках API.
object строка Тип объекта, который всегда thread.message.deltaявляется .
delta объект Разностное значение, содержащее поля, измененные в сообщении.

Выполнение разностного объекта шага

Представляет разностную дельту шага выполнения. Например, все измененные поля на шаге выполнения во время потоковой передачи.

Имя. Тип Описание:
id строка Идентификатор шага выполнения, на который можно ссылаться в конечных точках API.
object строка Тип объекта, который всегда thread.run.step.deltaявляется .
delta объект Разностное значение, содержащее поля, измененные на шаге выполнения.

События потока помощника

Представляет событие, генерируемое при потоковой передаче запуска. Каждое событие в потоке событий, отправляемых сервером, имеет свойство события и данных:

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]. Происходит, когда поток заканчивается.