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

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

Сообщение Anonymous »

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

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

Это мое определение функции и пример обновления моего сеанса для инициализации.
Определение функции

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

{
"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"]
}
}
Обновление сеанса (

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

session.update
)

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

{
"type": "session.update",
"session": {
"type": "realtime",
"model": "gpt-realtime",
"audio": {
"input": {
"turn_detection": { "type": "server_vad" }
},
"output": {
"voice": VOICE
}
},
"instructions": "",
"tools": [CaptureOrderInfo],
"tool_choice": "none"
}
}
Однако, когда я запрашиваю внеполосный (OOB) ответ с помощью моей функции (которая уже была инициализирована с помощью моего основного приглашения), я всегда получаю пустой ответ. Ответ возвращает {}.
Ручной внеполосный вызов функции (

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

response.create
)

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

{
"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»