Supporto per la personalizzazione dei prompt in DiscourseAI

Ho una e una sola richiesta ed è sempre la stessa: hai un prompt per questo, quindi per favore non nasconderlo nei vuoti del codice. Tutto ciò che mi serve è aggiungere una frase: usa sempre il finlandese. Questo è tutto. E improvvisamente tutto è in uso a livello globale.

Ma ora questo è solo uno spreco del mio tempo, del tempo dei miei utenti attivi e del tempo di ogni utente anonimo che ottengo, compresi quelli che avrebbero bisogno di un tale servizio.

Questo è un lavoro meraviglioso. Ma a causa di quella singola funzionalità mancante… no. Vorrei offrirlo ai miei utenti perché se loro possono usarlo, tutti possono usarlo. Ma non ha assolutamente senso generare questo, riassumere e così via usando l’inglese in un forum finlandese.

6 Mi Piace

Speriamo non prima che il problema della lingua principale sia risolto :thinking:

Abbiamo un piano per la personalizzazione dei prompt in DiscourseAI, che consentirà ai nostri utenti di modificare rapidamente tutti i prompt utilizzati nelle varie parti del plugin. Credo che sarà qualcosa che saremo in grado di affrontare quest’anno.

Nel frattempo, possiamo centralizzare tali richieste in questo argomento.

8 Mi Piace

Questo è un bel pasticcio! Rendere i prompt personalizzabili è un problema così difficile.

Pensando ai dettagli qui, prendiamo:

    CompletionPrompt.seed do |cp|
      cp.id = -306
      cp.name = "explain"
      cp.prompt_type = CompletionPrompt.prompt_types[:text]
      cp.messages = { insts: <<~TEXT }
        Sei un tutor che spiega un termine a uno studente in un contesto specifico.
        Ti fornirò tutto ciò che devi sapere all'interno dei tag <input>, che consiste nel termine che voglio che tu spieghi all'interno dei tag <term>, il contesto in cui è stato utilizzato all'interno dei tag <context>, il titolo dell'argomento in cui è stato utilizzato all'interno dei tag <topic> e, facoltativamente, il post precedente nella conversazione all'interno dei tag <replyTo>.
        Usando tutte queste informazioni, scrivi un paragrafo con una breve spiegazione di cosa significa il termine. Formatta la risposta usando Markdown. Rispondi solo con la spiegazione e nient'altro.
      TEXT
    end

Come possiamo risolvere questo problema e renderlo personalizzabile?

  1. Utilizzare il sistema di traduzione, spostare le istruzioni in server.en.yml
  2. Ritirare “Completion Prompt” a favore del modello Ai Persona
  3. Fornire un editor per il modello “Completion Prompt”
  4. Ingegnerizzare i prompt per uscirne

1. Utilizzare il sistema di traduzione, spostare le istruzioni in server.en.yml

pro

  • Spediremo automaticamente con il supporto per più lingue
  • Il sistema esiste già, non c’è niente di nuovo da costruire
  • Molto personalizzabile tramite override di localizzazione nell’interfaccia utente di amministrazione

contro

  • Molti LLM non funzionano bene con il “non inglese”, la traduzione può comportare prestazioni molto inferiori
  • Se le persone traducono i tag allora sarà completamente rotto (ad esempio, <title>)

2. Centralizzare su AI Persona

pro

  • Abbiamo già la maggior parte dell’interfaccia utente
  • Modo banale per aggiungere/rimuovere cose all’assistente AI

contro

  • Non spediremo con le traduzioni
  • Dobbiamo costruire un’interfaccia utente per contrassegnare una persona da utilizzare da una funzionalità: (è per illustrare il post? è per l’assistente di composizione? è per il generatore di titoli di bot?) alcune di queste sono 1-1 e sono 1 a molti
  • Alcune delle persone non avranno senso per le conversazioni dei bot, richiedono tag <replyTo>, <item> e <input>.

3. Fornire un’interfaccia utente per Completion Prompts

pro

  • Chiara separazione dalle persone, ridotta confusione
  • Bello poter aggiungere nuovi prompt di completamento agli utenti… vuoi qualcosa sotto traduci, nessun problema
  • Facile da modificare

contro

  • Complesso gestire il “drift” - se un utente sovrascrive un prompt e noi correggiamo l’originale per aggiungere un tag <qualcosa_di_nuovo>, come lo sapranno?

4. Ingegnerizzare i prompt per uscirne

Se riusciamo a realizzare questa magia, con un po’ più di istruzioni personalizzate potrebbe essere bello, ad esempio aggiungere “IMPORTANTE: tutte le risposte devono essere in finlandese”, ma farlo funzionare in modo coerente sarà difficile.

pro

  • magia, funziona e basta

contro

  • in realtà, molto improbabile che funzioni in modo coerente, avere istruzioni personalizzate nella lingua corretta ancorerà molto meglio il modello

