Recentemente ho ricevuto un'e-mail da uno studioso di talento che mi chiedeva come Botpress si interfacci con LLMs.
Stava scrivendo un articolo su come evitare il vendor lock-in e voleva sapere se avevamo usato un framework come LangChain o Haystack.
Sono stato più che felice di condividere con lui che abbiamo creato le nostre astrazioni che permettono ai costruttori di Botpress di interfacciarsi con LLMs.
Dato il grande interesse per l'argomento, ho voluto rendere pubbliche queste informazioni. Potrebbero essere utili ad altri sviluppatori o agli utenti della nostra piattaforma. Spero che la troviate interessante come l'ho trovata io nel crearla.
Due modi in cui Botpress si interfaccia con LLMs
Botpress ha creato le proprie astrazioni che funzionano in due modi:
1. Integrazioni
Le integrazioni hanno il concetto di azioni che hanno tipi specifici di input e output.
Abbiamo componenti open source sulla piattaforma, in modo che la comunità possa creare le proprie integrazioni che possono essere private o disponibili per l'uso pubblico.
Quindi i fornitori di LLM - OpenAI, Anthropic, Groq, ecc. - hanno ciascuno un'integrazione. Questo è un modo in cui i nostri utenti possono interfacciarsi con loro.
2. Interfacce di integrazione LLM
Al concetto di integrazione si aggiunge quello di "interfaccia".
Si tratta semplicemente di definizioni di schemi standard che le integrazioni possono estendere. Abbiamo creato uno schema standard per LLMs.
Finché un'integrazione estende questo schema, l'integrazione è considerata un provider di LLM . Quindi funziona a pieno regime in Botpress.
Ecco alcuni esempi delle integrazioni di Botpress per diversi fornitori di LLM :
Abbiamo interfacce simili per text2image, image2text, voice2text, text2voice, ecc.
Configurazioni del modello
All'interno di Botpress Studio, abbiamo due configurazioni generali: il "Modello migliore" e il "Modello veloce". Abbiamo riscontrato che, in generale, la maggior parte dei compiti si adatta facilmente a una di queste due modalità.
Ma oltre alla pura selezione dei modelli, abbiamo riscontrato che i diversi fornitori divergevano troppo sulle chiamate agli strumenti e sui formati dei messaggi per poter passare facilmente da un modello all'altro e aspettarsi buone prestazioni.
Il motore di inferenza Botpress
Per questo motivo, abbiamo creato il nostro motore di inferenza, chiamato LLMz, che funziona con qualsiasi modello senza richiedere alcuna (o minima) modifica del prompt. Inoltre, fornisce una chiamata allo strumento molto migliore e spesso prestazioni migliori in termini di costo dei token e di viaggi di andata e ritorno LLM .
Questo motore lavora con i tipi di typescript dietro le quinte per le definizioni degli strumenti, markdown per il formato di output dei messaggi e del codice e una sandbox di esecuzione LLM-native per l'inferenza.
LLMz fornisce molte ottimizzazioni e funzioni di debug necessarie per casi d'uso avanzati, come ad esempio:
- Compressione dei token in ingresso
- Troncamento intelligente dei token
- Memoria-per-contesto ottimizzata per i token
- Chiamata di strumenti paralleli e compositi
- Mix di messaggi multipli + chiamate di strumenti in un'unica chiamata LLM
- Strumenti completamente sicuri (ingresso e uscita)
- Sessioni a lunga durata grazie alla serializzazione sandbox
- Blocco, avvolgimento e tracciatura degli utensili
- Isolamento completo dell'esecuzione in isolati V8 leggeri (consente di eseguire migliaia di esecuzioni simultanee in modo rapido e molto economico)
- Iterazioni automatiche e recupero degli errori
Tutte queste cose erano necessarie per i nostri casi d'uso. Ma erano impossibili o molto difficili da realizzare con i normali strumenti di chiamata.
Il caso contro i modelli di router leggeri
Abbiamo pensato a lungo di costruire un modello di router leggero che si appoggiasse ai modelli esistenti e scegliesse automaticamente il modello giusto per il compito da svolgere.
Ma abbiamo deciso di non farlo per diversi motivi:
1. Prevedibilità
La maggior parte dei nostri clienti - comprensibilmente - vuole risultati affidabili e prevedibili.
Quindi l'idea di un router di modelli dinamici fa un po' paura agli agenti di alto livello. Porta un altro livello di imprevedibilità a LLMs.
2. Velocità
La latenza è molto importante per i nostri casi d'uso. Affinché il router sia veloce, il modello deve essere molto piccolo (e probabilmente più stupido) rispetto ai modelli a cui verrà indirizzato, probabilmente un classificatore tradizionale.
Sebbene in genere questi strumenti funzionino bene quando sono addestrati su compiti specifici, a) le loro dimensioni ridotte del contesto sono un problema per le richieste lunghe e b) non riescono a generalizzare ad altre richieste al di fuori di quelle su cui sono stati addestrati.
3. Supremazia del modello o uguaglianza del modello
Sebbene i benchmark possano dire il contrario, in natura raramente abbiamo visto i modelli superare GPT-4o (finora).
Non è ancora chiaro se LLMs avrà davvero prestazioni migliori nel compito X rispetto al compito Y nel corso del tempo, o se tutti i LLMs finiranno per essere estremamente bravi nella maggior parte delle cose. In quest'ultimo caso, la scelta del modello non varrebbe la pena.
Protezione del futuro LLMs con il feedback
LLMs tra qualche anno sarà una commodity e la selezione dei modelli non sarà più un problema.
Per questi motivi, abbiamo deciso di investire i nostri sforzi nel fornire un buon meccanismo per fornire esempi a LLMs .
Abbiamo quindi costruito un sistema per catturare i feedback. Memorizza gli "apprendimenti" per le esecuzioni future. E fornisce dinamicamente gli apprendimenti più rilevanti in tempo reale per le esecuzioni future, al fine di garantire miglioramenti affidabili e continui nel tempo.
Man mano che LLMs si evolve verso prestazioni sempre più elevate, siamo pronti ed entusiasti di sfruttarle al massimo per gli utenti della nostra piattaforma.
Indice dei contenuti
Rimanete aggiornati sulle ultime novità in materia di agenti AI
Condividi questo articolo su: