cs ▾
Získat API klíč

Unrestricted ai: Troubleshooting Common Mistakes

Vývojáři často narazí na stěny při přechodu na poskytovatele AI bez omezení, protože standardní předpoklady o formátování, limitech a chování streamování již neplatí. Tento průvodce vám pomůže ladit nejčastější chyby integrace, abyste mohli nasadit svůj model bez plýtvání kredity nebo rozbitych pracovních postupů.

Naposledy aktualizováno

Shrnutí

  1. Okno kontextu zahrnuje jak prompt, tak i výstup, takže musíte rezervovat prostor pro výstup, abyste předešli zkrácení.
  2. Režim JSON vyžaduje přísné dodržování schématu a model může vrátit další text, pokud je prompt nejednoznačný.
  3. Odpovědi streamované přes SSE vyžadují, abyste bezpečně zpracovali částečné tokeny bez narušení vašeho parseru.
  4. Omezení rychlosti se uplatňují pro každý klíč, takže přerušovaný provoz vyžaduje pečlivé strategie backoffu, aby se předešlo chybám 429.

1. Strop kontextového okna

Každý požadavek počítá tokeny jak z promptu, tak z vygenerovaného dokončení proti vašemu celkovému limitu. Pokud odešlete velký kontext a požadujete dlouhou odpověď, dosáhnete stropu dříve, než model dokončí generování textu. Náš neomezený model podporuje kontextové okno o velikosti 100,000 tokenů, ale maximální výstup na požadavek je omezen na 16,000 tokenů, pokud neurčíte jinak. Vždy vypočítejte zbývající tokeny po vašem systémovém promptu a historii konverzace, abyste zajistili, že má model dostatek místa pro dokončení myšlenky. Nedostatečné zohlednění tohoto faktu často vede k ořezaným odpovědím, které matují následné parsery.

from openai import OpenAI

client = OpenAI(base_url="https://api.chatgptunrestricted.cc/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)

2. Režim JSON a přísné formátování

Režim JSON vynucuje, aby model výstupoval platný JSON, ale nezaručuje dokladné dodržování schématu v každém okrajovém případě. Když nastavíte formát odpovědi na json_object, model upřednostňuje syntaktickou platnost před přísnou kontrolou typů. Pokud je vaše schéma příliš složité, model může halucinovat pole nebo vynechat volitelná pole, aby zachoval platnou strukturu. Vždy ověřte výstup na své straně před jeho parsováním jako striktní typ. To platí zejména pro uncensored modely, které si mohou dovolit kreativní svobodu uvnitř hodnot JSON.

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.chatgptunrestricted.cc/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);

3. Částečné odpovědi při streamování

Streamování umožňuje přijímat tokeny v okamžiku jejich generování, což zlepšuje vnímanou latenci u velkých odpovědí. Musíte správně zpracovat stream Server-Sent Events (SSE), abyste předešli ztrátě dat nebo chybám parseru. Každý fragment obsahuje částečný token a poslední fragment obsahuje celkovou spotřebu tokenů pro požadavek. Pokud připojení přerušíte předčasně, přijdete o data o spotřebě v posledním fragmentu a můžete ponechat server v nekonzistentním stavu. Vždy zajistěte, aby váš klient dokázal zpracovat neúplné fragmenty JSON, pokud streamujete strukturovaná data.

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)

4. Chyby při výběru nástroje a volání funkcí

Volání funkcí vyžaduje přesná schémata a často selže, pokud model nedokáže mapovat vstup uživatele na konkrétní nástroj. Pokud specifikujete tool_choice, model může vynutit volání nástroje, i když to není vhodné, což vede k prázdným nebo irelevantním argumentům. Ujistěte se, že definice nástrojů jsou jednoduché a jasně popsané. Model podporuje standardní formáty nástrojů kompatibilní s OpenAI, takže můžete používat existující SDK. Vždy však ověřte, že argumenty předané nástroji přesně odpovídají očekávaným typům.

curl https://api.chatgptunrestricted.cc/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 architecture"}]
  }'

5. Nastavení teploty a kreativity

