Je réfléchis à l’activation de certains prompts personnalisés dans l’assistant Discourse.
Pour l’instant, la chose la plus avancée que j’ai réussi à faire, c’est de les utiliser via des agents à travers le Bot IA. Une fonction, par exemple, développe brièvement un message à partir d’un lien collé. Ça marche très bien, mais c’est beaucoup de travail pour transformer le message personnel en sujet, le déplacer, puis ajouter des tags.
Le comportement souhaité permettrait d’ajouter cette même fonctionnalité à ceux déjà établis dans l’assistant, sans avoir à recoller le prompt initial.
D’accord, j’ai fini par réutiliser des helpers actuellement disponibles (mais non utilisés dans notre communauté) et déjà livrés avec Discourse.
| Emplacement |
Paramètre |
Valeur |
Renommer le libellé (Personnaliser → Texte) |
| Demander à l’IA (publications/sujets) |
ai_helper_translator_agent |
agent de recherche personnalisé |
discourse_ai.ai_helper.prompts.translate → libellé de recherche personnalisé |
| Traduction du composeur |
ai_helper_markdown_tables_agent |
agent Traducteur intégré |
discourse_ai.ai_helper.prompts.markdown_table → Traduire |
| Formatteur Markdown du composeur |
ai_helper_smart_dates_agent |
agent formateur Markdown (déplacé) |
discourse_ai.ai_helper.prompts.replace_dates → Formater en Markdown |
Ensuite, deux extraits :
javascripts/discourse/api-initializers/ai-helper-slots.gjs
import { apiInitializer } from "discourse/lib/api";
const AI_HELPER_ICONS = {
translate: "ph-dt-magnifying-glass", // pour l'agent de recherche du forum
markdown_table: "ph-dt-translate", // composeur : Traducteur intégré
replace_dates: "ph-dt-markdown", // composeur : formateur 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;
}
Note : j’utilise un ensemble d’icônes Phosphor personnalisé ; les nouvelles icônes peuvent être intégrées dans Font Awesome, Material, ou tout autre ensemble d’icônes.