Vedo che ci sono alcuni argomenti interessanti sull’integrazione di bot a vari livelli in Discourse, ma non ho visto argomenti sull’integrazione dei grandi bot AI con modelli di memoria estesa come GPT-3, BlenderBot, ecc. Qualcuno ci ha pensato? o ha fatto progressi nell’implementazione dell’idea?
Sto pensando di impostare un’altra istanza di Discourse con uno dei grandi bot AI come utente normale nel sistema che partecipa come qualsiasi altro utente umano - ma forse risponde solo quando un post è specificamente rivolto a lui o dove il suo handle viene menzionato in un post.
Prima di tuffarmi di nuovo con una nuova istanza, ho pensato che potrei ricevere prima qualche feedback questa volta. . .
Sì, sarebbe un esperimento divertente.
Ho anche pensato alla possibilità di collegare qualcosa come DialogFlow al plugin Chat.
Non ho tempo dedicato immediato per questo, ma mi piacerebbe pensarci insieme e sperimentare un po’ con alcune persone che la pensano allo stesso modo.
Eccellente! Il mio pensiero al momento è di poter aggiungere molte diverse app di intelligenza artificiale all’entità centrale man mano che il tempo passa, un po’ nello stesso modo in cui il cervello dei mammiferi/umani si è evoluto con duplicazione e specializzazione…
Forse dovrei creare l’istanza Discourse per iniziare?
Forse iniziamo prima con un po’ di progettazione tecnica. A che tipo di API ci colleghiamo? Abbiamo bisogno di un software intermedio tra i due sistemi o basterebbe un plugin che chiama l’API GPT?
Ho visto i post di Hubot prima e ho pensato di sperimentare quell’opzione come esercizio di apprendimento prima di lanciarmi in qualcosa che richiede l’invenzione della ruota. Pensi che sarebbe utile?
Sì, assolutamente. Sarò via per circa una settimana e dopo potrò dedicare del tempo a sperimentare. Non sono un grande fan di Node, preferirei farlo in Python, Ruby o PHP. Ma facciamo prima un po’ di esperienza con questo.
Sono stato per lo più offline negli ultimi due mesi e sono tornato per vedere molto entusiasmo intorno a GPT-3. Questo mi ha fatto pensare a come potrebbe essere applicato a Discourse.
Sto giocherellando con l’idea di creare un bot “assistente dello staff” utilizzando OpenAI. Per ora lo sto testando con il modello text-davinci-003. Penso che il progetto di base sarà un webhook per gli eventi dei post di Discourse che punta a un server con installata la libreria Python OpenAI.
Il primo compito su cui sto lavorando è far sì che il bot restituisca query di Data Explorer da descrizioni in testo semplice. Non ho ancora provato il fine-tuning di un modello, ma se vengono fornite informazioni sulla struttura del database di Discourse con il prompt della richiesta, sta restituendo risultati sorprendentemente buoni.
Potrebbe rivelarsi che l’uso di OpenAI per questo tipo di cose sarà troppo costoso, o che i risultati non saranno abbastanza accurati per essere utilizzati su un sito di produzione.
Ci sto lavorando solo per divertimento. L’altra cosa ovvia da considerare è l’addestramento di un bot di supporto clienti basato sulle risposte esistenti su un forum di Discourse. Questo sembra un problema più difficile (sia in termini di costi che di accuratezza) rispetto alla semplice configurazione di un bot per gli utenti dello staff.
Ho un caso d’uso diverso (il bot DEVE ricordare le conversazioni precedenti con i membri delle nostre organizzazioni non profit). Ho fatto un po’ di progressi nell’ultima settimana con varie versioni di BlenderBot - posterò di più qui dove abbiamo impostato Discourse specificamente per il progetto:
Stavo per chiedere la stessa cosa, un bot ChatGPT in modo da poter fare domande in una chat o in un thread sarebbe molto utile. Qui c’è un tutorial per eseguirlo in una VM
Sarei felice di sbagliarmi su questo, ma la mia comprensione è che ChatGPT “ricordi” solo il testo del prompt più recente che gli hai inviato. Puoi testarlo nel playground di OpenAI iniziando una chat, quindi facendo clic sul pulsante “Visualizza codice” dopo aver inviato il tuo testo. Vedrai che ogni volta che invii altro testo, questo viene aggiunto al prompt:
prompt="La seguente è una conversazione con un assistente AI. L'assistente è utile, creativo, intelligente e molto amichevole.\n\nUmano: Sto solo testando per vedere come viene impostato il prompt.\nAI: Ciao! Sembra che tu stia cercando di scoprire come configurare i prompt. C'è qualcos'altro in cui posso aiutarti oggi?\nUmano: Se utilizzo la funzionalità di chat di OpenAI nella mia applicazione, dovrei continuare ad aggiornare il prompt ogni volta che un utente pone una nuova domanda? È sicuramente una buona idea mantenere aggiornati i tuoi prompt, poiché ciò aiuterà a garantire che i tuoi utenti ricevano le informazioni più pertinenti per ogni domanda che pongono. A seconda delle dimensioni della tua applicazione e della complessità delle tue conversazioni, potresti voler aggiornare i tuoi prompt regolarmente o sviluppare un sistema più sofisticato per determinare quando gli aggiornamenti sono necessari. Fammi sapere se c'è qualcos'altro in cui posso aiutarti."
Questo può continuare fino a raggiungere il limite di 4000 token (~3k parole) menzionato nella documentazione a cui hai collegato. Tieni presente che l’invio di prompt di grandi dimensioni potrebbe diventare costoso. Penso che attualmente costi $0,02 per 1000 token con il modello Davinci.
Se la mia comprensione è corretta, un’applicazione o un plugin Discourse che gestisce ChatGPT per Discourse dovrebbe aggiungere ogni nuova domanda e risposta al prompt. Potrebbe farlo fino a quando non raggiunge i 4k token (~3k parole). Se questo limite viene superato, sembra che venga restituito un errore da OpenAI. Questo errore dovrebbe essere gestito dall’applicazione che effettua le richieste a OpenAI.
Una possibile soluzione per il limite di token sarebbe trovare un modo per estrarre i dettagli chiave da una conversazione e quindi aggiornare il prompt solo con quei dettagli. Potrebbe essere possibile effettuare una richiesta per conto dell’utente per ottenere queste informazioni. Qualcosa del tipo:
Questi dettagli potrebbero quindi essere salvati nell’applicazione che effettua le richieste a OpenAI e utilizzati per riavviare la conversazione in un secondo momento.
Otterrai risposte molto più definitive su questo qui: https://community.openai.com/. È fantastico vedere che utilizzano Discourse per la loro community!
Penso che tu abbia ragione, ma il link che ho fornito dice fondamentalmente che ChatGPT NON ha memoria inter-sessione. . . di cui ho bisogno per il mio caso d’uso. .
Quando interagisci con chatGPT e guardi le richieste di rete, puoi vedere che viene fornito anche un conversation_id che viene inviato al backend. Penso che anche la documentazione di openai lo menzioni.