# Python: OpenAI SDK diarahkan ke model open-weight

> Panggil LLM open-weight dari Python dengan paket openai resmi: satu panggilan, batch async dengan batas konkurensi, streaming, dan biaya setiap request.

- URL: https://llmwithcrypto.com/id/docs/python/
- Terakhir diperbarui: 2026-10-23
- Penerbit: LLMwithCrypto (https://llmwithcrypto.com)

Paket resmi `openai` langsung bisa dipakai: lewatkan base URL kami dan key Anda saat membuat client. Sisanya di kode Anda tetap sama, kecuali nama model.

**Jawaban singkat — Bagaimana cara memanggil LLMwithCrypto dari Python?**

Instal paket resmi dengan `pip install openai`, lalu buat client dengan `base_url="https://llmwithcrypto.com/api/v1"` dan key Anda dari `LLMWITHCRYPTO_API_KEY`. **LLMwithCrypto** menjawab `client.chat.completions.create()` seperti OpenAI API, untuk 12 model open-weight seperti `deepseek-v4-pro` atau `gpt-oss-120b`. Streaming, async, dan tool call berjalan seperti biasa, sesuai dokumentasi pada 23 Oktober 2026.

## Yang Anda butuhkan

| Atribut | Nilai |
| --- | --- |
| Python | 3.9 atau lebih baru |
| Paket | `openai` (resmi); `requests` untuk panggilan credits |
| Base URL | `https://llmwithcrypto.com/api/v1` |
| Key | Di environment variable `LLMWITHCRYPTO_API_KEY`, jangan pernah di kode |
| Model id | Di [halaman models](https://llmwithcrypto.com/id/models/) atau dari `client.models.list()` |

## Bagaimana cara mengirim satu request?

Buat client sekali dan gunakan kembali: client menjaga koneksi tetap terbuka antar panggilan. SDK di sini tidak membaca environment variable untuk base URL sendiri, jadi lewatkan secara eksplisit.

*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")

```

## Bagaimana cara menjalankan banyak request sekaligus?

Gunakan `AsyncOpenAI` dengan `asyncio.gather`, dan semaphore untuk membatasi berapa banyak permintaan yang berjalan paralel. Empat adalah awal yang aman; naikkan selama Anda tetap di bawah rate limit Anda. Setiap akun memiliki batas permintaan dan token per menit yang ditampilkan di dashboard; hubungi support dan batas itu dapat dinaikkan.

*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())

```

## Bagaimana cara streaming jawabannya?

Teruskan `stream=True` dan iterasi atas chunk-nya; setiap chunk membawa sepotong teks di `delta.content`. Dengan `stream_options={"include_usage": True}`, chunk terakhir membawa jumlah token. [Halaman streaming](https://llmwithcrypto.com/id/docs/streaming/) menjelaskan formatnya.

*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")

```

## Bagaimana saya tahu berapa biaya sebuah permintaan?

Kalikan jumlah `usage` dengan harga model per juta token. Per 23 Oktober 2026, DeepSeek V4 Pro berbiaya $1.254 per juta token input dan $3.762 per juta token output; contoh tersebut menuliskan kedua angka itu secara hard-code, jadi perbarui dari [halaman harga](https://llmwithcrypto.com/id/pricing/) saat harga berubah. Dasbor menampilkan biaya persis setiap panggilan.

*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}")

```

## Bagaimana cara memindahkan aplikasi OpenAI yang sudah ada?

Tiga perubahan, biasanya dalam satu file:

1. **Klien.** Tambahkan `base_url` dan baca key dari `LLMWITHCRYPTO_API_KEY` di tempat Anda membuat `OpenAI()` atau `AsyncOpenAI()`.
2. **Nama model.** Ganti setiap nama `gpt-…` dengan id dari [halaman model](https://llmwithcrypto.com/id/models/). Telusuri seluruh proyek: nama model bersembunyi di file konfigurasi, prompt, dan tes.
3. **Fitur yang Anda andalkan.** Chat, streaming, dan system prompt berfungsi di mana saja. Tool calling dan output JSON bergantung pada model, jadi jalankan tes yang sudah ada terhadap model yang Anda pilih.

Selebihnya tetap: prompt Anda, logika retry Anda, parsing `choices` dan `usage` Anda. [Panduan beralih](https://llmwithcrypto.com/id/guides/switch-openai-sdk-to-open-models/) membahas detailnya.

## Di mana key harus disimpan?

Di environment, jangan pernah di kode. Secara lokal, file `.env` yang dimuat oleh aplikasi Anda dan dicantumkan di `.gitignore` sudah cukup; di produksi, gunakan secret store dari host atau CI Anda. Beri setiap aplikasi atau layanan key-nya sendiri agar Anda dapat mencabut satu tanpa menghentikan yang lain. Buat satu API key per aplikasi, agen, atau rekan tim dan cabut salah satunya dari dashboard tanpa memengaruhi yang lain.

## Python: pertanyaan umum

### Apakah SDK melakukan retry sendiri?

Ya, paket `openai` mencoba ulang beberapa error dua kali secara default (`max_retries`). [Halaman error](https://llmwithcrypto.com/id/docs/errors/) mencantumkan error mana yang layak di-retry.

### Bisakah saya tetap memakai kode OpenAI saya?

Bisa. API ini berbicara dalam format chat completions OpenAI: arahkan OpenAI SDK, LangChain, atau alat apa pun yang kompatibel dengan OpenAI ke base URL kami dengan API key Anda, lalu ubah nama modelnya. [Panduan beralih](https://llmwithcrypto.com/id/guides/switch-openai-sdk-to-open-models/) mencantumkan apa yang perlu diperiksa.

### Framework Python apa yang berfungsi?

Apa pun yang menerima base URL yang kompatibel dengan OpenAI. [Halaman LangChain](https://llmwithcrypto.com/id/docs/langchain/) menunjukkan LangChain dan LlamaIndex.

---

LLMwithCrypto: LLMwithCrypto adalah LLM API yang kompatibel dengan OpenAI untuk model open-weight — 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 — dibayar per token dari saldo kripto prabayar, 5% di bawah harga median host publik. Tanpa KYC: tanpa ID, tanpa selfie, tanpa dokumen. Prompt dan output tidak disimpan.
