Miksi JSON-vastauksesi epäonnistuu validoinnissa
JSON-jäsennys epäonnistuu, kun malli liittää keskustelutekstiä koodilohkon ulkopuolelle. Uncensored-mallit priorisoivat luonnollista kielenkulkua, joten ne lisäävät usein "Tässä on JSON" raakadatan eteen tai jälkeen. Tämä rikkoo tiukat jäsentimet, jotka odottavat vain objektia.
Käytä response_format parametri asetettu {"type": "json_object"}. Tämä pakottaa mallin tuottamaan vain kelvollista JSONia. Se poistaa tarpeen regex-siivouskoodille koodissasi. Huomioithan kuitenkin, että tämä kuluttaa enemmän tokeneita pyyntöä kohden, koska malli on rajoitettu.
- Aseta
response_formatvastaanjson_objectpyyntöpayloadissasi. - Varmista, että järjestelmäohjeessa pyydetään nimenomaisesti JSON-lähtöä.
- Käsittele peräkkäiset pilkut tai pienet syntaksivirheet sujuvasti, jos malli kompastuu niihin.
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)
Kontekstiikkunarajojen oikea käsittely
Kontekstikkonisi sisältää yhteensä 100 000 tokenia, jotka yhdistävät syötteen ja tuloksen. Jos lähetät pitkän historian, sinun on pienennettävä maksimitulopituutta. Oletusarvoinen maksimitulos on 2 048 tokenia, ellei toisin määritetä.
Laske jäljellä olevat tokenit vähentämällä syötteen koko 100 000:sta. Jos teet roolipeliä, pidä järjestelmäprompti tiiviinä. Tallenna vain viimeisimmät keskustelun vuorot API-pyyntöön. Vanhempi konteksti voidaan tiivistää tai katkaista. Tämä estää kovaa rajaa osumisen generaation aikana.
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);
Toimintokutsuvirheet epäsuodatetuissa malleissa
Toimintokutsu epäonnistuu, kun malli jättää työkalumäärittelyt huomiotta tai palauttaa virheellisiä argumentteja. Epäsuodatetut mallit voivat priorisoida luovia vastauksia tiukan työkalunkäytön sijaan. Ne voivat keksiä parametreja, jotka eivät ole skeemassasi.
Määritä työkalut selkeästi tools taulukkoa. Käytä tool_choice pakottaa tiettyä käyttäytymistä. Jos malli kieltäytyy kutsumasta työkalua, tarkista järjestelmäviestisi ristiriitaisista ohjeista. Varmista, että työkalujen nimet ja kuvaukset ovat yksiselitteisiä. Testaa yksinkertaisilla kysymyksillä ensin varmistaaksesi integraation.
- Anna selkeät työkalun nimet ja kuvaukset.
- Käyttö
tool_choicehallita luovuutta, kutsumista. - Validoi argumentit skeemasasi mukaan ennen suorittamista.
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"}]
}'
Streamauskatkokset ja SSE-käsittely
SSE-virtaus (Server-Sent Events) voi pudottaa tokenit, jos asiakas katkaisee yhteyden tai verkossa tapahtuu häiriöitä. Viimeinen palikka sisältää token-käyttötilastot. Sinun on jäsentää tämä palikka saadaksesi syöttö- ja lähtömäärät.
Ota käyttöön robusti SSE-asiakas, joka käsittelee yhdistämisen loogisen uudelleen. Älä oleta, että jokainen lohko sisältää dataa. Jotkut lohkot voivat olla tyhjiä tai sisältää vain välilyöntejä. Käsittele viimeinen lohko päivittääksesi luottosalton tai tokenlaskurit. Tämä varmistaa tarkan laskutuksen ja käytön seurannan.
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)
Lämpötila-asetukset vaikuttavat NSFW-sisältöön
Lämpötila ohjaa mallin tuotannon satunnaisuutta. Korkeammat arvut kuten 0,8 tai 0,9 lisäävät luovuutta ja ennakoimattomuutta. Matalammat arvut kuten 0,2 tekevät tuloksesta määrätietoisemman ja keskittyneemmän. NSFW-hahmopelussa korkeammat lämpötilat tuottavat monipuolisempia ja intensiivisempiä vastauksia.
Kokeile eri arvoja löytääksesi oikean tasapainon. Liian korkea temperature voi johtaa epäjohdonmukaiseen tai toistuvaan tekstiin. Liian matala temperature voi johtaa robotteihin tai mauttomiin dialogeihin. Säädä toivotun sävyn ja johdonmukaisuuden mukaan. Sulkematon malli reagoi hyvin korkeampiin luovuusasetuksiin.
- Käytä arvoa 0,7–0,9 luovaan roolipelaamiseen.
- Käytä arvoa 0,2–0,5 faktojen tai kooditehtävien yhteydessä.
- Seuraa tulosten laatua säädettäessä.
Top P ja monipuolisuus roolipeliluonnissa
Top P (ydinnäytteenotto) rajoittaa mallin tarkastelemaan vain todennäköisyyden massan ylintä prosenttia. Se toimii lämpötilan kanssa ohjaamaan monipuolisuutta. Matala Top P -arvo tekee tuloksesta ennustettavampaa. Korkea arvo mahdollistaa monipuolisemman sanavalinnan.
Yhdistä Top P lämpötilan kanssa hienojen säätöjen saavuttamiseksi. Esimerkiksi korkea lämpötila matalalla Top P:llä voi tuottaa luovaa mutta tarkennettua tekstiä. Tämä on hyödyllistä hahmon äänen ylläpitämisessä samalla kun sallitaan spontaaneja toimia. Testaa eri yhdistelmiä sopivaksi tarinatyylillesi.
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)
Token-rajojen ja kustannusten ymmärtäminen
Token-käyttö vaikuttaa suoraan esimaksusaldoosi. API laskuttaa $0.15 miljoonaa syöttötokenia kohden ja $0.50 miljoonaa tulostokenia kohden. Tulostokenit ovat kalliimpia, koska ne edustavat mallin työtä. Streamaus ei muuta kustannusta; maksat kaikista luoduista tokenista.
Seuraa token-käyttöäsi välttääksesi yllättävät laskut. Lopullinen SSE-lohkko sisältää tarkan token-määrän. Käytä tätä paikallisen saldon tai laskutuspaneelin päivittämiseen. Virheet ja hylkäykset ovat ilmaisia, joten maksat vain onnistuneista suorituksista. Tämä käyttöön perustuva hinnoittelu varmistaa, ettet maksa liikaa.
- Syötetekstitokenit maksavat 0,15 $ per miljoona.
- Lähtötokentat maksavat 0,50 $ miljoonaa kohden.
- Kieltäytymiset ja virheet ovat ilmaisia.
API-avaimen vaihto ja nopeusrajoitukset
Jokaiselle tilille sallitaan vain yksi aktiivinen API-avain. Jos regeneroit avaimen, vanha muuttuu epävoimaiseksi välittömästi. Tämä varmistaa turvallisuuden, mutta vaatii sinua päivittämään asiakasohjelmasi nopeasti. Nopeusrajoitukset on asetettu 300 pyyntöön minuutissa ja 8 samanaikaiseen pyyntöön per avain.
Näiden rajojen ylittäminen johtaa HTTP 429 -virheisiin. Toteuta eksponentiaalinen viive uudelleenyrityslogiikassasi. Seuraa pyyntömäärää pysyäksesi rajojen sisällä. Jos tarvitset suurempaa läpäisykykyä, harkitse työn jakamista useiden tilien välillä tai promptikokojen optimointia. Avain näytetään välittömästi rekisteröitymisen jälkeen, joten pidä se turvassa.
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);
Yleisten HTTP-virheiden vianetsintä
HTTP-virheet viittaavat pyyntösi tai palvelimen vastauksen ongelmiin. Yleisimmät virheet ovat 400 Bad Request, 401 Unauthorized ja 429 Too Many Requests. Virhe 400 tarkoittaa usein virheellistä JSONia tai virheellisiä parametreja. Virhe 401 tarkoittaa väärää tai vanhentunutta API-avainta.
Tarkista pyyntöotsakkeesi ja payload-syntaksivirheet. Varmista, että API-avaimesi on oikein ja aktiivinen. Jos saat 429-virheen, odota ja yritä uudelleen eksponentiaalisella backoffilla. Käytä virallisia OpenAI SDK:ita näiden virheiden käsittelyyn automaattisesti. Ne tarjoavat selkeitä virheilmoituksia ja uudelleenyrittämislogiikkaa. Tämä vähentää kehitysaikaa ja parantaa luotettavuutta.
- 400: Tarkista JSON-syntaksi ja parametrit.
- 401: Vahvista API-avaimesi voimassaolo.
- 429: Ota käyttöön uusintalogiikka taaksepäinpalautuksella.
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"}]
}'