Como configurar prompts de assistente personalizados

Estou pensando em habilitar alguns prompts personalizados no assistente do Discourse.

Até agora, o máximo que consegui foi usá-los por meio de agentes via o AI Bot. Uma função, por exemplo, desenvolve brevemente um post a partir de um link colado. Funciona muito bem, mas é bastante trabalho transformar a mensagem pessoal em um tópico, movê-lo e, em seguida, adicionar tags.

O comportamento desejado seria permitir adicionar essa mesma funcionalidade aos prompts já estabelecidos no assistente, sem precisar colar o prompt inicial novamente.

Ok, no final acabei reaproveitando helpers que estão atualmente disponíveis (mas não são usados em nossa comunidade) e já são fornecidos com o Discourse.

Onde Configuração Definir como Renomear rótulo (Personalizar → Texto)
Ask AI (posts/tópicos) ai_helper_translator_agent agente de busca personalizado discourse_ai.ai_helper.prompts.translate → rótulo de busca personalizado
Tradução no Composer ai_helper_markdown_tables_agent agente Tradutor embutido discourse_ai.ai_helper.prompts.markdown_table → Traduzir
Formatador Markdown do Composer ai_helper_smart_dates_agent agente de formatação Markdown (movido) discourse_ai.ai_helper.prompts.replace_dates → Formatar como Markdown

Depois, dois snippets:

javascripts/discourse/api-initializers/ai-helper-slots.gjs

import { apiInitializer } from "discourse/lib/api";

const AI_HELPER_ICONS = {
  translate: "ph-dt-magnifying-glass", // para o agente de busca do fórum
  markdown_table: "ph-dt-translate", // composer: Tradutor embutido
  replace_dates: "ph-dt-markdown", // composer: formador de 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;
}

Observação: estou usando um conjunto personalizado de ícones Phosphor; os novos ícones podem ser agrupados no Font Awesome, Material ou em qualquer outro conjunto de ícones.