> ## 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 - Version](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": 'カラフルな家々、はためく洗濯物、窓辺で眠る猫たちがいる、スタジオジブリ風の海辺の町。',
        "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": 'カラフルな家々、はためく洗濯物、窓辺で眠る猫たちがいる、スタジオジブリ風の海辺の町。',
      "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>最大ファイルサイズ: 100MB</Note>

##### ローカルファイルのアップロード

ローカルファイルシステムから簡単にファイルをアップロードできます。これは、ローカルデータを処理するスクリプトやアプリケーションに便利です。

```python theme={null}
import sunra_client

# 同期クライアントを初期化する
client = sunra_client.SyncClient()

try:
  # 指定されたパスからファイルをアップロードする
  file_url = client.upload_file(path="path/to/your/image.png")
  print(f"ファイルが正常にアップロードされました: {file_url}")
  # この URL はモデルエンドポイントで使用できます
except FileNotFoundError:
  print("エラー: 指定されたパスにファイルが見つかりませんでした。")
except Exception as e:
  print(f"エラーが発生しました: {e}")
```

##### メモリ内データのアップロード

PIL (Pillow) で作成された画像のコンテンツや、Web リクエストで受信したファイルなど、メモリに保持されているデータをアップロードすることもできます。

<CodeGroup>
  ```python PIL Image 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 Raw Bytes theme={null}
  import sunra_client

  # 同期クライアントを初期化する
  client = sunra_client.SyncClient()

  # ファイルの読み取りや Web リクエストから得られる可能性のある生のバイト
  raw_data = b"some file content here"

  # 生のバイトをアップロードする
  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)

サポートさせていただきます！
