Varför ditt JSON-svar misslyckas med validering
JSON-parseringen misslyckas när modellen lägger till konversationell text utanför kodblocket. Ocensurerade modeller prioriterar naturlig språkflyt, så de lägger ofta till "Här är JSON:en" före eller efter den råa data. Detta bryter strikta parser som förväntar sig endast objektet.
Använd den response_format parametern inställd till {"type": "json_object"}. Detta tvingar modellen att endast returnera giltig JSON. Det eliminerar behovet av regex-rensningskoder i din kod. Observera dock att detta förbrukar fler tokens per begäran eftersom modellen är begränsad.
- Ställ in
response_formatförjson_objecti din begäranspayload. - Se till att din system prompt explicit begär JSON-output.
- Hantera efterföljande kommatecken eller mindre syntaxfel smidigt om modellen halkar.
from openai import OpenAI
client = OpenAI(base_url="https://api.abliteratedllmonline.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)
Korrekt hantering av kontextfönsterbegränsningar
Ditt kontextfönster rymmer 100 000 token totalt, vilket kombinerar både inmatning och utmatning. Om du skickar en lång historik måste du minska den maximala utmatningslängden. Standardmax för utmatning är 2 048 token om du inte anger något annat.
Beräkna dina återstående tokens genom att dra bort din inmatningsstorlek från 100,000. Om du gör rollspel bör du hålla systemprompten kortfattad. Lagra endast de senaste konversationssvaren i API-begäran. Äldre kontext kan sammanfattas eller klippas bort. Detta förhindrar att du träffar den hårda gränsen mitt under genereringen.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.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);
Fel vid funktionsanrop med ofiltrerade modeller
Funktionsanrop misslyckas när modellen ignorerar verktygsdefinitionerna eller returnerar ogiltiga argument. Ofiltrerade modeller kan prioritera kreativa svar framför strikt verktygsanvändning. De kan hallucinera parametrar som inte finns i ditt schema.
Definiera dina verktyg tydligt i tools array. Använd tool_choice för att tvinga specifikt beteende. Om modellen vägrar att anropa ett verk, kontrollera ditt systemprompt för motsägelsefulla instruktioner. Se till att verknamnen och beskrivningarna är entydiga. Testa med enkla frågor först för att verifiera integrationen.
- Ange tydliga verktygsnamn och beskrivningar.
- Använd
tool_choiceför att styra anrop. - Validera argument mot ditt schema innan körning.
curl https://api.abliteratedllmonline.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
}'
Strömningsavbrott och SSE-hantering
Streaming via Server-Sent Events (SSE) kan tappa tokens om klienten kopplar ner sig eller om det uppstår nätverksstörningar. Den sista chunken innehåller statistik över tokenanvändningen. Du måste pars denna chunk för att få in- och utmatningsantalet.
Implementera en robust SSE-klient som hanterar återanslutningslogik. Anta inte att varje bit innehåller data. Vissa bitar kan vara tomma eller innehålla endast mellanslag. Bearbeta den sista biten för att uppdatera ditt kreditbalans eller tokenräknare. Detta säkerställer korrekt fakturering och användningsspårning.
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)
Temperaturinställningar som påverkar NSFW-utdata
Temperatur styr slumpmässigheten i modellens utdata. Högre värden som 0,8 eller 0,9 ökar kreativiteten och oförutsägbarheten. Lägre värden som 0,2 gör utdata mer deterministisk och fokuserad. För NSFW-rollspel ger högre temperaturer mer varierade och intensiva svar.
Experimentera med olika värden för att hitta rätt balans. För hög temperatur kan leda till oförståelig eller repetitiv text. För låg temperatur kan resultera i robotlik eller fad dialog. Justera baserat på önskad ton och konsistens. Den obegränsade modellen svarar bra på högre kreativa inställningar.
- Använd 0,7-0,9 för kreativ rollspel.
- Använd 0,2-0,5 för faktamässiga eller kodningsuppgifter.
- Övervaka utmatningskvaliteten när du justerar.
Top P och mångfald i rollspelsgenerering
Top P (nukleusprovnings) begränsar modellen att endast beakta de översta procenten av sannolikhetsmassan. Den fungerar med temperatur för att kontrollera mångfald. Ett lågt Top P-värde gör utdata mer förutsägbar. Ett högt värde tillåter mer varierade ordval.
Kombinera Top P med temperatur för finjusterad kontroll. Till exempel kan en hög temperatur med ett lågt Top P producera kreativt men fokuserat text. Detta är användbart för att behålla karaktärens röst samtidigt som spontana handlingar tillåts. Testa olika kombinationer för att passa din berättarstil.
from openai import OpenAI
client = OpenAI(base_url="https://api.abliteratedllmonline.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)
Att förstå tokengränser och kostnader
Tokenanvändning påverkar direkt din förbetalda kredit. API:n tar ut $0,15 per miljon ingångstoken och $0,50 per miljon utgångstoken. Utgångstoken är dyrare eftersom de representerar modellens arbete. Strömning ändrar inte kostnaden; du betalar för alla genererade token.
Övervaka din tokenanvändning för att undvika oväntade avgifter. Den sista SSE-chunken innehåller det exakta tokenantalet. Använd detta för att uppdatera din lokala balans eller faktureringspanel. Fel och avvisningar är kostnadsfria, så du betalar endast för lyckade slutföranden. Denna pay-as-you-go-modell säkerställer att du aldrig betalar för mycket.
- Inmatningstoken kostar $0,15 per miljon.
- Utdatatokens kostar $0.50 per miljon.
- Nekningar och fel är gratis.
Ersättning av API-nyckel och hastighetsbegränsningar
Varje konto tillåter endast en aktiv API-nyckel. Om du återskapar din nyckel blir den gamla omedelbart ogiltig. Detta säkerställer säkerhet men kräver att du uppdaterar dina klienter snabbt. Hastighetsbegränsningarna är inställda på 300 förfrågningar per minut och 8 parallella förfrågningar per nyckel.
Att överskrida dessa gränser resulterar i HTTP 429-fel. Implementera exponentiell backoff i din återanvändningslogik. Övervaka din begärandevolym för att hålla dig inom gränserna. Om du behöver högre genomströmning kan du överväga att fördela ditt arbete över flera konton eller optimera dina promptstorlekar. Nyckeln visas omedelbart vid registrering, så håll den säker.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.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 vanliga HTTP-fel
HTTP-fel indikerar problem med din förfrågan eller serverns svar. Vanliga fel inkluderar 400 Bad Request, 401 Unauthorized och 429 Too Many Requests. Ett 400-fel innebär ofta felaktig JSON eller ogiltiga parametrar. Ett 401-fel indikerar en felaktig eller utgången API-nyckel.
Kontrollera dina begäranshuvuden och payload för syntaxfel. Verifiera att din API-nyckel är korrekt och aktiv. Om du får ett 429-fel, vänta och försök igen med exponentiell backoff. Använd officiella OpenAI SDK:er för att hantera dessa fel automatiskt. De ger tydliga felmeddelanden och logik för upprepning. Detta minskar utvecklingstiden och förbättrar tillförlitligheten.
- 400: Kontrollera JSON-syntax och parametrar.
- 401: Verifiera API-nyckelns giltighet.
- 429: Implementera logik för omförsök med backoff.
curl https://api.abliteratedllmonline.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
}'