Cómo se compone una solicitud
El orden en el que Read Frog construye el prompt que envía, y qué hace con el texto que le devuelve el modelo.
Tus dos campos de prompt no son lo que sale del navegador. Read Frog añade bloques de reglas, sustituye variables, adjunta términos de glosario y luego hace bastante trabajo sobre la respuesta antes de que nada de eso llegue a la página. Esta página recorre las dos mitades, en orden.
Todo esto es sobre proveedores LLM. Google Translate, Microsoft Translator y DeepL no reciben ningún prompt y ninguna de estas etapas se les aplica.
Construir la solicitud
1. Elegir los párrafos
El script de contenido recopila los párrafos a medida que se acercan a la ventana visible, descarta los que excluyen una regla de salto o el filtro de párrafos pequeños, y pasa el resto a una cola. Con un proveedor LLM, la cola agrupa en una misma solicitud los párrafos compatibles —mismo proveedor, mismo par de idiomas, mismo contexto de página— hasta los límites de caracteres y de párrafos de la página de Control de solicitudes. Ese grupo es lo que acaba siendo {{input}}.
2. Elegir el prompt
Read Frog busca el id del prompt que seleccionaste. Si nombra a uno integrado, gana el integrado; si no, busca entre los tuyos; y si no coincide ninguno —por ejemplo, un prompt que borraste mientras estaba seleccionado— recurre a Default en lugar de fallar.
3. Añadir los bloques de reglas
Las instrucciones extra se añaden al prompt de sistema, y solo cuando hacen falta. Por eso el mismo prompt produce una solicitud distinta con párrafos distintos.
| Bloque | Se añade cuando |
|---|---|
| Reglas de varios párrafos | La solicitud lleva más de un párrafo |
| Regla de «ya traducido» | La solicitud lleva más de un párrafo, solo en traducción de página |
| Reglas de marcas de HTML protegido | El texto contiene una marca data-rf-attr |
| Reglas de marcadores protegidos | El texto contiene un marcador numerado de fórmula |
Una solicitud de un solo párrafo no recibe ninguno. La traducción de subtítulos recibe las reglas de varios párrafos pero nunca la regla de «ya traducido».
4. Sustituir las variables
Ahora los nombres {{...}} se sustituyen, en los dos campos, por los valores que se describen en Variables de prompt. Solo se sustituyen los nombres conocidos; cualquier otra cosa se queda como está escrita.
5. Adjuntar el glosario
Por último, los términos de tu glosario que aparecen de verdad en este texto se añaden al prompt de sistema. Van al final a propósito: un término es texto que escribiste tú, y si se adjuntara antes de la sustitución, un término que contuviera por casualidad el nombre de una variable podría reescribir el prompt a su alrededor.
Una solicitud terminada
Dos párrafos de un artículo en inglés, traduciendo a chino simplificado, con el prompt Default y AI Smart Context desactivado. El prompt de sistema que sale:
You are a professional Simplified Mandarin Chinese native translator who needs to fluently translate text into Simplified Mandarin Chinese.
## Translation Rules
1. Output only the translated content, without explanations or additional content ...
2. The returned translation must maintain exactly the same number of paragraphs and format as the original text.
3. If the text contains HTML tags, consider where the tags should be placed in the translation while maintaining fluency.
4. For content that should not be translated (such as proper nouns, code, etc.), keep the original text.
## Document Metadata for Context Awareness
Webpage title: Why your timestamps are eight hours off — devblog
Webpage summary: No summary available
## Multi-paragraph Translation Rules
1. If input contains a standalone line containing only %%, use a standalone %% line in your output ...
2. **CRITICAL**: Treat %% as a separator only when it appears on its own line ...
## OUTPUT FORMAT:
- **Single paragraph input** → Output translation directly (no separators, no extra text)
- **Multi-paragraph input** → Put %% on its own line between translations
## Already-translated Input Rule
Output only {{NO_TRANSLATION_NEEDED}} when only non-translatable names, brands, handles, URLs, numbers, or code differ from Simplified Mandarin Chinese. A foreign-language phrase or clause must be translated.Y el prompt:
Translate to Simplified Mandarin Chinese:
Every timestamp you store without a zone is a bug waiting for a plane ticket.
%%
The fix is boring: store UTC, render local, and never let the two meet in a database column.Fíjate en las dos líneas vacías después de los dos puntos: vienen del propio campo de prompt, que es Translate to {{targetLanguage}}: seguido de dos líneas vacías y {{input}}.
Leer la respuesta
1. Recortar y partir
La respuesta se recorta y luego se parte por las líneas que no contienen más que %%. Cada trozo se recorta otra vez y se empareja con el párrafo que ocupaba la misma posición en la solicitud. Un %% dentro de una frase, de un ejemplo de código o de una cita no es un separador: solo lo es una línea que no contiene nada más.
2. Comprobar el recuento
Read Frog espera exactamente tantos trozos como envió. Un desajuste es un fallo total del grupo, no un éxito parcial: la solicitud se reintenta hasta tres veces con un retardo creciente, y si sigue sin cuadrar, todos los párrafos del grupo se vuelven a enviar por separado. Eso es más lento y cuesta más, y por eso un prompt que anime a comentar o a fusionar párrafos es caro y no solo desordenado.
3. Resolver el «nada que traducir»
{{NO_TRANSLATION_NEEDED}} es la respuesta que se le pide al modelo para un párrafo que ya está escrito en tu idioma de destino. Cuando un trozo es exactamente esa marca, Read Frog trata la traducción como vacía, y una traducción vacía no renderiza nada: en modo bilingüe no aparece ninguna segunda línea bajo ese párrafo, y en modo solo traducción el original se queda visible.
La marca se guarda en la caché tal cual, así que un párrafo resuelto así no se vuelve a enviar en la siguiente visita. Tiene forma de variable a propósito: la sustitución de variables solo reemplaza los nombres que conoce, así que la marca sobrevive intacta a la composición del prompt y llega al modelo escrita igual todas las veces.
4. Descartar una traducción que no dice nada
Un modelo al que se le da texto en el mismo idioma a menudo lo devuelve con diferencias cosméticas en lugar de usar la marca: espacios recolocados, comillas rectas convertidas en curvas, puntuación de ancho completo. Read Frog compara la respuesta con el original después de neutralizar esas diferencias, y si coinciden trata el resultado como vacío también. Por eso algunos párrafos de una página con varios idiomas no muestran ninguna traducción aunque sí se haya hecho una solicitud por ellos.
5. Verificar las marcas
Si el texto llevaba marcas data-rf-attr, la respuesta tiene que devolver cada una exactamente una vez y sobre el mismo tipo de elemento. Una marca que falta, que está duplicada, que está inventada o que se ha movido a otra etiqueta hace fallar ese párrafo en lugar de renderizar un enlace que apunte a otro sitio.
Los marcadores numerados de fórmula se comprueban con más indulgencia. Una respuesta que pierda o duplique uno se muestra igualmente —las fórmulas que faltan se añaden al final—, pero no se escribe en la caché, así que la siguiente visita hace un intento nuevo en lugar de quedarse con un párrafo degradado para siempre.
6. Guardarla
Lo que sobrevive se escribe en la caché de traducciones y la página se actualiza.
La clave de la caché
Una traducción en caché se indexa, entre otras cosas, por el prompt de sistema terminado y el prompt terminado: después de los bloques de reglas, después de la sustitución, después del glosario.
De eso se derivan tres consecuencias que vale la pena conocer:
- Editar un prompt deja huérfanas todas las traducciones hechas con el anterior. Las páginas que ya habías leído se traducirán, y se pagarán, otra vez.
- Cambiar tu glosario solo deja huérfanos los párrafos que contenían un término coincidente. Un párrafo que no coincidió con nada produce un prompt byte a byte idéntico al de no tener glosario, así que su entrada en la caché sobrevive.
- Activar o desactivar AI Smart Context cambia todas las claves, porque la variable del resumen cambia: de un resumen real a
No summary available, o al revés.
Vaciar la caché desde Opciones → Traducción elimina las traducciones guardadas y los resúmenes de página. No toca tus prompts, tus proveedores ni tus glosarios.
