URL Base e Autenticazione
L'URL di base per tutte le richieste è https://api.veniceaiapipricing.com/v1. Autenticati passando la tua chiave API in Authorization header come token bearer. Questa configurazione funziona con qualsiasi SDK OpenAI standard. Sostituisci YOUR_API_KEY con la chiave generata dal dashboard del tuo account.
- Endpoint:
POST /v1/chat/completions - Intestazione:
Authorization: Bearer YOUR_API_KEY
curl https://api.veniceaiapipricing.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Return server status code 200"}]
}'
L'endpoint /v1/chat/completions
Invia la cronologia delle conversazioni a /v1/chat/completions utilizzando il uncensored ID del modello. L'API accetta oggetti di messaggio standard con role e content campi. I token di input costano $0.15 per milione, e i token di output costano $0.50 per milione. Errori e rifiuti non consumano credito.
Questo endpoint supporta la generazione solo di testo. Non gestisce immagini, audio o embedding. È possibile trasmettere le risposte o recuperare il testo completo in un singolo oggetto JSON.
from openai import OpenAI
client = OpenAI(base_url="https://api.veniceaiapipricing.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)
Risposte in streaming (SSE)
Abilita lo streaming impostando stream: true nel corpo della richiesta. L'API restituisce Server-Sent Events (SSE) per ogni token generato. L'ultimo chunk contiene le statistiche totali di utilizzo dei token. Questo metodo riduce la latenza percepita per le risposte lunghe.
La gestione dello stream è essenziale per le applicazioni in tempo reale. Puoi elaborare i token man mano che arrivano invece di attendere il completamento completo.
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)
Function Calling e modalità JSON
L'API supporta output strutturati e definizioni di strumenti. Usa response_format: {"type": "json_object"} per forzare l'output JSON. Puoi anche passare tools per il function calling, consentendo al modello di restituire dati strutturati per la logica della tua applicazione.
Questa funzionalità è utile per l'estrazione di dati o l'attivazione di azioni. Il modello restituisce le chiamate agli strumenti in un formato standardizzato. Puoi quindi eseguire le tue funzioni e restituire i risultati alla conversazione.
Parametri: Temperatura, Top P e Seed
Controlla la creatività con temperature e top_p. Il seed parameter garantisce output deterministici per i test. Questi parametri seguono le convenzioni standard di OpenAI. La loro regolazione influisce sulla casualità del testo generato.
Imposta temperature a 0.7 per una creatività bilanciata. Utilizza seed per risultati riproducibili. L'API ignora i parametri non supportati in modo elegante.
Limiti di frequenza e vincoli
Hai un limite di 300 richieste al minuto per chiave. È consentito un massimo di 8 richieste concorrenti per chiave. La dimensione del corpo della richiesta è limitata a 8 MB. La finestra di contesto è di 100.000 token per input e output combinati. L'output massimo per richiesta è di 16.000 token.
Il superamento di questi limiti restituisce un errore 429. Assicurati che il client gestisca i tentativi di ripetizione in modo appropriato. La chiave API è unica per account; la generazione di una nuova chiave sostituisce quella vecchia.
Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.veniceaiapipricing.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);