Библиотека для работы с Yandex GPT API с поддержкой синхронного и асинхронного режимов, реализацией потоковой генерации текста и возможностью распознавания речи с определением говорящего
Project description
Библиотека для работы с Yandex GPT API и SpeechKit API
Эта библиотека предоставляет удобные функции для взаимодействия с Yandex GPT API и Yandex SpeechKit API. Она поддерживает как синхронный, так и асинхронный режимы работы, включая потоковую генерацию текста и расширенные возможности по распознаванию речи с определением говорящего.
Особенности
Yandex GPT API
- Синхронный режим - для простых запросов с блокирующим выполнением
- Асинхронный режим - для эффективной обработки нескольких запросов без блокировки
- Потоковый режим - для получения ответов по мере их генерации (синхронный)
- Асинхронный потоковый режим - с использованием библиотеки httpx
- Обработка JSON-ответов - корректное извлечение текста из структурированных ответов
- Параллельное выполнение запросов - для одновременной обработки нескольких промптов
- Отладочный режим - для детального анализа запросов и ответов
Yandex SpeechKit STT v3 API
- Распознавание аудиофайлов - поддержка отправки аудиофайлов на распознавание
- Синхронный режим - для простой отправки файлов и получения результатов
- Асинхронный режим - для более эффективной работы без блокировки исполнения
- Гибкие настройки распознавания - полная поддержка параметров API (модель, язык, формат и т.д.)
- Работа с разными форматами аудио - MP3, WAV и другие поддерживаемые форматы
- Анализ речи - возможность использовать различные аналитические функции API
- Разметка говорящих - поддержка диаризации речи с идентификацией разных говорящих
- Работа с метками каналов - поддержка параметра channel_tag для разделения разных дикторов
- Автоматическая конвертация аудио - преобразование стерео в моно для разметки говорящих
Требования
- Python 3.7+
- Библиотеки:
- requests - для синхронных запросов
- httpx - для асинхронных запросов
- python-dotenv - для работы с переменными окружения
- asyncio - для асинхронного выполнения
Установка
pip install yandex-gpt-api
Настройка
Для работы с API необходимо создать файл .env в корне проекта со следующими переменными:
API_KEY=ваш_api_ключ
FOLDER_ID=идентификатор_ваш_папки_в_облаке
# ИЛИ
IAM_TOKEN=ваш_iam_токен
FOLDER_ID=идентификатор_ваш_папки_в_облаке
Примеры использования
GPT API
Синхронный режим
from yandex_gpt_api import gpt
import json
import os
# Настройка аутентификации
if os.getenv('API_KEY'):
api_key = os.environ['API_KEY']
headers = {'Authorization': f'Api-Key {api_key}'}
else:
iam_token = os.environ['IAM_TOKEN']
headers = {'Authorization': f'Bearer {iam_token}'}
# Подготовка сообщений
messages = [
{"role": "system", "text": "Вы - опытный научный сотрудник"},
{"role": "user", "text": "Расскажи кратко о квантовой механике"}
]
# Выполнение запроса
response = gpt(headers, messages, temperature=0.7, max_tokens=1000)
# Разбор ответа
data = json.loads(response)
if 'result' in data and 'alternatives' in data['result']:
for alt in data['result']['alternatives']:
if 'message' in alt and 'text' in alt['message']:
text = alt['message']['text']
print(f"Ответ: {text}")
Асинхронный потоковый режим
import asyncio
from yandex_gpt_api import gpt_streaming_httpx
import os
# Настройка аутентификации
if os.getenv('API_KEY'):
api_key = os.environ['API_KEY']
headers = {'Authorization': f'Api-Key {api_key}'}
else:
iam_token = os.environ['IAM_TOKEN']
headers = {'Authorization': f'Bearer {iam_token}'}
# Подготовка сообщений
messages = [
{"role": "system", "text": "Вы - полезный ассистент"},
{"role": "user", "text": "Составь список из 5 интересных фактов о космосе"}
]
async def main():
# Получаем ответ по частям
print("Получаем ответ: ", end="", flush=True)
async for chunk in gpt_streaming_httpx(headers, messages):
print(chunk, end="", flush=True)
print()
asyncio.run(main())
SpeechKit STT v3 API
Синхронный режим распознавания файла
from yandex_gpt_api import stt_recognize_file, stt_get_recognition
import json
import os
import time
# Настройка аутентификации
if os.getenv('API_KEY'):
api_key = os.environ['API_KEY']
headers = {'Authorization': f'Api-Key {api_key}'}
else:
iam_token = os.environ['IAM_TOKEN']
headers = {'Authorization': f'Bearer {iam_token}'}
# Путь к аудиофайлу
file_path = 'путь_к_аудио_файлу.mp3'
# Настройка параметров распознавания
audio_format = {
"containerAudio": {
"containerAudioType": "MP3"
}
}
language_restriction = {
"restrictionType": "WHITELIST",
"languageCode": ["ru-RU"]
}
# Отправляем файл на распознавание
response = stt_recognize_file(
auth_headers=headers,
content=file_path,
audio_format=audio_format,
language_restriction=language_restriction
)
# Получаем ID операции
operation_id = response['id']
print(f"Операция запущена с ID: {operation_id}")
# Ждем, пока файл будет обработан (обычно нужно 30+ секунд)
print("Ожидание обработки файла...")
time.sleep(30)
# Получаем результат распознавания
recognition_result = stt_get_recognition(headers, operation_id)
# Извлекаем распознанный текст
if 'final' in recognition_result:
alternatives = recognition_result['final'].get('alternatives', [])
if alternatives:
text = alternatives[0].get('text', '')
print(f"Распознанный текст: {text}")
Асинхронный режим распознавания файла
import asyncio
from yandex_gpt_api import stt_recognize_file_async, stt_get_recognition_async
import os
# Настройка аутентификации
if os.getenv('API_KEY'):
api_key = os.environ['API_KEY']
headers = {'Authorization': f'Api-Key {api_key}'}
else:
iam_token = os.environ['IAM_TOKEN']
headers = {'Authorization': f'Bearer {iam_token}'}
async def recognize_audio():
# Путь к аудиофайлу
file_path = 'путь_к_аудио_файлу.mp3'
# Настройка параметров распознавания
audio_format = {
"containerAudio": {
"containerAudioType": "MP3"
}
}
language_restriction = {
"restrictionType": "WHITELIST",
"languageCode": ["ru-RU"]
}
# Отправляем файл на распознавание асинхронно
response = await stt_recognize_file_async(
auth_headers=headers,
content=file_path,
audio_format=audio_format,
language_restriction=language_restriction
)
operation_id = response['id']
print(f"Операция запущена с ID: {operation_id}")
# Ждем обработки файла
await asyncio.sleep(30)
# Получаем результат распознавания асинхронно
recognition_result = await stt_get_recognition_async(headers, operation_id)
# Извлекаем распознанный текст
if 'final' in recognition_result:
alternatives = recognition_result['final'].get('alternatives', [])
if alternatives:
text = alternatives[0].get('text', '')
print(f"Распознанный текст: {text}")
asyncio.run(recognize_audio())
Распознавание с разметкой говорящих (диаризация)
from yandex_gpt_api import stt_recognize_with_speaker_labeling, stt_get_recognition
import json
import os
import time
# Настройка аутентификации
if os.getenv('API_KEY'):
api_key = os.environ['API_KEY']
headers = {'Authorization': f'Api-Key {api_key}'}
else:
iam_token = os.environ['IAM_TOKEN']
headers = {'Authorization': f'Bearer {iam_token}'}
# Путь к аудиофайлу
file_path = 'путь_к_аудио_файлу.mp3'
# Отправляем файл на распознавание с разметкой говорящих
# Параметр channel_tag можно использовать для метки каналов
response = stt_recognize_with_speaker_labeling(
auth_headers=headers,
content=file_path,
channel_tag="1", # Метка канала
convert_stereo_to_mono=True # Автоматически преобразовать стерео в моно если нужно
)
# Получаем ID операции
operation_id = response['id']
print(f"Операция запущена с ID: {operation_id}")
# Ждем, пока файл будет обработан
print("Ожидание обработки файла...")
time.sleep(30)
# Получаем результат распознавания
recognition_result = stt_get_recognition(headers, operation_id)
# Проверяем наличие channel_tag в результате
if 'result' in recognition_result and 'channelTag' in recognition_result['result']:
channel_tag = recognition_result['result']['channelTag']
print(f"Метка канала: {channel_tag}")
# Извлекаем распознанный текст
if 'result' in recognition_result and 'final' in recognition_result['result']:
alternatives = recognition_result['result']['final'].get('alternatives', [])
if alternatives:
text = alternatives[0].get('text', '')
print(f"Распознанный текст: {text}")
Асинхронное распознавание с разметкой говорящих
import asyncio
from yandex_gpt_api import stt_recognize_with_speaker_labeling_async, stt_get_recognition_async
import os
# Настройка аутентификации
if os.getenv('API_KEY'):
api_key = os.environ['API_KEY']
headers = {'Authorization': f'Api-Key {api_key}'}
else:
iam_token = os.environ['IAM_TOKEN']
headers = {'Authorization': f'Bearer {iam_token}'}
async def recognize_audio_with_speaker_labeling():
# Путь к аудиофайлу
file_path = 'путь_к_аудио_файлу.mp3'
# Отправляем файл на распознавание с разметкой говорящих
response = await stt_recognize_with_speaker_labeling_async(
auth_headers=headers,
content=file_path,
channel_tag="1", # Метка канала
convert_stereo_to_mono=True # Автоматически преобразовать стерео в моно если нужно
)
operation_id = response['id']
print(f"Операция запущена с ID: {operation_id}")
# Ждем результатов асинхронно
print("Ожидание обработки файла...")
await asyncio.sleep(30) # Даем время на обработку
# Получаем результаты распознавания
recognition_result = await stt_get_recognition_async(headers, operation_id)
if 'result' in recognition_result and 'channelTag' in recognition_result['result']:
channel_tag = recognition_result['result']['channelTag']
print(f"Метка канала: {channel_tag}")
if 'result' in recognition_result and 'final' in recognition_result['result']:
alternatives = recognition_result['result']['final'].get('alternatives', [])
if alternatives:
text = alternatives[0].get('text', '')
print(f"Распознанный текст: {text}")
# Запуск асинхронной функции
asyncio.run(recognize_audio_with_speaker_labeling())
Примеры
В репозитории есть примеры использования библиотеки:
async_chat_example.py- демонстрирует использование асинхронных функций GPT API, включая потоковый режимtest_yandex_gpt_api.py- автотест для проверки работы функций GPT APItest_yandex_stt_api.py- автотест для проверки работы функций SpeechKit STT API
Запуск примеров и тестов
# Запуск асинхронного чата
python async_chat_example.py
# Запуск автотестов GPT API
python test_yandex_gpt_api.py
# Запуск автотестов SpeechKit STT API
python test_yandex_stt_api.py
Лицензия
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yandex_gpt_api-0.1.2.tar.gz.
File metadata
- Download URL: yandex_gpt_api-0.1.2.tar.gz
- Upload date:
- Size: 33.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c2797884accb61f390637770d206c9eec305837308108472fee4394ce339981e
|
|
| MD5 |
508944740dd0fe6f5a2eaeb5617e5b5c
|
|
| BLAKE2b-256 |
ba9893cd42922adbb2e58ed8e894fabb535523e26dd25b33c7a0a33b7cdd4491
|
File details
Details for the file yandex_gpt_api-0.1.2-py3-none-any.whl.
File metadata
- Download URL: yandex_gpt_api-0.1.2-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a01fc2adf8b56c0082b99ec902a36a4b34739a434db3f8ae8e8cb35b041d53b8
|
|
| MD5 |
61e8012cff84354d789e5c9f2524e264
|
|
| BLAKE2b-256 |
bb8f14a37d1d3407c690e42e847ff833e1f6880aaa4f18dca830bb867efa5d07
|