IT ▾
https://api.unrestrictedaiapi.com/v1uncensored2026-10-06
Ottieni la chiave API

Come fare il prompting di un modello senza restrizioni senza sprecare token

Un modello senza limiti non rifiuta materiale adulto lecito o oscuro, spostando tutta la guida sul tuo prompt. Questa guida mostra come appare un system prompt funzionante, come scrivere persone e toni, come estrarre JSON per istruzione, quali valori di campionamento provare e le abitudini che consumano silenziosamente i token.

Aggiornato

Punti chiave

  1. Assegna al prompt di sistema due compiti: chi parla e come deve essere la risposta.
  2. Usa esempi e regole verificabili invece di aggettivi come creativo o immersivo.
  3. Per il JSON, specifica lo schema, mantieni la temperatura bassa, analizza in modo difensivo e riprova citando l'errore.
  4. Modifica la temperatura prima del top_p e testa con dieci campioni reali.

Un prompt di sistema ha due compiti

La maggior parte delle risposte deboli deriva da un prompt di sistema che cerca di essere un romanzo. Assegna solo due compiti: dì chi parla e dì come deve essere la risposta. Tutto il resto va nella conversazione, dove può cambiare turno per turno.

Ecco un prompt di persona che funziona perché ogni riga è verificabile. La voce è nominata, la lunghezza è limitata e la regola finale offre al giocatore un aggancio.

You are Mara Voss, a salvage pilot narrating in first person.
Voice: dry, tired, funny when it hurts.
Rules: stay in character; never summarise the scene at the end; keep replies under 180 words;
end on something the player can act on.

Confrontalo con "Sei un narratore incredibile, creativo e immersivo che non rompe mai l'immersione e scrive sempre la risposta migliore possibile." Nulla in esso può essere verificato, quindi il modello non ha nulla su cui aggrapparsi. Il concreto batte il superlativo ogni volta.

Un modello senza limiti seguirà una premessa oscura o esplicita senza aggiungere avvertenze, quindi la responsabilità della direzione è tua. Tutto ciò che non specifichi, lo riempirà con la scelta più tipica. Se vuoi contenuto in una scena e calore nella successiva, dillo nelle istruzioni, non per speranza.

Configurazione con l'SDK OpenAI

L'endpoint è compatibile con OpenAI, quindi l'SDK Python ufficiale funziona dopo aver cambiato l'URL di base. L'ID del modello è sempre uncensored. I campi di campionamento passano direttamente, quindi li imposti nel modo in cui sai già fare.

import os
from openai import OpenAI

client = OpenAI(base_url="https://api.unrestrictedaiapi.com/v1", api_key=os.environ["API_KEY"])

SYSTEM = """You are Mara Voss, a salvage pilot narrating in first person.
Voice: dry, tired, funny when it hurts.
Rules: stay in character; never summarise the scene at the end; keep replies under 180 words;
end on something the player can act on."""

out = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": SYSTEM},
        {"role": "user", "content": "The airlock is jammed and something is knocking from the other side."},
    ],
    temperature=0.85,
    top_p=0.95,
    max_tokens=350,
)
print(out.choices[0].message.content)

Mantieni il messaggio di sistema all'inizio e il turno dell'utente all'ultima posizione. Ripetere la persona in ogni messaggio dell'utente spreca token; a $0.25 per milione di token di input è economico, ma occupa anche la finestra da 100.000 token nelle sessioni lunghe. Vedi la guida rapida se preferisci saltare l'SDK.

Persone e tono: mostra, non usare aggettivi

Gli aggettivi sono leve deboli. "Sarcastico" ti garantisce un tipico sospiro di noia. Un campione di due righe della voce ti dà la voce effettiva. Inserisci uno scambio breve di esempio nel system prompt, poi ordina al modello di adattarne il ritmo, non di copiarne le parole.

  • Assegna un tic verbale. "Finisce le minacce con una domanda" è più utile di "minaccioso".
  • Assegna un desiderio. Un personaggio che vuole che il giocatore se ne vada resta più definito di uno che "è maleducato".
  • Assegna una lista di divieti. "Non dire mai 'all'improvviso', non usare mai la parola 'brivido'" elimina le frasi fatte a cui il modello ricorre per primo.
  • Dai una lunghezza. Parole o frasi, non "breve". I modelli interpretano "breve" molto generosamente.

