Proč se vám nedaří validace odpovědi JSON
Parsování JSON selže, když model připojí konverzační text mimo blok kódu. Uncensored modely priorizují přirozený tok jazyka, takže často přidají "Zde je JSON" před nebo za surová data. To rozbije přísné parsery, které očekávají pouze objekt.
Použijte response_format parameter nastaven na {"type": "json_object"}. Toto donutí model výstupovat pouze platný JSON. Eliminuje potřebu skriptů pro čištění regulárními výrazy ve vašem kódu. Pamatujte však, že to spotřebuje více tokenů na požadavek, protože je model omezen.
- Nastavit
response_formatnajson_objectv těle požadavku. - Ujistěte se, že váš systémový prompt explicitně vyžaduje výstup ve formátu JSON.
- Zpracujte trailing čárky nebo drobné syntaxní chyby gracefulně, pokud model sklouzne.
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)
Správné zvládání limitů okna kontextu
Váš kontextový okno pojme 100 000 tokenů celkem, včetně vstupu i výstupu. Pokud odešlete dlouhou historii, musíte snížit maximální délku výstupu. Výchozí max výstup je 2 048 tokenů, pokud neurčíte jinak.
Vypočítejte zbývající tokeny odečtením velikosti vstupu od 100,000. Pokud provádíte roleplay, udržujte systémový prompt stručný. Do požadavku API ukládejte pouze nedávné konverzační úseky. Starší kontext lze shrnout nebo oříznout. Tím předejdete překročení tvrdého limitu během generování.
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);
Chyby volání funkcí u modelů bez omezení
Volání funkcí selže, když model ignoruje definice nástrojů nebo vrátí neplatné argumenty. Modely bez omezení mohou dávat přednost kreativním odpovědím před přísným používáním nástrojů. Mohou vymyslet parametry, které ve vašem schématu neexistují.
Definujte své nástroje jasně v tools pole. Použijte tool_choice abyste vynutili konkrétní chování. Pokud model odmítne zavolat nástroj, zkontrolujte svůj systémový prompt na konfliktní instrukce. Ujistěte se, že názvy nástrojů a popisy jsou nepřesné. Nejprve otestujte s jednoduchými dotazy, abyste ověřili integraci.
- Uveďte jasná jména nástrojů a jejich popisy.
- Použít
tool_choiceovlivnit vyvolání. - Ověřte argumenty proti vašemu schématu před provedením.
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"}]
}'
Přerušení streamu a zpracování SSE
Streamování pomocí Server-Sent Events (SSE) může ztrácet tokeny, pokud se klient odpojí nebo dojde k síťovým výpadkům. Poslední blok obsahuje statistiky využití tokenů. Tento blok musíte parsovat, abyste získali počty vstupu a výstupu.
Implementujte robustního klienta SSE, který zpracovává logiku opětovného připojení. Nepředpokládejte, že každá část obsahuje data. Některé části mohou být prázdné nebo obsahovat pouze mezery. Zpracujte poslední část pro aktualizaci zůstatku kreditů nebo počítadel tokenů. To zajišťuje přesné fakturování a sledování využití.
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)
Nastavení teploty ovlivňující NSFW výstup
Teplota ovládá náhodnost výstupu modelu. Vyšší hodnoty, jako 0,8 nebo 0,9, zvyšují kreativitu a nepředvídatelnost. Nižší hodnoty, jako 0,2, činí výstup více deterministickým a zaměřeným. Pro NSFW roleplay vyšší teploty produkují rozmanitější a intenzivnější odpovědi.
Experimentujte s různými hodnotami a najděte správnou rovnováhu. Příliš vysoká teplota může vést k nesouvislému nebo opakujícímu se textu. Příliš nízká teplota může vést k robotickému nebo nudnému dialogu. Přizpůsobte podle požadovaného tónu a konzistence. Model bez filtrů dobře reaguje na vyšší nastavení kreativity.
- Použijte 0,7–0,9 pro kreativní roleplay.
- Použijte 0,2–0,5 pro faktografické nebo kódovací úkoly.
- Sledujte kvalitu výstupu, jak upravujete.
Top P a rozmanitost při generování roleplay
Top P (nukleární vzorkování) omezuje model na zohlednění pouze horního procenta pravděpodobnostní hmotnosti. Funguje s teplotou k řízení rozmanitosti. Nízká hodnota Top P činí výstup předvídatelnějším. Vysoká hodnota umožňuje rozmanitější výběr slov.
Kombinujte Top P s teplotou pro jemnější kontrolu. Například vysoká teplota s nízkým Top P může vytvořit kreativní, ale zaměřený text. To je užitečné pro udržení hlasu postavy při současném umožnění spontánních akcí. Vyzkoušejte různé kombinace, které odpovídají vašemu vyprávěcímu stylu.
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)
Pochopení limitů a nákladů na tokeny
Použití tokenů přímo ovlivňuje váš předplacený kredit. API účtuje $0.15 za milion vstupních tokenů a $0.50 za milion výstupních tokenů. Výstupní tokeny jsou dražší, protože představují práci modelu. Streamování nemění cenu; platíte za všechny vygenerované tokeny.
Sledujte využití tokenů, abyste předešli neočekávaným poplatkům. Poslední chunk SSE poskytuje přesný počet tokenů. Použijte jej k aktualizaci místního zůstatku nebo přehledu fakturace. Chyby a odmítnutí jsou zdarma, takže platíte pouze za úspěšné dokončení. Tento model platby podle spotřeby zajišťuje, že nikdy nepřiplatíte.
- Vstupní tokeny stojí $0,15 za milion.
- Výstupní tokeny stojí $0,50 za milion.
- Odmítnutí a chyby jsou zdarma.
Výměna klíčů API a limity rychlosti
Každý účet umožňuje v daném okamžiku pouze jeden aktivní API klíč. Pokud svůj klíč obnovíte, starý okamžitě ztratí platnost. To zajišťuje bezpečnost, ale vyžaduje, abyste své klienty včas aktualizovali. Limity rychlosti jsou nastaveny na 300 požadků za minutu a 8 souběžných požadků na klíč.
Překročení těchto limitů má za následek chyby HTTP 429. Implementujte exponenciální backoff ve své logice opakování. Monitorujte objem požadavků, abyste zůstali v mezích. Pokud potřebujete vyšší propustnost, zvažte rozdělení zátěže mezi více účtů nebo optimalizaci velikosti promptů. Klíč se zobrazí ihned po registraci, takže jej mějte v bezpečí.
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);
Řešení běžných chyb HTTP
Chyby HTTP naznačují problémy s vaším požadavkem nebo odpovědí serveru. Mezi běžné chyby patří 400 Bad Request, 401 Unauthorized a 429 Too Many Requests. Chyba 400 často znamená neplatný JSON nebo neplatné parametry. Chyba 401 znamená nesprávný nebo expirovaný klíč API.
Zkontrolujte záhlaví a payload žádosti na syntaktické chyby. Ověřte, že váš API klíč je správný a aktivní. Pokud obdržíte chybu 429, počkejte a zkuste to znovu s exponenciálním backoff. Používejte oficiální SDK OpenAI pro automatické zpracování těchto chyb. Poskytují jasné chybové zprávy a logiku opakování. To snižuje čas vývoje a zlepšuje spolehlivost.
- 400: Zkontrolujte syntaxi JSON a parametry.
- 401: Ověřte platnost API klíče.
- 429: Implementujte logiku opakování s backoffem.
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"}]
}'