Ingegnerizzare una persona su cui fare affidamento nella cronologia della chat

Domanda veloce: quale sarebbe una struttura “migliore” per il nostro caso d’uso?

Abbiamo un sacco di log della cronologia delle chat esportati dai canali Slack che contengono molto know-how, problemi menzionati e soluzioni, ecc. Ovviamente quelle chat contengono un sacco di “fuffa” inutile che sarebbe antieconomico scaricare in argomenti/post e far utilizzare all’AI bot.

Abbiamo circa 10 file, ciascuno di circa 1-2 MB. In termini di utilizzo della persona AI, ci saranno solo circa 30 persone che effettueranno circa 10 chat al giorno (difficile stimare il volume dei token qui).

A questo punto mi chiedo quale sia un approccio 80/20 ragionevole per utilizzare quei log di chat mantenendolo in qualche modo economico. Si è ridotto a 2 opzioni:

  1. Copia e incolla i log in argomenti/post di Discourse: Veloce e sporco, non richiede sviluppo personalizzato, potrebbe comportare costi API elevati.
  2. Pre-elaborare in qualche modo i log della chat e metterli in un formato o struttura corretta e caricarli nella persona.
  3. O forse una qualche forma ibrida: Con ogni richiesta del bot AI, valutare e salvare l’output come file txt e poi caricarlo nella persona.

Quale opzione consigliate? O forse qualcosa di completamente diverso?

1 Mi Piace

Consiglierei il seguente approccio:

  1. Elaborare i 10 file utilizzando una persona “Creativa” con un LLM a contesto ampio / output ampio come Sonnet 4 thinking. L’obiettivo di questa elaborazione sarebbe quello di “riordinare” le informazioni e prepararle per un RAG
  2. Quindi, utilizzando il nostro caricamento integrato, caricare i 10 file elaborati in una persona, in modo che RAG possa cercare nel contenuto.

Dato che ci sono tonnellate di dati qui, sconsiglio di riempire un prompt di sistema. Come linea guida, un prompt di sistema non dovrebbe essere molto lungo, diventa costoso. 10k token sono fattibili, 100k token non sono fattibili con gli attuali LLM di frontiera. Ogni interazione ti costerà troppo e gli LLM si confonderanno ulteriormente.

4 Mi Piace

Grazie, è d’aiuto!

Solo per chiarire, tutti i file caricati vengono inseriti nel prompt di sistema? Oppure vengono prima elaborati attraverso il ai_embeddings_model configurato e poi inseriti?

Sono un po’ confuso riguardo alla tua raccomandazione di un limite di 10k token, specialmente con la parte sottostante:

I file in Discourse AI Persona, upload support sono limitati solo dalla dimensione del tuo caricamento, possono essere enormi, vengono elaborati tramite embedding, iniettiamo blocchi nel prompt per configurazione.

Quello di cui stavo parlando era cercare di forzare tutte le informazioni in un unico prompt di sistema qui:

che è limitato…

1 Mi Piace

Ah, questo chiarisce le cose, grazie!

Quindi, in pratica, i miei prossimi passi dovrebbero essere eseguire alcuni test con diversi modelli di embedding e vedere quale dimensione di token finisco per iniettare nel prompt di sistema, giusto?

Il modello di embedding controlla la qualità, non la quantità
puoi aggregare tutti i tuoi dati in un unico file, li divideremo in background e recupereremo i pezzi più pertinenti da aggiungere al tuo prompt
sperimentare qui significherebbe migliorare i risultati, alcune pulizie potrebbero funzionare meglio di altre, alcuni modelli di embedding saranno più intelligenti nel trovare pezzi più pertinenti

2 Mi Piace

Grazie Sam, lo apprezzo molto :heart:

Se hai altre risorse utili, sentiti libero di condividerle qui. Una volta che farò progressi, proverò a pubblicare la mia esperienza qui su meta. :slight_smile:

2 Mi Piace

@sam come suggerisci di aggiungere numeri di versione o modello ai separatori di metadati?

Il tuo esempio originale:

[[metadati sui gatti]]
una lunga storia sui gatti
[[metadati sui cani]]
una lunga storia sui cani

Ora, se vogliamo arricchirli con numeri di versione o numeri di modello specifici, devo usare lo stesso formato o struttura che gli umani userebbero quando li digitano?

Ad esempio:

[[metadati sui gatti v1.0]]
una lunga storia sui gatti
[[metadati sui cani]]
una lunga storia sui cani
[[metadati sui gatti xxl v2.1]]
una lunga storia sui gatti
[[metadati sui cani v 1.1beta]]
una lunga storia sui cani

Inoltre, quando i numeri di versione sono mancanti nei metadati (vedi metadati sui cani), quel blocco verrebbe utilizzato in una risposta per tutte le richieste relative ai cani, indipendentemente dalla “versione del cane”?

Sì, questo è il modo giusto!

2 Mi Piace