# Python：オープンウェイトモデルを向いた OpenAI SDK

> 公式の openai パッケージを使って Python からオープンウェイトの LLM を呼び出します。1回の呼び出し、同時実行数を制限した非同期バッチ、ストリーミング、各リクエストのコストを扱います。

- URL: https://llmwithcrypto.com/ja/docs/python/
- 最終更新: 2026-10-23
- 発行者: LLMwithCrypto (https://llmwithcrypto.com)

公式の `openai` パッケージはそのまま動作します。クライアントを作成する際に、ベース URL とキーを渡してください。モデル名を除き、コードの他の部分は変わりません。

**クイック回答 — Python から LLMwithCrypto を呼び出すにはどうすればよいですか？**

`pip install openai` で公式パッケージをインストールし、`base_url="https://llmwithcrypto.com/api/v1"` と `LLMWITHCRYPTO_API_KEY` のキーでクライアントを作成します。**LLMwithCrypto** は `deepseek-v4-pro` や `gpt-oss-120b` など12個のオープンウェイトモデルに対して、OpenAI API と同様に `client.chat.completions.create()` に応答します。ストリーミング、async、tool calls は 2026年10月23日 にドキュメント化されているとおり通常どおり動作します。

## 必要なもの

| 属性 | 値 |
| --- | --- |
| Python | 3.9 以降 |
| パッケージ | `openai`（公式）、credits 呼び出しには `requests` |
| Base URL | `https://llmwithcrypto.com/api/v1` |
| キー | 環境変数 `LLMWITHCRYPTO_API_KEY` に設定し、コードには決して置かないでください |
| モデルID | [models ページ](https://llmwithcrypto.com/ja/models/) または `client.models.list()` から |

## 1回のリクエストはどのように送信しますか？

クライアントは1度作成して再利用してください。呼び出し間で接続が維持されます。ここでは SDK がベース URL を環境変数から自動で読み取らないため、明示的に渡してください。

*one_call.py*

```python
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://llmwithcrypto.com/api/v1",
    api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
)

resp = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[
        {"role": "system", "content": "Answer in two sentences."},
        {"role": "user", "content": "What is a context window?"},
    ],
    max_tokens=200,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, "in,", resp.usage.completion_tokens, "out")

```

## 多数のリクエストを一度に実行するにはどうすればよいですか？

`asyncio.gather`で`AsyncOpenAI`を使い、セマフォで並列に実行するリクエスト数を制限します。まずは4が安全な開始値です。rate limitを超えない範囲で増やしてください。すべてのアカウントには1分あたりのリクエスト数とトークン数の上限があり、ダッシュボードに表示されます。サポートに依頼すれば引き上げられます。

*many_calls.py*

```python
import asyncio
import os

from openai import AsyncOpenAI

client = AsyncOpenAI(
    base_url="https://llmwithcrypto.com/api/v1",
    api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
)
LIMIT = asyncio.Semaphore(4)


async def summarize(text):
    async with LIMIT:
        resp = await client.chat.completions.create(
            model="deepseek-v4.1-flash",
            messages=[
                {"role": "system", "content": "Summarize in one sentence."},
                {"role": "user", "content": text},
            ],
            max_tokens=80,
        )
        return resp.choices[0].message.content


async def main():
    docs = ["First report text...", "Second report text...", "Third report text..."]
    for summary in await asyncio.gather(*(summarize(d) for d in docs)):
        print("-", summary)


asyncio.run(main())

```

## 回答をストリーミングするにはどうすればよいですか？

`stream=True`を渡してチャンクを反復処理します。各チャンクは`delta.content`内のテキストの一部を持ちます。`stream_options={"include_usage": True}`を使うと、最後のチャンクにトークン数が入ります。[ストリーミングのページ](https://llmwithcrypto.com/ja/docs/streaming/)でフォーマットを説明しています。

*stream.py*

```python
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://llmwithcrypto.com/api/v1",
    api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
)

stream = client.chat.completions.create(
    model="deepseek-v4.1-flash",
    messages=[{"role": "user", "content": "Write a haiku about latency."}],
    stream=True,
    stream_options={"include_usage": True},
    max_tokens=120,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
    if chunk.usage:
        print("\n", chunk.usage.prompt_tokens, "in,", chunk.usage.completion_tokens, "out")

```

## リクエストのコストはどうすれば分かりますか？

`usage`のカウントにモデルの100万トークンあたりの価格を掛けます。2026年10月23日時点で、DeepSeek V4 Proは入力100万トークンあたり$1.254、出力100万トークンあたり$3.762です。この例ではこの2つの数値をハードコードしているので、価格が変わったら[料金ページ](https://llmwithcrypto.com/ja/pricing/)から更新してください。ダッシュボードには各呼び出しの正確なコストが表示されます。

*cost.py*

```python
import os

from openai import OpenAI

# prices per 1M tokens of the models you use, copied from the pricing page
PRICES = {"deepseek-v4-pro": (1.254, 3.762)}

client = OpenAI(
    base_url="https://llmwithcrypto.com/api/v1",
    api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
)
resp = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[{"role": "user", "content": "Give me three names for a coffee shop."}],
    max_tokens=100,
)
price_in, price_out = PRICES[resp.model]
cost = (resp.usage.prompt_tokens * price_in + resp.usage.completion_tokens * price_out) / 1_000_000
print(resp.choices[0].message.content)
print(f"cost: ${cost:.6f}")

```

## 既存の OpenAI アプリを移行するにはどうすればよいですか？

変更は3点で、通常は1つのファイルで済みます。

1. **クライアント。** `base_url`を追加し、`OpenAI()`または`AsyncOpenAI()`を作成する箇所で`LLMWITHCRYPTO_API_KEY`からAPIキーを読み込みます。
2. **モデル名。** すべての`gpt-…`の名前を[モデルページ](https://llmwithcrypto.com/ja/models/)のidに置き換えます。プロジェクト全体を検索してください。モデル名は設定ファイル、プロンプト、テストの中に隠れています。
3. **依存している機能。** チャット、ストリーミング、システムプロンプトはどこでも動作します。ツール呼び出しとJSON出力はモデルによって異なるため、選んだモデルに対して既存のテストを実行してください。

それ以外はそのままです。プロンプト、リトライ処理、`choices`と`usage`のパースは変わりません。[切り替えガイド](https://llmwithcrypto.com/ja/guides/switch-openai-sdk-to-open-models/)で詳細を説明しています。

## APIキーはどこに置くべきですか？

環境変数に置き、コードには決して書かないでください。ローカルでは、アプリが読み込み、`.gitignore`に記載した`.env`ファイルで十分です。本番環境では、ホストやCIのシークレットストアを使ってください。アプリやサービスごとに個別のAPIキーを発行すれば、他を止めずに1つだけを失効できます。アプリ、エージェント、チームメンバーごとにAPIキーを1つ作成し、他のキーに影響を与えずにダッシュボードからいつでも取り消せます。

## Python: よくある質問

### SDKは自動でリトライしますか？

はい、`openai`パッケージは一部のエラーをデフォルトで2回リトライします（`max_retries`）。[エラーページ](https://llmwithcrypto.com/ja/docs/errors/)に、リトライする価値のあるエラーが記載されています。

### OpenAI用のコードをそのまま使えますか？

はい。APIはOpenAI chat completions形式に対応しています。OpenAI SDK、LangChain、その他OpenAI互換のツールのベースURLを当社のベースURLに設定し、APIキーを指定して、モデル名を変更してください。[切り替えガイド](https://llmwithcrypto.com/ja/guides/switch-openai-sdk-to-open-models/)に確認すべき項目が記載されています。

### どのPythonフレームワークが使えますか？

OpenAI互換のbase URLを受け付けるものであれば何でも使えます。[LangChainのページ](https://llmwithcrypto.com/ja/docs/langchain/)でLangChainとLlamaIndexを紹介しています。

---

LLMwithCrypto: LLMwithCryptoは、オープンウェイトモデル向けのOpenAI互換LLM APIです — DeepSeek V4 Pro、DeepSeek V4.1 Flash、DeepSeek R1、Qwen3.5 397B A17B、Qwen3 235B A22B Instruct、gpt-oss-120b、gpt-oss-20b、GLM-4.7、Llama 3.3 70B Instruct、Gemma 4 31B、Mistral Large 3、Mistral Small 4 — 前払いの暗号資産残高からトークン単位で支払い、公開ホストの中央値価格より5%安くご利用いただけます。KYC不要:本人確認書類、自撮り写真、証明書類は一切不要です。プロンプトと出力は保存されません。
