Modellen betala per token
Fakturering per token innebär att du bara betalar för det du förbrukar, inte för stilleståndstillgång till en server. Till skillnad från traditionella månadsprenumerationer justeras kostnaderna direkt efter användningsvolym. Du debiteras baserat på faktiska ingångs- och utgångstokens som bearbetas av slutpunkten.
De flesta leverantörer tar ut olika priser för inmatning jämfört med utdatatokens. Till exempel prissätter vissa ostraffade LLM-tjänster inmatning till $0.15 per miljon tokens och utdata till $0.50 per miljon tokens. Denna skillnad finns eftersom textgenerering kräver avsevärt mer beräkningskraft än läsning.
Du bör övervaka dina tokenräkningar noga. Ett enda långt svar kan överstiga din ingångskostnad om du inte uppskattar utmatningslängden. Kontrollera alltid användningsmetadata som returneras i svarshuvuden eller bröd för att spåra dina utgifter noggrant.
Varför ditt streaming-svar klipper av tidigt
Streaming-responser klipps av tidigt eftersom klienter ofta slutar lyssna efter de första chunkarna. Servern skickar data i realtid, men din applikation kan koppla ner sig i förtid om den inte hanterar strömmen korrekt.
Varje chunk innehåller delvis text. Du måste konkatenera dessa chunkar för att bilda hela svaret. Om du kasserar mellanchunkar förlorar du data. Den sista chunken innehåller vanligtvis fullständig användningsstatistik.
Kontrollera dina timeout-inställningar. Vissa nätverk bryter ner anslutningar efter några sekunders inaktivitet. Se till att din klient hanterar tillfälliga pauser i strömmen. Detta är vanligt hos stora språkmodeller som genererar långa texter.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Hantera 100k-kontextfönstret korrekt
Gränsen för kontextrutan inkluderar både din prompt och den genererade completionen. Du kan inte skicka 100k token i prompten och förvänta dig ytterligare 100k i svaret. Den totala kombinerade längden måste hålla sig inom gränsen.
Om du skickar en stor prompt har du mindre utrymme för svaret. Till exempel lämnar en prompt på 90 000 tokens bara 10 000 tokens för utdata. Detta kan leda till att långa svar klipps av plötsligt.
Implementera räkning av tokens på din sida. Använd en tokeniserare som matchar modellens kodning. Detta säkerställer att du inte överskrider gränsen under begäran. Om du gör det kommer servern att returnera ett fel.
Överväg att trunkera äldre meddelanden i chatthistoriken. Detta behåller den senaste kontexten samtidigt som du håller dig inom gränserna. Detta är avgörande för att upprätthålla konversationssammanhang under långa sessioner.
Kryptotopningar: varför din balans inte uppdaterades
Kryptopåfyllningar uppdateras inte när du skickar tokens till fel nätverk. Vårt API accepterar USDT på TRC20 och USDC på Base. Att skicka USDT på Ethereum till en TRC20-adress kommer att resultera i förlorade medel.
Verifiera alltid nätverksprefixet innan du skickar. Insättningssidan visar den specifika adressen och nätverket för varje valuta. Anta inte att alla USDT-adresser är utbytbara.
Vänta på det erforderliga antalet bekräftelser. Transaktioner är inte omedelbara. Systemet krediterar ditt konto först när blockkedjan bekräftar överföringen. Detta förhindrar dubbelutgiftsproblem.
Kontrollera transaktionshashen på en blockutforskare. Om balansen inte uppdateras, ange hashen till supporten. De kan manuellt verifiera överföringen. Detta är det snabbaste sättet att lösa diskrepanser.
Fixa fel vid funktionsanrop i icke-censurerade modeller
Fel vid funktionsanrop beror ofta på icke-standardiserad JSON-formatering i ofiltrerade modeller. Dessa modeller prioriterar kreativitet framför strikt struktur, vilket kan bryta mot stränga parsare.
Ställ in svarformatet till json_object för att tvinga fram striktare utdata. Detta minskar risken för felaktig JSON. Det kan dock minska kreativiteten något.
Validera svaret innan pisering. Använd en try-catch-sats för att hantera JSON-decoderingsfel. Om pisingen misslyckas, försök igen med en lägre temperatur. Detta uppmuntrar mer deterministisk utdata.
from openai import OpenAI
client = OpenAI(base_url="https://api.aiapisubscription.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)
Rate limits: att hantera 300 RPM-burstar
Ratebegränsningar begränsar hur många förfrågningar du kan skicka per minut. Vårt API tillåter 300 förfrågningar per minut per nyckel. Att överskrida denna gräns returnerar en 429-statuskod.
Implementera exponentiell backoff när du når gränsen. Försök om förfrågan efter en kort fördröjning. Detta förhindrar att du överbelaster servern under toppanvändning.
Övervaka din begärantäthet. Om du skickar begäranden för snabbt kan du trigga gränsen. Sprid ut dina begärandan jämnt. Detta säkerställer konsekvent prestanda.
Använd flera nycklar om du behöver högre genomströmning. Varje nyckel har sin egen gräns. Detta gör att du kan skala din applikation utan att träffa en enskild flaskhals.
JSON-lägesfel och svarformatering
JSON-lägesfel uppstår när modellen returnerar ogiltig syntax. Detta är vanligt hos obegränsade modeller som prioriterar naturligt språk framför strukturerad data.
Använd den response_format parameter för att tvinga fram JSON-utmatning. Detta säger till modellen att strukturera sitt svar som giltig JSON. Det garanterar dock inte korrekthet.
Validera utmatningen med ett JSON-schema. Detta säkerställer att datan matchar din förväntade struktur. Om valideringen misslyckas, be om ett försök igen eller justera prompten.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.aiapisubscription.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);
Felsökning av diskrepanser i tokenräkning
Avvikelser i tokenräkning uppstår när din klient använder en annan tokeniserare än modellen. Detta leder till felaktiga kostnadsuppskattningar.
Använd den officiella tokenisern som tillhandahålls av modellleverantören. Detta säkerställer att dina räknningar stämmer överens med faktisk användning. Tredjeparts-tokenisrar kan hantera specialtecken annorlunda.
Kontrollera användningsmetadata i svaret. Detta ger exakt tokenantal. Jämför detta med ditt lokala antal för att identifiera diskrepanser.
Ta hänsyn till specialtokens. Dessa inkluderar systemprompter och funktionsdefinitioner. De förbrukar tokens men kanske inte syns i den råa texten.
När du ska byta från lokalt till API
Byt till ett API när lokal hårdvara inte kan möta dina latens- eller skalningskrav. Att köra en stor modell lokalt kräver dyra GPU:er och betydande ström.
API:er erbjuder skalbarhet utan hårdvaruhantering. Du kan hanka plötsliga trafiktoppar enkelt. Detta är idealiskt för produktionsmiljöer.
Överväg kostnad. Om du kör en lokal modell 24/7 kan el- och hårdvarukostnader överstiga API-användning. Betala-per-token-fakturering är endast kostnadseffektiv om användningen är variabel.
curl https://api.aiapisubscription.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Summarize the technical specs of the new GPU."}]
}'