GetAiApiKey/AI-API-controlelijst voor productie
Een LLM in Python installeren: lokaal of via API
Je kunt een model op je eigen machine draaien, of één klein Python-pakket installeren en een gehost model via HTTP aanroepen. Deze pagina behandelt beide opties en bespreekt vervolgens stap voor stap de API-route.
Bijgewerkt

Belangrijkste punten
- Lokale installatie vereist model weights en voldoende geheugen; de API-route vereist alleen het openai-pakket en een sleutel.
- Stel de base URL in op https://api.getaiapikey.com/v1 en het model op uncensored.
- Streaming, function calling en JSON-modus werken allemaal via de standaard OpenAI-client.
- Verwerk HTTP 429 met een korte retry en houd gelijktijdige verzoeken op 8 of minder.
Twee betekenissen van het installeren van een LLM
Als mensen vragen hoe ze llm in python moeten installeren, bedoelen ze meestal een van twee dingen. De eerste is het lokaal draaien van een model: weights downloaden en laden met een bibliotheek op je eigen CPU of GPU. De tweede is het installeren van een clientbibliotheek zodat je Python-code kan communiceren met een model dat elders draait. Beide zijn geldig, en de juiste keuze hangt af van je hardware en wat je wilt bouwen.
De API-route is veel korter. Je voert pip install openai uit, wijst de client naar een base URL en roept het model aan. Geen weights, geen GPU-stuurprogramma's, geen geheugenplanning. Deze pagina geeft de stappen en de code voor die route, met een korte sectie over de lokale route zodat je kunt vergelijken.
Lokale installatie of gehoste API: hoe kies je?
| Vraag | Lokale installatie | Gehoste API |
|---|---|---|
| Wat je installeert | Een inferentiebibliotheek plus model weights | Het openai-pakket |
| Hardware | Geheugen en meestal een GPU geschikt voor het model | Elke machine die HTTPS-verzoeken kan maken |
| Kosten | Je hardware en elektriciteit | Per token, van prepaid tegoed |
| Werkt offline | Ja | Nee |
| Tijd tot eerste antwoord | Downloaden, instellen, afstemmen | Een paar minuten |
Lokaal is zinvol als je alles op één machine moet houden, offline moet werken, of wilt experimenteren met de weights zelf. Bibliotheekkoppelingen zoals llama.cpp of Hugging Face transformers zijn de gebruikelijke startpunten; raadpleeg hun eigen documentatie voor hardwarevereisten, omdat deze afhangen van de modelgrootte die je kiest.
De API is zinvol als je snel een werkend resultaat wilt, je laptop geen groot model kan bevatten, of je app veel gebruikers moet bedienen. Je betaalt per token in plaats van hardware te kopen. Voor deze service is dat $0,15 per 1M input-tokens en $0,50 per 1M output-tokens, zonder abonnement. De prijzenpagina bevat de details.
Stap 1: maak een virtuele omgeving en installeer het pakket
Gebruik een virtuele omgeving zodat de installatie schoon blijft. Elke recente Python 3-versie werkt met het openai-pakket.
python3 -m venv .venv
source .venv/bin/activate
pip install openai
Vervolgens heb je een sleutel nodig. Meld je aan op de API-sleutelpagina met Google of met e-mail en wachtwoord. Nieuwe gebruikers kunnen daar met één klik $0,50 aan gratis proeftegoed claimen, geldig voor 7 dagen en zonder creditcard. Sla de sleutel op in een omgevingsvariabele in plaats van in je bronbestand:
export API_KEY="paste-your-key-here"Stap 2: maak je eerste aanroep
De service is OpenAI-compatibel, dus de enige wijzigingen ten opzichte van een standaard OpenAI-script zijn de base URL en de model-ID. De model-ID is uncensored.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.getaiapikey.com/v1",
api_key=os.environ["API_KEY"],
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Explain what a context window is in two sentences."},
],
temperature=0.7,
max_tokens=200,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
Als dit een antwoord en twee tokenaantallen afdrukt, is de installatie voltooid. Om te controleren of je sleutel werkt en de model-ID te zien, kun je ook GET /v1/models aanroepen:
for m in client.models.list():
print(m.id)
Datzelfde verzoek vanaf de shell, helemaal zonder Python, is een enkele curl-oproep naar https://api.getaiapikey.com/v1/chat/completions met de header Authorization: Bearer gevolgd door je sleutel. De quickstart in de documentatie toont het volledig.
Stap 3: stream tokens naarmate ze aankomen
Wachten tot een lang antwoord klaar is voordat je iets afdrukt voelt traag. Stel stream=True in en de server stuurt tokens via server-sent events. Je kunt om een gebruikssamenvatting vragen in de laatste chunk met stream_options.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Write a short scene set in a lighthouse."}],
stream=True,
stream_options={"include_usage": True},
)
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.total_tokens, "tokens")
Eén detail is belangrijk voor productie: een gestreamd verzoek houdt zijn concurrency slot vast tot de stream eindigt. Een volledige sleutel staat 8 gelijktijdige verzoeken toe, dus als je app veel lange streams opent, sluit ze dan wanneer de gebruiker de verbinding verbreekt.
Stap 4: JSON-modus en tool calling
Voor gestructureerde uitvoer stel je response_format in op een JSON-object. Vertel het model ook in de prompt om in JSON te antwoorden, omdat de instelling geldige JSON-syntax garandeert, maar niet de veldnamen die je wilt.
import json
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "Reply only with JSON: {\"title\": string, \"tags\": [string]}"},
{"role": "user", "content": "Give me a title and tags for a post about slow travel."},
],
response_format={"type": "json_object"},
)
data = json.loads(resp.choices[0].message.content)
print(data["title"], data["tags"])
Tool calling volgt het standaardpatroon. Je beschrijft een functie, het model kan vragen om deze aan te roepen, je voert het zelf uit en stuurt het resultaat terug met role: "tool".
tools = [{
"type": "function",
"function": {
"name": "get_time",
"description": "Return the current time for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
messages = [{"role": "user", "content": "What time is it in Lisbon?"}]
first = client.chat.completions.create(
model="uncensored", messages=messages, tools=tools, tool_choice="auto"
)
msg = first.choices[0].message
if msg.tool_calls:
call = msg.tool_calls[0]
messages.append(msg)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps({"time": "14:05"}),
})
final = client.chat.completions.create(
model="uncensored", messages=messages, tools=tools
)
print(final.choices[0].message.content)
Test tool calls op een paar prompts voordat je erop vertrouwt. Elk model kan de verkeerde functie kiezen of een argument slecht invullen, dus valideer argumenten in je eigen code voordat je iets uitvoert met neveneffecten.
Stap 5: verwerk limieten en fouten
Volledige sleutels staan 8 gelijktijdige verzoeken en 300 verzoeken per minuut toe. Proefsleutels staan 2 en 60 toe. Als je die limieten overschrijdt, krijg je HTTP 429. De foutcode rate_limited betekent te veel verzoeken per minuut, en concurrency betekent te veel in één keer. Bij tijdelijke overbelasting retourneert de API ook 429 met een Retry-After: 5 header.
De OpenAI Python-client probeert sommige fouten zelf opnieuw, maar een expliciete wrapper houdt het gedrag duidelijk:
import time
from openai import RateLimitError
def ask(messages, tries=4):
for attempt in range(tries):
try:
return client.chat.completions.create(model="uncensored", messages=messages)
except RateLimitError:
time.sleep(5 * (attempt + 1))
raise RuntimeError("still rate limited after retries")
Elk antwoord bevat X-Request-Id, X-Balance-USD en rate-limit headers, die je kunt loggen. Voeg de request ID toe als je contact opneemt met support. Mislukte of geweigerde verzoeken worden niet in rekening gebracht, dus opnieuw proberen kost niets extra.
Houd ook rekening met de groottelimieten. Het contextvenster is 100.000 tokens, prompt plus completion, en de maximale request body is 8 MB. Lange chatgeschiedenissen moeten worden afgekapt of samengevat voordat ze die aantallen bereiken.
Wanneer de aanroep niet werkt
De meeste problemen bij de eerste run komen door een handvol fouten. Controleer deze in volgorde voordat je iets anders vermoedt.
- Base URL zonder het versiepad. De waarde moet eindigen op
/v1. De client voegt hier/chat/completionsaan toe, dus een ontbrekende/v1stuurt het verzoek naar de verkeerde route. - Verkeerde of ontbrekende sleutel. De sleutel gaat in de
Authorization: Bearerheader, die de client bouwt vanuitapi_key. Als de omgevingsvariabele leeg is, gooit de client een fout bij het starten of stuurt een lege sleutel. Printbool(os.environ.get("API_KEY"))om te controleren. - Een modelnaam van een andere service. De enige model-ID hier is
uncensored. Namen zoals die in andere tutorials zullen niet overeenkomen. - Geen saldo. Bekijk de
X-Balance-USDheader. Een trial die zijn 7 dagen is gepasseerd, of een leeg saldo, vereist een top-up vanaf $20. - Oud pakket. Als een voorbeeld
OpenAI(gebruikt en Python zegt dat het die naam niet kan importeren, heb je het pre-1.0 pakket. Voerpip install --upgrade openaiuit.
Om de ruwe respons inclusief headers te zien, gebruik je de raw-response wrapper van de client:
raw = client.chat.completions.with_raw_response.create(
model="uncensored",
messages=[{"role": "user", "content": "ping"}],
max_tokens=5,
)
print(raw.headers.get("x-request-id"), raw.headers.get("x-balance-usd"))
completion = raw.parse()
print(completion.choices[0].message.content)
Dat drukt de request ID en je resterende saldo af naast het antwoord, wat een snelle gezondheidscheck is die je kunt uitvoeren vanuit een cronjob of een opstartscript.
Gebruik ervan met andere tools
Omdat het endpoint de OpenAI-indeling volgt, kunnen andere Python-bibliotheken het gebruiken met dezelfde twee instellingen. Frameworks die een aangepaste OpenAI base URL accepteren, hebben alleen base_url en api_key nodig. Voor Node neemt het officiële openai-pakket dezelfde velden aan:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.getaiapikey.com/v1",
apiKey: process.env.API_KEY,
});
const r = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Say hello in five words." }],
});
console.log(r.choices[0].message.content);
Dit is een tekst-only service: geen beeld- of audiogeneratie, geen embeddings en geen fine-tuning. Als je project die functies nodig heeft, koppel dan deze API aan een ander hulpmiddel voor dat deel. Het model is een open-weight model dat wordt beheerd door een onafhankelijke provider en is afgestemd op antwoorden zonder inhoudsweigeringen voor legaal gebruik door volwassenen. Seksuele inhoud met minderjarigen is nooit toegestaan.
Meer handleidingen
Vragen en antwoorden
Heb je een GPU nodig om een LLM in Python op deze manier te gebruiken?
Nee. Het model draait aan de kant van de provider. Jouw machine heeft alleen Python en een internetverbinding nodig om het endpoint aan te roepen.
Welk pakket installeer ik?
Installeer het officiële openai-pakket met pip. Stel vervolgens de base URL in op https://api.getaiapikey.com/v1 en het model op uncensored.
Is er een gratis manier om het te proberen?
Nieuwe gebruikers kunnen met één klik $0,50 aan proeftegoed claimen na het aanmaken van een account. Het is 7 dagen geldig, er is geen creditcard nodig en het is beperkt tot één per persoon.
Hoeveel kost een verzoek?
Een verzoek met 2.000 input tokens en 500 output tokens kost $0,00055, op basis van $0,15 en $0,50 per 1M tokens. Je betaalt alleen voor succesvolle verzoeken.
Ondersteunt het streaming en function calling?
Ja. Streaming via SSE, function calling en JSON-modus werken allemaal via de standaard OpenAI-client.
Je sleutel is nog maar één formulier verwijderd
Maak een account aan, kopieer de sleutel, pas de base URL aan. Dat is de hele setup.