Fai girare i riassunti video di BibiGPT su un'API OpenAI-compatible personalizzata.
Updated 2026-07-30
BibiGPT self-hosted legge OPENAI_COMPATIBLE_BASE_URL, OPENAI_COMPATIBLE_API_KEY, e OPENAI_COMPATIBLE_MODEL dal suo ambiente. Punta l'URL base su https://api.apisrouter.com/v1 e ogni riassunto di Bilibili, YouTube, o podcast gira attraverso il gateway, con modelli cinesi e globali dietro una chiave.
Risposta rapida: tre variabili d'ambiente.
Il file di ambiente di esempio di BibiGPT documenta la superficie direttamente: OPENAI_COMPATIBLE_BASE_URL imposta l'endpoint (default https://api.openai.com/v1), OPENAI_COMPATIBLE_API_KEY contiene la chiave (ricadendo su OPENAI_API_KEY se non impostata), e OPENAI_COMPATIBLE_MODEL sceglie il modello predefinito per i riassunti. Imposta l'URL base su https://api.apisrouter.com/v1, metti una chiave gateway nella variabile chiave, e scegli qualsiasi id del catalogo come modello. L'URL base viene validato all'uso: deve iniziare con http:// o https://, e gli slash finali vengono rimossi, quindi la forma /v1 sopra è esattamente corretta. Sotto il cofano l'app costruisce un provider openai-compatible del Vercel AI SDK da questi valori e chiama chatModel con l'id configurato, il che è il motivo per cui qualsiasi modello che l'endpoint serve funziona senza modifiche al codice.
# Optional: use OpenAI-compatible providers (falls back to OPENAI_API_KEY)
OPENAI_COMPATIBLE_API_KEY=sk-YOUR-APISROUTER-KEY
OPENAI_COMPATIBLE_BASE_URL=https://api.apisrouter.com/v1
OPENAI_COMPATIBLE_MODEL=deepseek-v4-flashCosa invia BibiGPT all'endpoint.
BibiGPT (JimmyLv su GitHub, circa 6K stelle per la v1 open source) è un riassuntore AI a un clic per audio e video: incolla un link Bilibili o YouTube, un podcast, una registrazione di riunione, o un file locale, e recupera la trascrizione, la condensa, e ti lascia chattare con il contenuto. È iniziato come BiliGPT per i riassunti di Bilibili ed è cresciuto in uno strumento bilingue con un successore ospitato; la configurazione d'ambiente descritta qui si applica alla versione open source self-hosted. Il carico di lavoro ha la forma di una trascrizione: input lunghi, output brevi. Un'ora di parlato è molta trascrizione, che l'app suddivide in pezzi delle dimensioni del modello prima di riassumere, quindi un video può significare diverse chiamate chat-completions i cui token di input sovrastano il riassunto che producono. Il prezzo per token di input è quindi tutta l'economia, e i modelli a contesto lungo riducono il chunking per lezioni e podcast lunghi. La costruzione del provider risolve i valori in una cascata sensata: una chiave per richiesta (per istanze che lasciano gli utenti portare la propria) vince su OPENAI_COMPATIBLE_API_KEY, che vince su OPENAI_API_KEY; lo stesso vale per l'URL base e il modello. C'è persino una variabile OPENAI_COMPATIBLE_KEY_PREFIXES per accettare chiavi inserite dagli utenti i cui prefissi non sono sk-, il che conta quando le chiavi che i tuoi utenti possiedono provengono da un gateway piuttosto che da OpenAI.
Configurazione completa per un'istanza self-hosted.
BibiGPT è un'app Next.js, quindi l'ambiente viaggia in base a come lo distribuisci: un file .env in locale, variabili d'ambiente di progetto su Vercel, o ambiente del container in Docker. Imposta le tre variabili, ridistribuisci o riavvia, e i riassunti instradano attraverso il gateway. La variabile del modello è il default, non un limite rigido. Le richieste portano una config per video il cui campo model, quando presente, sovrascrive OPENAI_COMPATIBLE_MODEL, quindi un'istanza può avere come default un id di volume mentre flussi specifici richiedono uno più forte. Se fai girare l'istanza per altri e lasci che incollino le proprie chiavi, imposta OPENAI_COMPATIBLE_KEY_PREFIXES per includere il prefisso della chiave del tuo gateway così il modulo le accetta.
OPENAI_COMPATIBLE_API_KEY=sk-YOUR-APISROUTER-KEY
OPENAI_COMPATIBLE_BASE_URL=https://api.apisrouter.com/v1
OPENAI_COMPATIBLE_MODEL=deepseek-v4-flash
# accepting user-entered gateway keys in the UI:
OPENAI_COMPATIBLE_KEY_PREFIXES=sk-Scegliere un modello di riassunto, Oriente e Occidente.
Il confronto è facile da eseguire onestamente: stesso video, due id di modello, leggi entrambi i riassunti contro la trascrizione. Il log di utilizzo per chiave prezza ogni candidato su contenuto reale, e per i carichi di lavoro di trascrizione la differenza è visibile immediatamente nella colonna dei token di input.
- Il contenuto cinese è il terreno di casa di BibiGPT: lezioni Bilibili, clip Douyin, podcast cinesi. glm-5.2, deepseek-v4-flash, e kimi-k2.6 sono nativamente forti su trascrizioni cinesi e siedono dietro lo stesso endpoint di tutto il resto.
- Il contenuto inglese e misto (YouTube, podcast globali) va bene con claude-haiku-4-5-20251001 e gemini-3.5-flash, entrambi a proprio agio con trascrizioni lunghe e rumorose.
- Questa divisione è l'argomento pratico Cina-più-globale per un gateway: un endpoint, una chiave, e l'override del modello per video sceglie la famiglia giusta per fonte di contenuto invece di forzare un fornitore per entrambe.
- Le lezioni lunghe premiano il contesto lungo. Meno chunk significa meno chiamate e un riassunto più coerente; testa un id a contesto lungo contro il tuo contenuto più lungo prima di standardizzare.
- Le istanze di volume (un team che riassume tutto ciò che guarda) dovrebbero avere come default deepseek-v4-flash ed escalare selettivamente; la forma pesante di input fa accumulare il prezzo di fascia veloce.
Pagamento a consumo · sotto i prezzi ufficiali
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Modello | Prezzo ufficiale | Il nostro prezzo |
|---|---|---|
| DeepSeek V4 Flash | $0.14 / $0.28 per M | $0.10 / $0.30 per M |
| GLM-5.2 | $1.14 / $4.00 per M | $1.10 / $4.00 per M |
| Kimi K2.6 | $0.95 / $4.00 per M | $1.00 / $4.00 per M |
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.00 per M |
| Gemini 3.5 Flash | $1.50 / $9.00 per M | $1.20 / $7.20 per M |
Modalità di errore specifiche di BibiGPT.
La catena di fallback può sorprenderti. Se OPENAI_COMPATIBLE_API_KEY è vuota, l'app ricade silenziosamente su OPENAI_API_KEY. Va bene finché i due puntano allo stesso servizio, e confonde quando non lo fanno: un URL base gateway con una chiave OpenAI produce errori di autenticazione che sembrano problemi del gateway. Quando il routing cambia, imposta insieme la coppia con prefisso compatible e non lasciare un OPENAI_API_KEY obsoleto che punta altrove, o assicurati che contenga la stessa chiave gateway. Il validatore dell'URL base rifiuta valori senza schema, quindi un host nudo fallisce rapidamente con un errore chiaro; includi https:// e il percorso /v1. Gli slash finali vengono normalizzati via, quindi entrambe le forme funzionano lì. Gli id di modello sono stringhe esatte contro l'elenco /v1/models dell'endpoint; un errore di battitura in OPENAI_COMPATIBLE_MODEL fa fallire il primo riassunto con model-not-found. Ricorda anche l'override per video: se un flusso continua a usare un modello vecchio, qualcosa sta passando un model esplicito nella config della richiesta. Il recupero della trascrizione è un impianto separato. Se un video non produce riassunto perché sottotitoli o audio non sono stati recuperati, quella è la pipeline dei contenuti (API della piattaforma, disponibilità dei sottotitoli), non l'endpoint LLM. Le variabili d'ambiente in questa guida spostano solo le chiamate di riassunto. E nota che il servizio ospitato bibigpt.co gestisce i propri modelli; queste variabili configurano la v1 open source che distribuisci tu stesso.
Chi instrada BibiGPT tramite un gateway.
- Spettatori bilingui che riassumono sia Bilibili che YouTube, abbinando id forti in cinese a quelli globali dietro una chiave invece di un fornitore per lingua.
- Self-hoster in configurazioni vicine alla Cina dove un unico endpoint compatibile OpenAI che serve anche GLM, DeepSeek, e Kimi rimuove del tutto il problema della fatturazione multi-fornitore.
- Team che eseguono un riassuntore condiviso per riunioni e lezioni, misurando l'utilizzo per chiave e usando come default id di fascia volume.
- Ascoltatori accaniti di podcast, dove ore di trascrizione a settimana rendono il prezzo dei token di input l'intera storia del costo.
- Sviluppatori senza accesso alla fatturazione di un dato fornitore. L'accesso basato su ricarica senza obbligo di carta rimuove la dipendenza dalla registrazione per provider.
Verifica l'endpoint e fai debug del primo riassunto.
Elenca i modelli che la tua chiave può indirizzare e conferma che l'id in OPENAI_COMPATIBLE_MODEL sia tra questi; questo unico controllo previene la maggior parte dei fallimenti alla prima esecuzione. Poi riassumi qualcosa di breve. Un errore di autenticazione significa che la chiave risolta non corrisponde all'URL base, e data la catena di fallback, stampa quale variabile ha effettivamente fornito la chiave prima di dare per scontato qualcosa. Model-not-found è un errore di battitura nell'id. Un errore di schema all'avvio è un URL base a cui manca https://. Un riassunto che non parte mai nonostante un endpoint sano è il recupero della trascrizione che fallisce a monte di qualsiasi chiamata LLM. Una volta che i riassunti fluiscono, la console di APIsRouter mostra il modello per richiesta, i conteggi dei token e la spesa. Il riassunto di trascrizioni è il carico di lavoro più chiaramente pesante in input che esista, e una settimana di dati di utilizzo ti dice il costo reale per ora di contenuto per ogni modello, che è il numero che vale la pena ottimizzare.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Domande frequenti
BibiGPT supporta un URL base OpenAI-compatible personalizzato?
Sì. La v1 self-hosted documenta OPENAI_COMPATIBLE_BASE_URL, OPENAI_COMPATIBLE_API_KEY, e OPENAI_COMPATIBLE_MODEL nel suo file di ambiente di esempio, e costruisce il suo provider AI SDK da questi. Imposta l'URL base sull'endpoint del gateway, incluso /v1.
BibiGPT può riassumere con modelli GLM, DeepSeek, Kimi, o Claude?
Sì. L'id del modello configurato viene passato all'endpoint come stringa semplice, quindi funziona qualsiasi id del catalogo: glm-5.2 e kimi-k2.6 per contenuto cinese, claude-haiku-4-5-20251001 o gemini-3.5-flash per contenuto globale, tutti su una chiave.
Cosa succede se OPENAI_COMPATIBLE_API_KEY non è impostata?
L'app ricade su OPENAI_API_KEY. Va bene quando entrambe puntano allo stesso servizio, e confonde quando non lo fanno; quando usi un gateway, imposta esplicitamente la chiave con prefisso compatible.
Gli utenti possono portare le proprie chiavi gateway su un'istanza condivisa?
Sì. Le chiavi per richiesta sovrascrivono l'ambiente, e OPENAI_COMPATIBLE_KEY_PREFIXES controlla quali prefissi di chiave l'interfaccia accetta, quindi una distribuzione condivisa può accettare chiavi gateway inserite dagli utenti.
Perché i video lunghi costano più di quanto suggerisca la lunghezza del riassunto?
Perché la trascrizione è l'input. Un'ora di parlato è un gran numero di token di input, suddivisi in diverse chiamate, mentre l'output del riassunto è piccolo. Il prezzo dei token di input e la gestione del contesto lungo guidano il costo, e il log di utilizzo lo mostra per video.
Queste variabili si applicano al servizio ospitato bibigpt.co?
No. Il servizio ospitato gestisce i propri modelli lato server. Le variabili d'ambiente OPENAI_COMPATIBLE_* configurano la BibiGPT v1 open source che distribuisci tu stesso.