Я думаю о том, чтобы включить несколько пользовательских подсказок в помощнике Discourse.
Сейчас мне удалось использовать их только через агентов с помощью ИИ-бота. Например, функция кратко развивает тему поста по вставленной ссылке. Это работает отлично, но превращение личного сообщения в тему, её перемещение и добавление тегов — это много ручной работы.
Желаемое поведение позволило бы добавить ту же самую функциональность к уже существующим в помощнике сценариям, не needing вставлять начальную подсказку заново.
Хорошо, в итоге я решил переиспользовать хелперы, которые в настоящее время доступны (но не используются в нашем сообществе) и уже входят в состав Discourse.
| Где |
Настройка |
Значение |
Переименовать метку (Customize → Text) |
| Ask AI (посты/темы) |
ai_helper_translator_agent |
custom search agent |
discourse_ai.ai_helper.prompts.translate → custom search label |
| Composer Translate |
ai_helper_markdown_tables_agent |
built-in Translator agent |
discourse_ai.ai_helper.prompts.markdown_table → Translate |
| Composer Markdown formatter |
ai_helper_smart_dates_agent |
Markdown formatter agent (moved) |
discourse_ai.ai_helper.prompts.replace_dates → Format as Markdown |
Затем два фрагмента кода:
javascripts/discourse/api-initializers/ai-helper-slots.gjs
import { apiInitializer } from "discourse/lib/api";
const AI_HELPER_ICONS = {
translate: "ph-dt-magnifying-glass", // для агента поиска в форуме
markdown_table: "ph-dt-translate", // composer: встроенный Translator
replace_dates: "ph-dt-markdown", // composer: Markdown formatter
};
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;
}
Примечание: я использую кастомный набор иконок Phosphor; новые иконки можно упаковать в Font Awesome, Material или любой другой набор иконок.