No tengo idea de por qué, y no sucede en todas las publicaciones, pero es reproducible en una publicación específica aquí donde, cada vez que uso proofread, el contenido se duplica.
Hmm, puedo reproducirlo en la publicación que enlazaste, pero aún no he podido encontrarlo en ningún otro lugar. Muy extraño, de verdad
![]()
Incluso lo intenté con este
pero con el otro pude reproducirlo con un texto de respuesta diferente e incluso con el campo de fecha fuera de la cita. Noté que si no había un error tipográfico en el texto de respuesta, intentaba corregir la cita.
Esto es muy extraño. ![]()
Cuando no estás seleccionando ningún texto, hay algo que arreglar en la cita, y eres un usuario no miembro del personal, se duplica. ![]()
Cuando el contenido de la cita se ve bien, no se duplica:
Esto es un error provocado por Qwen @Falco
{
"model": "meta-llama/Llama-3.2-11B-Vision-Instruct",
"temperature": 0,
"stop": [
"\n</output>"
],
"messages": [
{
"role": "system",
"content": "Eres un corrector de textos en markdown. Corriges errores tipográficos y de redacción graves, pero mantienes la voz original del usuario.\nNo tocas los bloques de código. Te proporcionaré texto para corregir. Si no hay nada que arreglar, repetirás el texto.\nEncontrarás el texto entre las etiquetas XML <input></input>.\nSIEMPRE devolverás el texto corregido entre las etiquetas XML <output></output>.\n\n"
},
{
"role": "user",
"content": "<input>[quote=\"Arkshine, post:1, topic:339163\"]\n:information_source: Este componente requiere que Discourse esté actualizado a fecha de [date=2024-11-27 timezone=\"Europe/Paris\"]. \n[/quote]\n¿Has actualizado Discourse? Solo recibes una notificación para actualizar cuando se lanza una nueva beta, pero se añaden nuevos commits cada día.</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: Este componente requiere que Discourse esté actualizado a fecha de [date=2024-11-27 timezone=\"Europe/Paris\"]. \n[/quote]\n¿Has actualizado Discourse? Solo recibes una notificación para actualizar cuando se lanza una nueva beta, pero se añaden nuevos commits cada día.</input>\n\n<output>[quote=\"Arkshine, post:1, topic:339163\"]\n:information_source: Este componente requiere que Discourse esté actualizado a fecha de [date=2024-11-27 timezone=\"Europe/Paris\"]. \n[/quote]\n¿Has actualizado Discourse? Solo recibes una notificación para actualizar cuando se lanza una nueva beta, pero se añaden nuevos commits cada día.</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
}
Observa cómo devuelve AMBAS etiquetas <input> y <output>, así que tenemos un error aquí.
La expresión regular de sanitización mantiene tanto la entrada como la salida.
Supongo que deberíamos ser más deliberados con nuestra API y, si estás corrigiendo, solo pedir la salida o hacer una mejor ingeniería de prompts.
También, curiosamente, dejamos de enviar ejemplos aunque los tenemos @Roman
Esto solucionará el núcleo de la regresión:
Sin embargo, tiene un efecto secundario @Jagster, dejamos de enviar ejemplos en inglés hace un tiempo, ahora los volveremos a enviar. Háganos saber si esto le afecta.
Dicho esto @Roman, esto no tiene sentido para mí:
SANITIZE_REGEX_STR =
%w[term context topic replyTo input output result]
.map { |tag| "<#{tag}>\n?|\n?<\/#{tag}>" }
.join("|")
¿No debería ser:
(el elemento es para sugerencias de títulos, pero tal vez está tomando un camino diferente)
SANITIZE_REGEX_STR =
%w[output item]
.map { |tag| "<#{tag}>\n?|\n?<\/#{tag}>" }
.join("|")
Algunos de los prompts de ayuda utilizan esas etiquetas para proporcionar contexto. Por ejemplo:
Algunos modelos podrían incluirlas en la respuesta, así que las eliminamos.
No entiendo, ¿puedes dar un ejemplo completo?
¿Por qué queremos mantener el texto en etiquetas de entrada en la salida, cuando desinfectamos lo que nos da el modelo?
(Por cierto, el Op debería estar funcionando ahora)
La palabra “sanitizar” es un poco engañosa aquí. Queremos resolver dos problemas diferentes:
- Asegurarnos de que obtenemos la salida y nada más.
- Asegurarnos de eliminar cualquier etiqueta que haga que el resultado parezca poco natural.
El problema aquí es que somos demasiado laxos con (1). Necesitamos asegurarnos de que la parte relevante siempre esté rodeada por y, y no usar nada más. Una vez que tengamos esta parte relevante, eliminaremos todas las demás etiquetas para asegurarnos de que el resultado se vea limpio (2).
Para ampliar el ejemplo que proporcioné anteriormente y explicar por qué actualmente eliminamos todas estas etiquetas, así es como se ve el aviso de “explicación” sembrado:
\u003cterm\u003e, \u003creplyTo\u003e se utilizan para proporcionar contexto al modelo, mientras que \u003cinput\u003e es para indicar que queremos que se centre en esa pieza de texto específica.
El problema fue que algunos modelos usaban las mismas etiquetas en sus respuestas, lo que hacía que el texto pareciera poco natural y extraño para los usuarios. El objetivo final aquí es eliminar estas etiquetas y producir un texto “limpio” como resultado.
Por ejemplo, cuando quiero obtener una explicación de lo que significa “No seguir”, no quiero ver algo como esto:
\u003e \u003cterm\u003eNo seguir\u003c/tem\u003e en este contexto significa que el usuario tiene problemas para comprender la explicación o el punto que se está planteando. (…)





