> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sunra.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Python

[![PyPI - Версия](https://img.shields.io/pypi/v/sunra_client)](https://pypi.org/project/sunra_client)

### Введение

Клиентская библиотека для Python предлагает простой в использовании интерфейс для взаимодействия со службами Sunra.

### Установка

Чтобы интегрировать клиент в свой проект, установите его с помощью pip:

```bash theme={null}
pip install sunra-client
```

### Функции

#### Вызов конечных точек

Sunra управляет запросами к конечным точкам через систему очередей, обеспечивая надежность и масштабируемость. Используйте метод `subscribe`, чтобы отправить запрос и дождаться результата.

**Пример:**

```python theme={null}
import sunra_client

result = sunra_client.subscribe(
    "black-forest-labs/flux-kontext-pro/text-to-image",
    arguments={
    	"prompt": 'Приморский городок в стиле студии Ghibli с разноцветными домами, развевающимся бельем и кошками, спящими на подоконниках.',
    	"width": 1024,
    	"height": 768,
    	"output_format": 'jpeg'
    },
    with_logs=True,
    on_enqueue=print,
    on_queue_update=print,
)
print(result)
```

#### Управление очередью

Управляйте своими запросами с помощью этих методов:

##### Отправка запроса

Отправьте запрос и получите `request_id` для последующего использования.

**Пример:**

```python theme={null}
import sunra_client

handler = sunra_client.submit(
    "black-forest-labs/flux-kontext-pro/text-to-image",
    arguments={
      "prompt": 'Приморский городок в стиле студии Ghibli с разноцветными домами, развевающимся бельем и кошками, спящими на подоконниках.',
      "width": 1024,
      "height": 768,
      "output_format": 'jpeg'
    },
    webhook_url="https://optional.webhook.url/for/results",
)
request_id = handler.request_id
```

##### Проверка статуса запроса

Получите статус запроса.

**Пример:**

```python theme={null}
import sunra_client
status = sunra_client.status(request_id, with_logs=True)
```

##### Получение результатов запроса

Получите результат выполненного запроса.

**Пример:**

```python theme={null}
import sunra_client
result = sunra_client.result(request_id)
```

#### Загрузка файлов

Загружайте файлы для получения URL-адресов для использования в асинхронных запросах. Это необходимо для моделей, которые обрабатывают файлы, таких как преобразователи изображения в видео или речи в текст.

<Note>Максимальный размер файла: 100 МБ</Note>

##### Загрузка локального файла

Вы можете легко загрузить файл из локальной файловой системы. Это полезно для скриптов или приложений, которые обрабатывают локальные данные.

```python theme={null}
import sunra_client

# Инициализируем синхронный клиент
client = sunra_client.SyncClient()

try:
  # Загружаем файл по заданному пути
  file_url = client.upload_file(path="путь/к/вашему/изображению.png")
  print(f"Файл успешно загружен: {file_url}")
  # Этот URL-адрес теперь можно использовать с конечной точкой модели.
except FileNotFoundError:
  print("Ошибка: файл не найден по указанному пути.")
except Exception as e:
  print(f"Произошла ошибка: {e}")
```

##### Загрузка данных в памяти

Вы также можете загружать данные, которые хранятся в памяти, например, содержимое изображения, созданного с помощью PIL (Pillow), или файл, полученный в веб-запросе.

<CodeGroup>
  ```python Изображение PIL theme={null}
  import sunra_client
  from PIL import Image
  import io

  # Инициализируем синхронный клиент
  client = sunra_client.SyncClient()

  # Создаем изображение в памяти, например, с помощью Pillow
  image = Image.new("RGB", (600, 400), color = 'red')
  byte_arr = io.BytesIO()
  image.save(byte_arr, format='PNG')
  image_bytes = byte_arr.getvalue()

  # Загружаем данные изображения в памяти с помощью метода `upload`
  image_url = client.upload(
      data=image_bytes,
      content_type="image/png"
  )
  print(f"Изображение успешно загружено: {image_url}")
  ```

  ```python Необработанные байты theme={null}
  import sunra_client

  # Инициализируем синхронный клиент
  client = sunra_client.SyncClient()

  # Некоторые необработанные байты, которые могут быть получены при чтении файла или веб-запросе
  raw_data = b"некоторое содержимое файла здесь"

  # Загружаем необработанные байты
  data_url = client.upload(
      data=raw_data,
      content_type="application/octet-stream"
  )
  print(f"Данные успешно загружены: {data_url}")
  ```
</CodeGroup>

### Поддержка

Присоединяйтесь к нашему сообществу для помощи или обсуждений:

* **Сообщество Discord**: [Присоединяйтесь к нам](https://discord.gg/897qCzvCcU)
* **Репозиторий GitHub**: [Посетите здесь](https://github.com/sunra-ai/sunra-clients)

Мы здесь, чтобы помочь вам!