Personalmente sono più propenso al (3) in realtà. Soprattutto perché ci dà la possibilità di aggiungere prompt personalizzati e ha una forte separazione. Ma capisco totalmente il (2) come via d’uscita, forse possiamo riuscirci e unifica un sacco di codice che è molto bello. Dobbiamo giocare con questo e sperimentare prima l’idea per decidere un vincitore.

6 Mi Piace

Forse no. Ma OpenAI funziona.

Noi (come amministratori utenti finali) non abbiamo bisogno di creare interi prompt in queste situazioni. Dobbiamo solo aggiungere una richiesta di utilizzare una lingua specifica nel prompt. Non so nulla di programmazione, ma in generale aggiungere una stringa di testo a un testo è piuttosto banale, non è vero? E qui state inviando solo testo?

E il prompt stesso deve essere in inglese, ovviamente.

2 Mi Piace

it’s specific to the language issue rather than general prompt customization… but if we had a language dropdown, could we ask AI to translate the prompt (except for tags) and then save/send that prompt?

Traduzione del prompt in finlandese AI

:person_curly_hair: traduci questo in finlandese eccetto i tag <>:

You are a tutor explaining a term to a student in a specific context. I will provide everything you need to know inside <input> tags, which consists of the term I want you to explain inside <term> tags, the context of where it was used inside <context> tags, the title of the topic where it was used inside <topic> tags, and optionally, the previous post in the conversation in <replyTo> tags. Using all this information, write a paragraph with a brief explanation of what the term means. Format the response using Markdown. Reply only with the explanation and nothing more.

:robot: Sinä olet ohjaaja, joka selittää termin oppilaalle tietyssä kontekstissa. Minä tarjoan sinulle kaiken tarvittavan tiedon <input> tageissa, joka sisältää termin, jonka haluat minun selittävän <term> tageissa, kontekstin, jossa sitä käytettiin <context> tageissa, aiheen otsikon, jossa sitä käytettiin <topic> tageissa, ja valinnaisesti, edellisen viestin keskustelussa <replyTo> tageissa. Käyttäen kaikkea tätä tietoa, kirjoita kappale lyhyellä selityksellä siitä, mitä termi tarkoittaa. Muotoile vastaus käyttäen Markdownia. Vastaa vain selityksellä eikä millään muulla.

Could the technical details be a separate part of the prompt? then we have a prompt that’s something like:

Apply this behavior (admins can edit or append):

  • You are a tutor explaining a term to a student in a specific context.
  • Write a paragraphsentence with a brief explanation of what the term means.
  • Reply only with the explanation and nothing more.
  • Use lots of emoji

Using these technical details (uneditable, where we update to avoid drift):

  • the term I want you to explain in inside of <term> tags
  • the context of where it was used inside <context> tags
  • the title of the topic where it was used inside <topic> tags
  • the previous post in the conversation is in <replyTo> tags (optional)
  • format the response using Markdown
1 Mi Piace

No, è un’idea davvero pessima. Farà due traduzioni cambiando il prompt ogni volta. Tutto ciò che serve è la frase “Rispondi in [qualsiasi lingua]”[1]. Il tuo problema è decidere quale sarà quella lingua e vorrei suggerire la stessa che quel forum utilizza come impostazione predefinita.


  1. o “usa”… è solo una questione di formulazione, ma deve essere in inglese. Beh, questo è vero con OpenAI, altri sono un’area inesplorata per me ↩︎

1 Mi Piace

Ho una soluzione temporanea.

Esegui il fork di discourse-ai da GitHub e modifica il contenuto per parlare francese.

come questo:

Quindi modifica il file app.yml e cambia l’indirizzo del plug-in discourse-ai con il tuo repository.

Infine, sincronizza manualmente il tuo repository dal repository ufficiale.

Mi dispiace ma ti prego di no, questa PR invia richieste a un proxy Netlify, oggi proverò alcune soluzioni semplici.

2 Mi Piace

Ho una prova di concetto e un esempio funzionante qui:

GPT-4 funziona abbastanza bene nella maggior parte delle lingue, GPT 3.5 è così così, non ho idea di cosa stia dicendo Gemini pro, è fuori di testa.

Anche Claude 2 produce risultati ragionevoli.

3 Mi Piace

Correttore di bozze

Ho testato prima/dopo e, almeno per GPT-4-Turbo e il portoghese quando si utilizza il correttore di bozze, non c’è alcun cambiamento. Immagino che il modello fosse abbastanza intelligente da mantenere il mio testo nella lingua originale.

Didascalia immagine AI

L’ho esteso alla didascalia dell’immagine e funziona molto bene lì:

5 Mi Piace

Grazie ragazzi! Almeno le didascalie ora vengono create utilizzando la lingua desiderata (e la qualità è quella prevista, ma quella proviene da OpenAI, almeno per me).

Riassunti… Non lo so ancora perché non riesco a crearli da un po’. Ma questa è un’altra storia.

2 Mi Piace