Estoy pensando en habilitar algunos prompts personalizados en el asistente de Discourse.
Por ahora, lo máximo que he logrado es utilizarlos desde agentes a través del AI Bot. Una función, por ejemplo, desarrolla brevemente un mensaje a partir de un enlace pegado. Funciona muy bien, pero es mucho trabajo transformar el mensaje personal en un tema, moverlo y luego añadir etiquetas.
El comportamiento deseado permitiría añadir esa misma funcionalidad a los ya establecidos en el asistente, sin necesidad de pegar el prompt inicial de nuevo.
Vale, al final terminé reutilizando helpers que están disponibles actualmente (aunque no se usan en nuestra comunidad) y que ya se incluyen con Discourse.
| Dónde |
Configuración |
Establecido en |
Renombrar etiqueta (Personalizar → Texto) |
| Preguntar a la IA (publicaciones/temas) |
ai_helper_translator_agent |
Agente de búsqueda personalizado |
discourse_ai.ai_helper.prompts.translate → etiqueta de búsqueda personalizada |
| Traducción en el compositor |
ai_helper_markdown_tables_agent |
Agente de traducción integrado |
discourse_ai.ai_helper.prompts.markdown_table → Traducir |
| Formateador Markdown en el compositor |
ai_helper_smart_dates_agent |
Agente de formateador Markdown (movido) |
discourse_ai.ai_helper.prompts.replace_dates → Formatear como Markdown |
Luego, dos fragmentos de código:
javascripts/discourse/api-initializers/ai-helper-slots.gjs
import { apiInitializer } from "discourse/lib/api";
const AI_HELPER_ICONS = {
translate: "ph-dt-magnifying-glass", // para el agente de búsqueda del foro
markdown_table: "ph-dt-translate", // compositor: traductor integrado
replace_dates: "ph-dt-markdown", // compositor: formateador Markdown
};
export default apiInitializer((api) => {
api.getCurrentUser()?.ai_helper_prompts?.forEach((prompt) => {
prompt.icon = AI_HELPER_ICONS[prompt.name] ?? prompt.icon;
});
});
common.scss
.ai-composer-helper-menu ul.ai-helper-options li[data-value="translate"] {
display: none;
}
Nota: estoy utilizando un conjunto de iconos Phosphor personalizado; los nuevos iconos pueden integrarse en Font Awesome, Material o cualquier otro conjunto de iconos.