Как вручную вызвать функцию в API OpenAI RealtimePython

Программы на Python
Ответить
Anonymous
 Как вручную вызвать функцию в API OpenAI Realtime

Сообщение Anonymous »

Я использую OpenAI Realtime с LiveKit для общения со своими клиентами. У меня есть несколько функций, которые я хочу вызывать вне канала во время взаимодействия, поэтому в файле session.update я передаю свой список инструментов и устанавливаю для параметраtool_choice значение none (чтобы я мог вызывать их вручную).

Мое намерение состоит в том, чтобы не модель автоматически вызывала инструменты. Вместо этого я хочу явно запустить определенную функцию, используя response.create с Tool_choice.
Это моя функция, и это пример обновления моего сеанса для инициализации.

Код: Выделить всё

CaptureOrderInfo = {

Код: Выделить всё

“type”: “function”,

Код: Выделить всё

“name”: “CaptureOrderInfo”,

Код: Выделить всё

“description”: “Extract order details mentioned in the conversation.”,

Код: Выделить всё

“parameters”: {

Код: Выделить всё

“type”: “object”,

Код: Выделить всё

“properties”: {

Код: Выделить всё

“order_details”: {

Код: Выделить всё

“type”: “string”,

Код: Выделить всё

“description”: “What the customer ordered”

Код: Выделить всё

“phone_number”: {

Код: Выделить всё

“type”: “string”,

Код: Выделить всё

“description”: “Customer phone number”

Код: Выделить всё

“discount_coupon”: {

Код: Выделить всё

“type”: “string”,

Код: Выделить всё

“description”: “Coupon or discount mentioned”

Код: Выделить всё

“required”: [“phone_number”]
и вот как я обновляю свой сеанс

Код: Выделить всё


{

"type": "session.update",
"session": {
"type": "realtime",
"model": "gpt-realtime",
"audio": {
"input": {
"turn_detection": {"type": "server_vad"},
},
"output": {
"voice": VOICE

}
},

"instructions": f"{Main prompt}"
"tools": [CaptureOrderInfo],
"tool_choice": "none",
}
}
Однако, когда я запрашиваю внеполосный ответ с помощью моей функции (которая уже была инициализирована с помощью моего основного приглашения), я всегда получаю пустой ответ. Например, ответ возвращает {}
Вот как я отправляю вызов ручной функции OOB

Код: Выделить всё

“type”: “response.create”,

Код: Выделить всё

“response”: {

Код: Выделить всё

“conversation”: “none”,

Код: Выделить всё

“output_modalities”: [“text”],

Код: Выделить всё

“tools”: [“CaptureOrderInfo”],

Код: Выделить всё

“metadata”: {

Код: Выделить всё

“topic”: “
CaptureOrderInfo

Код: Выделить всё

“tool_choice”: {

Код: Выделить всё

“type”: “function”,

Код: Выделить всё

“name”: “CaptureOrderInfo”
Тем не менее, я всегда получаю:

Код: Выделить всё

“type”: “response.done”,

Код: Выделить всё

“response”: {

Код: Выделить всё

“object”: “realtime.response”,

Код: Выделить всё

“status”: “completed”,

Код: Выделить всё

“status_details”: null,

Код: Выделить всё

“output”: [

Код: Выделить всё

“type”: “message”,

Код: Выделить всё

“status”: “completed”,

Код: Выделить всё

“role”: “assistant”,

Код: Выделить всё

“content”: [

Код: Выделить всё

“type”: “output_text”,

Код: Выделить всё

“text”: “{}”

Код: Выделить всё

“conversation_id”: null,

Код: Выделить всё

“output_modalities”: [“text”],

Код: Выделить всё

“max_output_tokens”: “inf”,

Код: Выделить всё

“audio”: {

Код: Выделить всё

“metadata”: {

Код: Выделить всё

“topic”: “CaptureOrderInfo”
Я был бы признателен, если бы кто-нибудь мог явно поправить меня в том, как правильно запросить выполнение моей функции так, как я намереваюсь.

Подробнее здесь: https://stackoverflow.com/questions/798 ... altime-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»