De ce răspunsul tău JSON eșuează validarea
Parsarea JSON eșuează când modelul adaugă text conversațional în afara blocului de cod. Modelele uncensored prioritizează fluxul natural al limbajului, așa că adaugă adesea "Iată JSON-ul" înainte sau după datele brute. Acest lucru sparge parserii stricti care așteaptă doar obiectul.
Folosește response_format parametrul setat la {"type": "json_object"}. Acest lucru forțează modelul să producă doar JSON valid. Elimină necesitatea scripturilor de curățare regex în codul tău. Totuși, ține cont că acest lucru consumă mai multe tokenuri per solicitare deoarece modelul este constrâns.
- Setează
response_formatpentrujson_objectîn payload-ul solicitării. - Asigură-te că promptul de sistem solicită explicit ieșirea JSON.
- Gestionați cu grație virgulele finale sau erorile minore de sintaxă dacă modelul greșește.
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)
Gestionarea corectă a limitelor ferestrei de context
Fereastra de context reține 100.000 de tokeni în total, combinând atât intrarea, cât și ieșirea. Dacă trimiți un istoric lung, trebuie să reduci lungimea maximă de ieșire. Ieșirea maximă implicită este de 2.048 de tokeni, decât dacă specifici altfel.
Calculează tokenii rămași scăzând dimensiunea intrării din 100,000. Dacă faci roleplay, menține promptul de sistem concis. Stochează doar ultimele ture de conversație în cererea API. Contextul mai vechi poate fi rezumat sau trunchiat. Acest lucru previne atingerea limitei rigide în timpul generării.
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);
Erori de apelare a funcțiilor cu modele uncensored
Apelarea funcțiilor eșuează când modelul ignoră definițiile instrumentelor sau returnează argumente invalide. Modelele uncensored pot prioritiza răspunsurile creative în detrimentul utilizării rigide a instrumentelor. Pot halucina parametri care nu există în schema ta.
Definește-ți instrumentele clar în tools array. Folosește tool_choice pentru a forța un comportament specific. Dacă modelul refuză să apeleze un tool, verificați promptul de sistem pentru instrucțiuni conflictuale. Asigurați-vă că numele tool-urilor și descrierile sunt neambigue. Testați mai întâi cu interogări simple pentru a verifica integrarea.
- Furniți nume clare ale instrumentelor și descrieri.
- Utilizare
tool_choicepentru a controla invocarea. - Validează argumentele conform schemei tale înainte de execuție.
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"}]
}'
Întreruperi de streaming și gestionarea SSE
Streaming-ul prin Evenimente Trimise de Server (SSE) poate pierde tokeni dacă clientul se deconectează sau dacă rețeaua are probleme. Chunk-ul final conține statisticile de utilizare a tokenilor. Trebuie să analizezi acest chunk pentru a obține numerele de intrare și ieșire.
Implementați un client SSE robust care gestionează logica de reconectare. Nu presupuneți că fiecare bucată conține date. Unele bucăti pot fi goale sau pot conține doar spații albe. Procesează bucata finală pentru a vă actualiza soldul de credite sau contoarele de tokeni. Acest lucru asigură o facturare și o urmărire a utilizării precise.
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)
Setări de temperatură care afectează outputul NSFW
Temperatura controlează aleatorietatea outputului modelului. Valorile mai mari, cum ar fi 0,8 sau 0,9, cresc creativitatea și imprevizibilitatea. Valorile mai mici, cum ar fi 0,2, fac outputul mai determinist și concentrat. Pentru roleplay NSFW, temperaturile mai ridicate produc răspunsuri mai variate și intense.
Experimentați cu valori diferite pentru a găsi echilibrul potrivit. O temperatură prea mare poate duce la text incoerent sau repetitiv. O temperatură prea mică poate duce la dialog robotic sau banal. Ajustați în funcție de tonul și consistența dorite. Modelul uncensored răspunde bine la setări de creativitate mai mari.
- Folosește 0.7-0.9 pentru roleplay creativ.
- Folosește 0.2-0.5 pentru sarcini factuale sau de programare.
- Monitorizați calitatea ieșirii pe măsură ce ajustați.
Top P and diversity in roleplay generation
Top P (nucleus sampling) limits the model to consider only the top percentage of probability mass. It works with temperature to control diversity. A low Top P value makes the output more predictable. A high value allows for more varied word choices.
Combină Top P cu temperatura pentru un control fin. De exemplu, o temperatură mare cu un Top P mic poate produce text creativ, dar concentrat. Acest lucru este util pentru menținerea vocii personajului în timp ce permite acțiuni spontane. Testează diferite combinații pentru a te potrivi stilului narativ.
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)
Înțelegerea limitelor și costurilor pe tokeni
Consumul de tokenuri vă afectează direct creditul preplătit. API-ul percepe $0.15 per milion de tokenuri de intrare și $0.50 per milion de tokenuri de ieșire. Tokenurile de ieșire sunt mai scumpe deoarece reprezintă munca modelului. Streaming-ul nu schimbă costul; plătiți pentru toate tokenurile generate.
Monitorați utilizarea tokenilor pentru a evita charge-urile neașteptate. Ultima bucată SSE furnizează numărul exact de tokeni. Utilizați acest lucru pentru a vă actualiza balanța locală sau panoul de facturare. Erorile și refuzurile sunt gratuite, deci plătiți doar pentru completările reușite. Acest model de plată la cerere asigură că nu plătiți niciodată în plus.
- Tokenii de intrare costă $0.15 per milion.
- Tokenii de ieșire costă $0.50 per milion.
- Refuzurile și erorile sunt gratuite.
Înlocuirea cheii API și limitele de rată
Fiecare cont permite o singură cheie API activă. Dacă îți regenerezi cheia, cea veche devine imediat invalidă. Acest lucru asigură securitatea, dar necesită să îți actualizezi clienții prompt. Limitele de viteză sunt setate la 300 de cereri pe minut și 8 cereri concurente per cheie.
Depășirea acestor limite rezultă în erori HTTP 429. Implementează un backoff exponențial în logica ta de reîncercare. Monitorizează volumul solicitărilor tale pentru a rămâne în limite. Dacă ai nevoie de un throughput mai mare, ia în considerare împărțirea sarcinii de lucru între mai multe conturi sau optimizarea dimensiunilor prompturilor. Cheia este afișată imediat după înregistrare, așa că păstreaz-o în siguranță.
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);
Depanarea erorilor HTTP comune
Erorile HTTP indică probleme cu cererea ta sau cu răspunsul serverului. Erorile comune includ 400 Bad Request (Cereare Invalidă), 401 Unauthorized (Neautorizat) și 429 Too Many Requests (Prea Multe Cereri). O eroare 400 înseamnă adesea un JSON malformed sau parametri invalizi. O eroare 401 indică o cheie API incorectă sau expirată.
Verificați antetele și payload-ul solicitării pentru erori de sintaxă. Verificați dacă cheia API este corectă și activă. Dacă primiți o eroare 429, așteptați și reîncercați cu backoff exponențial. Utilizați SDK-urile oficiale OpenAI pentru a gestiona automat aceste erori. Acestea oferă mesaje de eroare clare și logica de reîncercare. Acest lucru reduce timpul de dezvoltare și îmbunătățește fiabilitatea.
- 400: Verificați sintaxa JSON și parametrii.
- 401: Verificați validitatea cheii API.
- 429: Implementează logica de reîncercare cu 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"}]
}'