Per i cambi di tono a metà sessione, aggiungi una breve istruzione simile al sistema come messaggio più recente invece di riscrivere l'originale. Una riga come "Da qui, Mara è spaventata e parla a frammenti" ha più impatto quando è recente.

Ottenere JSON per istruzione

Non esiste una modalità JSON speciale da attivare, quindi la richiedi e la verifichi. È meno fragile di quanto sembri se segui quattro abitudini: dichiara lo schema esatto, vieta prose e blocchi di codice, mantieni la temperatura bassa e analizza in modo difensivo con un retry che cita l'errore.

import json
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.unrestrictedaiapi.com/v1", api_key=os.environ["API_KEY"])

INSTRUCTION = """Return ONLY a JSON object, no prose, no code fences.
Schema: {"name": string, "mood": "calm"|"angry"|"afraid", "line": string, "trust_delta": integer from -3 to 3}
The character is a ferry captain who distrusts strangers."""

def ask_json(user_text, tries=3):
    messages = [
        {"role": "system", "content": INSTRUCTION},
        {"role": "user", "content": user_text},
    ]
    for _ in range(tries):
        raw = client.chat.completions.create(
            model="uncensored", messages=messages, temperature=0.3, max_tokens=250
        ).choices[0].message.content.strip()
        if raw.startswith("```"):
            raw = raw.strip("`").removeprefix("json").strip()
        try:
            data = json.loads(raw)
            if data["mood"] in ("calm", "angry", "afraid"):
                return data
        except (json.JSONDecodeError, KeyError):
            pass
        messages.append({"role": "assistant", "content": raw})
        messages.append({"role": "user", "content": "That was not valid per the schema. Reply with the JSON object only."})
    raise ValueError("model never produced valid JSON")

print(ask_json("I need passage across the strait tonight."))

Nota cosa fa il ciclo in caso di errore. Invia di nuovo la risposta errata e indica cosa è sbagliato, il che risolve la maggior parte dei casi al secondo tentativo. Elenca i valori consentiti ("calm"|"angry"|"afraid") perché le stringhe aperte tendono a deviare. Se devi far scatenare il modello qualcosa nella tua app invece che descriverlo, le chiamate di strumenti nel formato OpenAI sono supportate e sono una soluzione migliore rispetto all'analisi del testo.

Esempi few-shot e sequenze di stop

Quando una regola è difficile da esprimere a parole, mostrala. Due o tre scambi di esempio posizionati come messaggi user e assistant precedenti insegnano formato, lunghezza e registro in modo più affidabile di un paragrafo di descrizione. Mantieni i campioni brevi e diversi tra loro, altrimenti il modello clonerà la struttura del primo in ogni risposta.

I campioni risolvono anche il problema opposto: risposte che si allungano troppo. Se le tue risposte campione sono di 60 parole, le risposte live tendono verso le 60 parole. Abbinalo a un max_tokens ragionevole come rete di sicurezza, non come controllo principale. Un limite rigido taglia una frase a metà; un buon campione la chiude educatamente.

Per le scene con più parlanti, un valore stop uguale all'etichetta del tuo parlante impedisce al modello di impersonare il giocatore. Scegli un'etichetta che non appare mai nella prosa normale e rimuovila dalla cronologia archiviata così non trapela nei turni successivi.

Temperatura e top_p: scegli una leva

Entrambi i campi ridefiniscono la stessa distribuzione di probabilità, quindi modificarli entrambi contemporaneamente rende difficile ragionare sui risultati. Modifica prima temperature e lascia top_p vicino a 1 a meno che tu non abbia una ragione.

