# для примера требуется клиентская библиотека websocket:
# pip install websocket-client
импортировать ОС
импортировать JSON
импортировать веб-сокет
url = "ws://yossapi.com/v1/realtime?model=gpt-4o-realtime-preview"
заголовки = [
«Авторизация: предъявитель sk-xxx»,
«OpenAI-Beta: realtime=v1»
]
защита decode_unicode_string(s):
"""Декодирование строк Юникода, чтобы сделать их читаемыми на китайском языке"""
попробуйте:
# Сначала попробуйте декодировать напрямую
если isinstance(s, байты):
вернуть s.decode('utf-8')
# Если это искаженная строка, сначала закодируйте ее, а затем декодируйте.
вернуть s.encode('latin1').decode('utf-8')
кроме исключения как e:
print(f"Ошибка декодирования: {e}")
вернуть с
защита on_error(ws, ошибка):
print("\n=== сообщение об ошибке ===")
печать(f"{ошибка}")
def on_close(ws, close_status_code, close_msg):
print("\n=== соединение закрыто ===")
print(f"Код состояния: {close_status_code}")
print(f"Закрыть сообщение: {close_msg}")
защита on_open(ws):
print("\n=== Соединение установлено ===")
событие = {
"type": "response.create",
"ответ": {
"модальности": ["текст"],
"instructions": "Пожалуйста, помогите пользователю."
}
}
print("\n=== Отправить сообщение ===")
print(json.dumps(event, обеспечения_ascii=False, отступ=2))
ws.send(json.dumps(событие))
Защиту on_message (WS, сообщение):
print("\n=== сообщение получено ===")
попробуйте:
данные = json.loads(сообщение)
# Если есть сообщение об ошибке, декодируйте и отобразите его на китайском языке.
если «ошибка» в данных и «сообщение» в данных ['ошибка']:
данные['ошибка']['сообщение'] = decode_unicode_string(данные['ошибка']['сообщение'])
print(json.dumps(данные, обеспечения_ascii=False, отступ=2))
# Если это сообщение об ошибке, дополнительно отобразите упрощенную версию
если data.get('type') == 'ошибка':
print("\n=== Сводка ошибок ===")
print(f"Тип ошибки: {data['error'].get('type', 'unknown')}")
print(f"Код ошибки: {data['error'].get('код', 'неизвестно')}")
error_message = decode_unicode_string(data['error'].get('message', 'unknown'))
print(f"Сообщение об ошибке: {error_message}")
кроме json.JSONDecodeError как e:
print(f"Не удалось проанализировать сообщение: {message}")
print(f"Ошибка: {e}")
# Включить журналы веб-сокетов, но отображать только ключевую информацию
websocket.enableTrace (ложь)
ws = websocket.WebSocketApp(
URL,
заголовок = заголовки,
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close
)
print("\n=== Начать соединение ===")
print(f"Адрес подключения: {url}")
ws.run_forever()