Úpravou teploty se mění, jak model vybírá tokeny, což ovlivňuje náhodnost výstupu. Vyšší teplota vede k kreativnějším a rozmanitějším odpovědím, zatímco nižší teplota činí výstup více deterministickým a zaměřeným. Pokud používáte model pro generování kódu nebo získávání faktů, udržujte teplotu nízkou, abyste předešli halucinacím. Pro kreativní psaní nebo brainstorming zvýšte teplotu, abyste prozkoumali více rozmanitých nápadů. Experimentujte s top_p také k řízení nucleus samplingu a dalšímu zpřesnění kvality výstupu.

from openai import OpenAI

client = OpenAI(base_url="https://api.chatgptunrestricted.cc/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)

6. Zpracování velkých payloadů

Velká tělesa požadavků mohou překročit limit 8 MB, což způsobí tiché selhání vašich volání API nebo chybu 413. Pokud odesíláte dlouhé historie konverzací, zvažte oříznutí starších zpráv nebo jejich shrnutí před odesláním. Model zvládne 100,000 tokenů, ale fyzická velikost JSON payloadu také záleží. Ujistěte se, že vaše knihovna klientů data efektivně komprimuje nebo formátuje. Vždy zkontrolujte délku obsahu před odesláním požadavku, abyste se vyhnuli plýtvání kredity na neúspěšné pokusy.

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.chatgptunrestricted.cc/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);

7. Tlumení limitů rychlosti

Omezení rychlosti se uplatňují pro každý klíč API samostatně, s maximem 300 požadavků za minutu a 8 souběžných požadavků. Pokud tyto limity překročíte, obdržíte chybu 429. Implementujte v klientské aplikaci exponenciální backoff pro plynulé zpracování opakování. Náhlé špičky provozu mohou rychle vyčerpat limit souběžnosti, proto pokud je to možné, rozložte požadavky v čase. Sledování vašeho využití a úprava nastavení souběžnosti vám pomohou zůstat v mezích bez obětování výkonu. To je klíčové pro udržení plynulé uživatelské zkušenosti v produkčním prostředí.

curl https://api.chatgptunrestricted.cc/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 architecture"}]
  }'

8. Nesrovnalosti v počítání tokenů

Různé tokenizery mohou počítat tokeny různým způsobem, což vede k nesrovnalostem mezi vaším lokálním počtem a počtem API. Vždy používejte stejný tokenizátor jako model pro přesné účtování. API účtuje na základě skutečně zpracovaných tokenů, takže pochopení tohoto rozdílu vám pomůže přesněji předpovídat náklady. Pokud zaznamenáte významné odchylky, zkontrolujte implementaci tokenizátoru. To je zvláště důležité při integraci s knihovnami třetích stran, které mohou používat jiné strategie tokenizace.

from openai import OpenAI

client = OpenAI(base_url="https://api.chatgptunrestricted.cc/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)

Často kladené otázky

Jakou je hlavní výhodou použití neomezeného modelu AI oproti standardním nabídkám?

Neomezený model AI obvykle neodepírá zákonná témata pro dospělé, tvůrčí nebo kontroverzní obsah, což poskytuje větší svobodu pro specifické případy použití. Umožňuje vývojářům generovat obsah bez omezení firemních bezpečnostních filtrů, což z něj činí ideální volbu pro specializované nebo odvážnější aplikace.

Jak řešit chyby parsování JSON při použití streamování?

Streamování odesílá částečná data, takže musíte bufferovat části, dokud stream neskončí, nebo parsovat inkrementálně, pokud to váš klient podporuje. Vždy ověřte konečnou strukturu JSON před použitím ve vaší aplikaci. Pokud dojde k chybám, zkontrolujte výstup modelu na jakýkoli koncový text, který by mohl narušit syntaxi JSON.

Mohu použít toto API pro volání funkcí s existujícími nástroji?

Ano, API podporuje standardní volání funkcí kompatibilní s OpenAI. V požadavku můžete definovat nástroje a model se je pokusí zavolat, pokud to kontext naznačuje. Ujistěte se, že schémata vašich nástrojů jsou jasná a odpovídají očekávaným typům argumentů.

Co se stane, pokud překročím limit výstupu 16,000 tokenů?

Pokud požadujete více než 16 000 tokenů pro dokončení, model přestane generovat na tomto limitu. Pro delší odpovědi může být nutné implementovat strategii pro pokračování generování v následujících požadavcích nebo upravit prompt tak, aby byl stručnější.

Získejte svůj API klíč

Zaregistrujte se, získejte klíč a nasměrujte klienta na novou základní URL. To je vše, co musíte udělat.

Získat API klíč