Attivitàtemperaturatop_pMotivo
JSON strutturato, classificazione0,0 a 0,31,0Vuoi la stessa risposta ogni esecuzione
Dialogo, gioco di ruolo0,7 a 0,90,95Varietà senza assurdità
Brainstorming, narrativa libera1,0 a 1,20,9Vocabolario più ampio; prevedi alcuni errori

Questi intervalli sono punti di partenza basati sulla pratica comune, non garanzie. Testa con dieci campioni del tuo prompt e leggili. Aggiungi sequenze stop quando vuoi che il modello si arresti a un marcatore di turno come \nPlayer: invece di scrivere le battute del giocatore per lui.

Anti-pattern del prompt che sprecano token

  1. Le urla in maiuscolo. "NON DIMENTICARE MAI" non aumenta la conformità. Ripeti una regola una volta, chiaramente, e spostala alla fine del system prompt.
  2. Regole solo negative. "Non essere ripetitivo" non dà un obiettivo. Dì "varia le aperture delle frasi; nessuna delle due frasi consecutive inizia con la stessa parola".
  3. Contraddizioni. "Sii estremamente dettagliato" più "mantienilo breve" forza un lancio di moneta. Scegli una e fornisci un numero.
  4. Struttura apologetica. Precedere una richiesta con "So che è audace, ma" invita all'incertezza. Descrivi la scena come un fatto semplice della narrativa.
  5. Riempimento del registro. Incollare l'intero log a ogni turno alla fine supera il limite di 100.000 token e genera un errore 400. Taglia i turni vecchi.
  6. Output illimitato. Dimenticare max_tokens significa che il default 2048 decide la lunghezza della tua risposta, non tu.

Un confine rimane fisso indipendentemente da ciò che dice il prompt: i contenuti sessuali che coinvolgono minori sono sempre bloccati con un 403, anche nella finzione e nel roleplay, e il servizio è solo per adulti. Non spendere token cercando di aggirarlo. Resisti anche alla tentazione di aggiungere una nuova regola dopo ogni risposta sbagliata; un prompt che cresce di una riga al giorno finisce per contraddire se stesso entro una settimana, quindi pota spesso quanto aggiungi.

Un ciclo per migliorare un prompt

Tratta il system prompt come codice. Tienilo in un file, modifica una cosa per esecuzione e confronta i risultati fianco a fianco. Una routine funzionante: scrivi cinque input di test fissi, inclusi uno ostile e uno ambiguo; esegui ciascuno alla tua temperatura scelta tre volte; nota quale regola ha fallito più spesso; correggi solo quella regola; riesegui.

Bilancia gli esperimenti. Come supposizione, un system prompt da 300 token più un input da 100 token e una risposta da 250 token equivalgono a 400 token di input e 250 di output. Quindici esecuzioni costano circa 15 x (400 x $0,25 + 250 x $1,00) / 1.000.000 = circa $0,005. Il testing è quasi gratuito, quindi non c'è scusa per ipotizzare.

Una volta che il prompt regge, inseriscilo in un'app reale. Il tutorial bot mostra come mantenere una cronologia separata per canale, e la guida contenuti copre l'uso nella narrativa per adulti. I dettagli sui prezzi sono nella pagina dei prezzi.

Domande e risposte

Un modello senza restrizioni ha bisogno di un prompt stile jailbreak?

No. I contenuti adulti legali e la finzione non sono rifiutati, quindi una semplice personalità e regole chiare sono sufficienti. I contenuti che coinvolgono minori sono bloccati indipendentemente dal testo del prompt.

C'è una modalità JSON?

Non come un interruttore separato. Richiedi lo schema nel prompt, usa una temperatura bassa e valida l'output nel codice, riprovando una o due volte in caso di errore di parsing.

Con quale temperatura dovrei iniziare?

Circa 0,8 per il dialogo e la finzione, 0,2 per l'output strutturato. Regola un valore alla volta.

Quanto può essere lungo un prompt?

La somma di prompt e completamento deve rientrare in 100.000 token, altrimenti l'API restituisce un errore 400.

La tua chiave è a un modulo di distanza

Crea un account, copia la chiave, modifica il base URL. È tutta la configurazione.

Ottieni la chiave API