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.