Il testo di correzione inserisce il testo due volte

Non ho idea del perché, e non succede in tutti i post, ma è riproducibile in un post specifico in cui, ogni volta che uso la correzione bozze, il contenuto viene duplicato.


3 Mi Piace

Hmmm, riesco a riprodurlo nel post che hai linkato, ma non sono ancora riuscito a trovarlo altrove. Molto strano indeed :face_with_monocle: :thinking:

Ho anche provato con questo

ma l’altro sono riuscito a riprodurlo con un testo di risposta diverso e anche con il campo data fuori dalla citazione. Ho notato che se non c’era un errore di battitura nel testo di risposta, cercava di correggere la citazione.

2 Mi Piace

È molto strano. :smile:

Quando non stai selezionando alcun testo, c’è qualcosa da correggere nella citazione e sei un utente non staff, si duplica. :thinking:


Quando il contenuto della citazione sembra a posto, non si duplica:

2 Mi Piace

Questo è un bug attivato da Qwen @Falco

{
  "model": "meta-llama/Llama-3.2-11B-Vision-Instruct",
  "temperature": 0,
  "stop": [
    "\n</output>"
  ],
  "messages": [
    {
      "role": "system",
      "content": "Sei un correttore di bozze markdown. Correggi errori di battitura evidenti e problemi di formulazione, ma mantieni la voce originale dell'utente.\nNon toccare i blocchi di codice. Ti fornirò del testo da correggere. Se non c'è nulla da correggere, ripeterai il testo.\nTroverai il testo tra i tag XML <input></input>.\nRestituirai SEMPRE il testo corretto tra i tag XML <output></output>.\n\n"
    },
    {
      "role": "user",
      "content": "<input>[quote=\"Arkshine, post:1, topic:339163\"]\n:information_source: Questo componente richiede che Discourse sia aggiornato alla data [date=2024-11-27 timezone=\"Europe/Paris\"]. \n[/quote]\nHai aggiornato Discourse? Ricevi una notifica di aggiornamento solo quando viene rilasciata una nuova beta, ma ogni giorno vengono aggiunti nuovi commit.</input>"
    }
  ]
}
{
  "id": "chatcmpl-752c6aacdc7f496b951592e88d485eb3",
  "object": "chat.completion",
  "created": 1733196730,
  "model": "Qwen/Qwen2.5-32B-Instruct-AWQ",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "<input>[quote=\"Arkshine, post:1, topic:339163\"]\n:information_source: Questo componente richiede che Discourse sia aggiornato alla data [date=2024-11-27 timezone=\"Europe/Paris\"]. \n[/quote]\nHai aggiornato Discourse? Ricevi una notifica di aggiornamento solo quando viene rilasciata una nuova beta, ma ogni giorno vengono aggiunti nuovi commit.</input>\n\n<output>[quote=\"Arkshine, post:1, topic:339163\"]\n:information_source: Questo componente richiede che Discourse sia aggiornato alla data [date=2024-11-27 timezone=\"Europe/Paris\"]. \n[/quote]\nHai aggiornato Discourse? Ricevi una notifica di aggiornamento solo quando viene rilasciata una nuova beta, ma ogni giorno vengono aggiunti nuovi commit.</output>",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop",
      "stop_reason": null
    }
  ],
  "usage": {
    "prompt_tokens": 184,
    "total_tokens": 358,
    "completion_tokens": 174,
    "prompt_tokens_details": null
  },
  "prompt_logprobs": null
}

Nota come restituisce ENTRAMBI i tag <input> e <output>, quindi abbiamo un bug qui.

La regex di sanificazione mantiene sia l’input che l’output.

Suppongo che dovremmo essere più deliberati con la nostra API e, se stai correggendo le bozze, chiedere solo l’output o fare un migliore prompt engineering.

Inoltre, interessante che abbiamo smesso di inviare esempi anche se li abbiamo @Roman

6 Mi Piace

Questo risolverà il problema principale della regressione:

Tuttavia, ha un effetto collaterale @Jagster, abbiamo smesso di inviare esempi in inglese un po’ di tempo fa, ora li invieremo di nuovo. Fateci sapere se questo vi influisce.

Detto questo @Roman, questo non ha senso per me:

SANITIZE_REGEX_STR =
            %w[term context topic replyTo input output result]
              .map { |tag| "<#{tag}>\n?|\n?<\/#{tag}>" }
              .join("|")

Non dovrebbe essere:

(l’elemento è per i suggerimenti del titolo, ma forse sta prendendo un percorso diverso)

SANITIZE_REGEX_STR =
            %w[output item]
              .map { |tag| "<#{tag}>\n?|\n?<\/#{tag}>" }
              .join("|")
3 Mi Piace

Alcuni prompt di aiuto utilizzano questi tag per fornire contesto. Ad esempio:

Alcuni modelli potrebbero includerli nella risposta, quindi li rimuoviamo.

2 Mi Piace

Non capisco, puoi fornire un esempio completo?

Perché vogliamo mantenere il testo nei tag di input nell’output, quando ripuliamo ciò che il modello ci fornisce?

(L’OP dovrebbe funzionare ora, comunque)

1 Mi Piace

La parola “sanificare” è un po’ fuorviante qui. Vogliamo risolvere due problemi diversi:

  1. Assicurarci di ottenere l’output e nient’altro.
  2. Assicurarci di rimuovere eventuali tag che rendono il risultato innaturale.

Il problema qui è che siamo troppo permissivi con (1). Dobbiamo assicurarci che la parte rilevante sia sempre racchiusa tra e e non usare nient’altro. Una volta ottenuta questa parte rilevante, rimuoviamo tutti gli altri tag per garantire che il risultato appaia pulito (2).


Per espandere l’esempio che ho fornito sopra e spiegare perché attualmente eliminiamo tutti questi tag, ecco come appare il prompt “explain” seminato:

https://github.com/discourse/discourse-ai/blob/main/db/fixtures/ai_helper/603_completion_prompts.rb#L157

\u003cterm\u003e, \u003creplyTo\u003e vengono utilizzati per fornire contesto al modello, mentre \u003cinput\u003e serve a indicare su quale specifico testo vogliamo che si concentri.

Il problema era che alcuni modelli utilizzavano gli stessi tag nelle loro risposte, il che rendeva il testo innaturale e strano per gli utenti. L’obiettivo finale qui è rimuovere questi tag e produrre un testo “pulito” come risultato.

Ad esempio, quando voglio ottenere una spiegazione di cosa significa “Not following”, non voglio vedere qualcosa del tipo:

\u003e \u003cterm\u003eNot following\u003c/tem\u003e in questo contesto significa che l’utente sta avendo difficoltà a comprendere la spiegazione o il punto che viene sollevato. (…)

2 Mi Piace