Krótka odpowiedź
Jak wywołać LLMwithCrypto z Pythona?
Zainstaluj oficjalny pakiet przez pip install openai, potem utwórz klienta z base_url="https://llmwithcrypto.com/api/v1" i swoim kluczem z LLMWITHCRYPTO_API_KEY. LLMwithCrypto odpowiada jak OpenAI API na client.chat.completions.create(), dla 12 modeli open-weight, takich jak deepseek-v4-pro czy gpt-oss-120b. Streamowanie, async i tool calls działają jak zwykle, zgodnie z dokumentacją z 23 października 2026.
Czego potrzebujesz
| Python | 3.9 lub nowszy |
|---|---|
| Pakiet | openai (oficjalny); requests do wywołania kredytów |
| Base URL | https://llmwithcrypto.com/api/v1 |
| Klucz | W zmiennej środowiskowej LLMWITHCRYPTO_API_KEY, nigdy w kodzie |
| Id modeli | Na stronie modeli lub z client.models.list() |
Jak wysłać jedno zapytanie?
Utwórz klienta raz i używaj go ponownie: utrzymuje połączenie otwarte między wywołaniami. SDK samo nie czyta tu żadnej zmiennej środowiskowej dla bazowego URL, więc przekaż go jawnie.
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")
Jak uruchomić wiele zapytań naraz?
Użyj AsyncOpenAI z asyncio.gather i semafora, aby ograniczyć liczbę zapytań wykonywanych równolegle. Cztery to bezpieczny start; zwiększaj, dopóki pozostajesz poniżej swojego rate limit. Każde konto ma limit zapytań i tokenów na minutę, widoczny w dashboardzie; poproś support, a można go podnieść.
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())
Jak streamować odpowiedź?
Przekaż stream=True i iteruj po chunkach; każdy z nich zawiera fragment tekstu w delta.content. W przypadku stream_options={"include_usage": True} ostatni chunk zawiera liczby tokenów. Strona o streamingu wyjaśnia format.
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")
Skąd mam wiedzieć, ile kosztowało zapytanie?
Pomnóż liczby z usage przez ceny modelu za milion tokenów. Na dzień 23 października 2026 DeepSeek V4 Pro kosztuje $1.254 za milion tokenów wejściowych i $3.762 za milion tokenów wyjściowych; przykład ma te dwie liczby zapisane na sztywno, więc zaktualizuj je ze strony cennika, gdy ceny się zmienią. Dashboard pokazuje dokładny koszt każdego wywołania.
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}")
Jak przenieść istniejącą aplikację OpenAI?
Trzy zmiany, zwykle w jednym pliku:
- Klient. Dodaj
base_urli odczytaj klucz zLLMWITHCRYPTO_API_KEYtam, gdzie tworzyszOpenAI()lubAsyncOpenAI(). - Nazwy modeli. Zastąp każdą nazwę
gpt-…identyfikatorem ze strony modeli. Przeszukaj cały projekt: nazwy modeli ukrywają się w plikach konfiguracyjnych, promptach i testach. - Funkcje, na których polegasz. Chat, streaming i prompty systemowe działają wszędzie. Tool calling i wyjście JSON zależą od modelu, więc uruchom swoje istniejące testy na wybranym modelu.
Wszystko inne zostaje: Twoje prompty, Twoja logika ponawiania, Twoje parsowanie choices i usage. Przewodnik po przełączaniu omawia szczegóły.
Gdzie powinien znajdować się klucz?
W środowisku, nigdy w kodzie. Lokalnie wystarczy plik .env ładowany przez Twoją aplikację i wymieniony w .gitignore; w produkcji użyj magazynu sekretów swojego hosta lub CI. Daj każdej aplikacji lub usłudze własny klucz, aby móc unieważnić jeden bez zatrzymywania pozostałych. Twórz jeden klucz API na aplikację, agenta lub członka zespołu i odwołuj każdy z nich z dashboardu, nie ruszając pozostałych.
Python: często zadawane pytania
Czy SDK sam ponawia żądania?
Tak, pakiet openai domyślnie dwa razy ponawia niektóre błędy (max_retries). Strona błędów wymienia, które błędy warto ponowić.
Czy mogę nadal używać swojego kodu OpenAI?
Tak. API mówi w formacie OpenAI chat completions: skieruj OpenAI SDK, LangChain lub dowolne narzędzie zgodne z OpenAI na nasz base URL ze swoim kluczem i zmień nazwę modelu. Przewodnik po przełączaniu wymienia, co sprawdzić.
Które frameworki Python działają?
Wszystko, co akceptuje base URL zgodny z OpenAI. Strona LangChain pokazuje LangChain i LlamaIndex.