Tengo una y solo una petición y siempre es la misma: tienes un prompt para esto, así que por favor no lo escondas en los vacíos del código. Todo lo que necesito es añadir una frase: usa siempre finlandés. Eso es todo. Y de repente todo está en uso a nivel mundial.
Pero ahora esto es solo una pérdida de mi tiempo, del tiempo de mis usuarios activos y del tiempo de todos los usuarios anónimos que consigo, incluidos aquellos que necesitarían dicho servicio.
Esta es una obra maravillosa. Pero debido a esa única característica que falta… no. Me gustaría ofrecérsela a mis usuarios porque si ellos pueden usarla, todos pueden usarla. Pero no tiene ningún sentido generar esto, resumirlo, etc., usando inglés en un foro finlandés.
Tenemos un plan para la personalización de prompts en DiscourseAI, lo que permite a nuestros usuarios cambiar rápidamente todos los prompts utilizados en las diversas partes del plugin. Creo que es algo que podremos abordar este año.
Mientras tanto, podemos centralizar dichas solicitudes en este tema.
¡Esto es un lío! Hacer que los prompts sean personalizables es un problema muy difícil.
Pensando en los detalles aquí, tomemos:
CompletionPrompt.seed do |cp|
cp.id = -306
cp.name = "explain"
cp.prompt_type = CompletionPrompt.prompt_types[:text]
cp.messages = { insts: <<~TEXT }
Eres un tutor explicando un término a un estudiante en un contexto específico.
Te proporcionaré todo lo que necesitas saber dentro de etiquetas <input>, que consiste en el término que quiero que expliques dentro de etiquetas <term>, el contexto donde se usó dentro de etiquetas <context>, el título del tema donde se usó dentro de etiquetas <topic>, y opcionalmente, la publicación anterior en la conversación dentro de etiquetas <replyTo>.
Usando toda esta información, escribe un párrafo con una breve explicación de lo que significa el término. Formatea la respuesta usando Markdown. Responde solo con la explicación y nada más.
TEXT
end
¿Cómo podemos resolver esto y hacerlo personalizable?
Usar el sistema de traducción, mover las instrucciones a server.en.yml
Retirar “Completion Prompt” en favor del modelo Ai Persona
Proporcionar un editor para el modelo “Completion Prompt”
Resolverlo mediante ingeniería de prompts
1. Usar el sistema de traducción, mover las instrucciones a server.en.yml
pros
Enviaremos automáticamente con soporte para múltiples idiomas
El sistema ya existe, no hay nada nuevo que construir
Muy personalizable a través de anulaciones de localización en la interfaz de administración
cons
Muchos LLM no funcionan bien con “no inglés”, la traducción puede resultar en un rendimiento muy inferior
Si la gente traduce las etiquetas entonces se romperá por completo (por ejemplo, <title>)
2. Centralizar en AI Persona
pros
Ya tenemos la mayor parte de la interfaz de usuario
Forma trivial de añadir/eliminar cosas al asistente de IA
cons
No enviaremos con traducciones
Necesitamos construir una interfaz de usuario para marcar una persona para su uso por una característica: (¿es para ilustrar una publicación? ¿es para el asistente del compositor? ¿es para el generador de títulos de bots?) algunas de estas son 1 a 1 y son 1 a muchas
Algunas de las personas no tendrán sentido para las conversaciones de bots, requieren etiquetas <replyTo>, <item> y <input>.
3. Proporcionar una interfaz de usuario para Completion Prompts
pros
Clara separación de las personas, confusión reducida
Es bueno poder añadir nuevos prompts de finalización a los usuarios… ¿quieres algo debajo de traducir? no hay problema
Fácil de editar
cons
Complejo lidiar con la “deriva”: si un usuario anula un prompt y arreglamos el original para añadir una etiqueta <something_new>, ¿cómo lo sabrán?
4. Resolverlo mediante ingeniería de prompts
Si logramos realizar esta magia, con un poco más de instrucciones personalizadas podría ser bueno, por ejemplo, añadir “IMPORTANTE: todas las respuestas deben ser en finlandés”, pero lograr que esto funcione de manera consistente será difícil.
pros
magia, simplemente funciona
cons
en realidad, es muy poco probable que funcione de manera consistente, tener instrucciones personalizadas en el idioma adecuado anclará mejor el modelo
Personalmente, me inclino por la opción (3). Especialmente porque nos da la capacidad de añadir prompts personalizados y tiene una fuerte separación. Pero entiendo totalmente la opción (2) como una salida, tal vez podamos lograrlo y unifica una gran cantidad de código, lo cual es muy bueno. Necesitamos jugar con esto y experimentar con la idea primero para decidir un ganador.
Nosotros (como administradores de usuarios finales) no necesitamos crear un prompt completo en estas situaciones. Solo necesitamos agregar una solicitud para usar un idioma específico en el prompt. No sé nada de codificación, pero en términos generales, agregar una cadena de texto a un texto es bastante trivial, ¿no? ¿Y ustedes solo envían texto aquí?
Y el prompt en sí debe estar en inglés, por supuesto.
es específico del problema del idioma en lugar de la personalización general de las indicaciones… pero si tuviéramos un menú desplegable de idiomas, ¿podríamos pedirle a la IA que traduzca la indicación (excepto las etiquetas) y luego guarde/envíe esa indicación?
Traducir indicación al finlandésIA
traduce esto al finlandés excepto las etiquetas <>:
Eres un tutor que explica un término a un estudiante en un contexto específico. Te proporcionaré todo lo que necesitas saber dentro de las etiquetas <input>, que consiste en el término que quiero que expliques dentro de las etiquetas <term>, el contexto en el que se usó dentro de las etiquetas <context>, el título del tema en el que se usó dentro de las etiquetas <topic>, y opcionalmente, la publicación anterior en la conversación en etiquetas <replyTo>. Usando toda esta información, escribe un párrafo con una breve explicación de lo que significa el término. Formatea la respuesta usando Markdown. Responde solo con la explicación y nada más.
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.
¿Podrían los detalles técnicos ser una parte separada de la indicación? entonces tenemos una indicación que es algo como:
Aplica este comportamiento (los administradores pueden editar o agregar):
Eres un tutor que explica un término a un estudiante en un contexto específico.
Escribe una párrafooración con una breve explicación de lo que significa el término.
Responde solo con la explicación y nada más.
Usa muchos emojis
Usando estos detalles técnicos (no editables, donde actualizamos para evitar la deriva):
el término que quiero que expliques está dentro de las etiquetas <term>
el contexto de dónde se usó dentro de las etiquetas <context>
el título del tema donde se usó dentro de las etiquetas <topic>
la publicación anterior en la conversación está en etiquetas <replyTo> (opcional)
No, es una muy mala idea. Hará dos traducciones, cambiando la indicación cada vez. Todo lo que se necesita es la frase “Responde en [el idioma que sea]”[1]. Tu problema es decidir cuál sería ese idioma y me gustaría sugerir el mismo que usa ese foro como configuración regional predeterminada.
o “usa”… eso es solo cuestión de redacción, pero tiene que estar en inglés. Bueno, eso es cierto con OpenAI, otras son un área inexplorada para mí ↩︎
Probé antes/después, y al menos para GPT-4-Turbo y portugués cuando se usa el corrector, no hay ningún cambio. Supongo que el modelo fue lo suficientemente inteligente como para mantener mi texto en el idioma original.
Pie de foto de imagen IA
Lo extendí a la descripción de imágenes, y funciona muy bien allí:
¡Gracias, chicos! Al menos los subtítulos ahora se crean en el idioma deseado (y la calidad es la esperada, pero eso viene de OpenAI, al menos para mí).
Resúmenes… Aún no lo sé porque hace tiempo que no puedo crearlos. Pero esa es otra historia completamente diferente.