discourse/plugins/discourse-ai/config/settings.yml
Keegan George ce2e2788bc
FEATURE: add image generation tools (#35946)
## 🔍 Overview

This update adds the ability to quickly create image generation tools
from common providers in the AI tools menu. Once the image generation
tool is created it can be used in a variety of AI features including AI
bot and illustrate post.

This updates also moves the AI tool preset scripts to their own `js`
files for easier maintainability.

## 📹 Preview
<img width="283" height="277" alt="Screenshot 2025-11-10 at 10 11 14"
src="https://github.com/user-attachments/assets/7196a963-8564-48ad-bb0f-923bc2e55289"
/>

<img width="245" height="375" alt="Screenshot 2025-11-10 at 10 11 19"
src="https://github.com/user-attachments/assets/f9c5d9a7-3ca6-4724-ad2e-ee4cc4a3f69b"
/>


https://github.com/user-attachments/assets/5375af6a-3737-40d0-9bb1-04fb894343d4
2025-11-18 07:47:49 -08:00

585 lines
16 KiB
YAML
Vendored

discourse_ai:
discourse_ai_enabled:
default: false
client: true
ai_artifact_security:
client: true
type: enum
default: "strict"
choices:
- "disabled"
- "lax"
- "hybrid"
- "strict"
ai_default_llm_model:
default: ""
type: enum
allow_any: false
enum: "DiscourseAi::Configuration::LlmEnumerator"
validator: "DiscourseAi::Configuration::LlmValidator"
ai_sentiment_enabled:
default: false
client: true
ai_sentiment_model_configs:
default: ""
secret: true
json_schema: DiscourseAi::Sentiment::SentimentSiteSettingJsonSchema
ai_sentiment_backfill_maximum_posts_per_hour:
default: 2500
min: 0
max: 10000
hidden: true
ai_sentiment_backfill_post_max_age_days:
default: 60
hidden: true
ai_openai_image_generation_url: "https://api.openai.com/v1/images/generations"
ai_openai_image_edit_url: "https://api.openai.com/v1/images/edits"
ai_openai_embeddings_url:
hidden: true
default: "https://api.openai.com/v1/embeddings"
ai_openai_organization:
default: ""
hidden: true
ai_openai_api_key:
default: ""
secret: true
ai_stability_api_key:
default: ""
secret: true
ai_stability_api_url:
default: "https://api.stability.ai"
ai_stability_engine:
default: "stable-diffusion-xl-1024-v1-0"
type: enum
choices:
- "sd3"
- "sd3-turbo"
- "stable-diffusion-xl-1024-v1-0"
- "stable-diffusion-768-v2-1"
- "stable-diffusion-v1-5"
ai_hugging_face_tei_endpoint:
hidden: true
default: ""
ai_hugging_face_tei_endpoint_srv:
default: ""
hidden: true
ai_hugging_face_tei_api_key:
default: ""
hidden: true
ai_hugging_face_tei_reranker_endpoint:
default: ""
ai_hugging_face_tei_reranker_endpoint_srv:
default: ""
hidden: true
ai_hugging_face_tei_reranker_api_key:
default: ""
secret: true
ai_google_custom_search_api_key:
default: ""
secret: true
ai_google_custom_search_cx:
default: ""
ai_cloudflare_workers_account_id:
default: ""
secret: true
hidden: true
ai_cloudflare_workers_api_token:
default: ""
secret: true
hidden: true
ai_gemini_api_key:
default: ""
hidden: true
ai_strict_token_counting:
default: false
hidden: true
ai_helper_enabled:
default: false
client: true
validator: "DiscourseAi::Configuration::LlmDependencyValidator"
area: "ai-features/ai_helper"
composer_ai_helper_allowed_groups:
type: group_list
list_type: compact
default: "3|11" # 3: @staff, 11: @trust_level_1
allow_any: false
refresh: true
area: "ai-features/ai_helper"
ai_helper_allowed_in_pm:
default: false
client: true
area: "ai-features/ai_helper"
ai_helper_model: # Deprecated. TODO(keegan): Remove 2025-09-01
default: ""
allow_any: false
type: enum
enum: "DiscourseAi::Configuration::LlmEnumerator"
hidden: true
ai_helper_custom_prompts_allowed_groups: # Deprecated. TODO(roman): Remove 2025-09-01
type: group_list
list_type: compact
default: "3" # 3: @staff
allow_any: false
refresh: true
hidden: true
post_ai_helper_allowed_groups:
type: group_list
list_type: compact
default: "3|11" # 3: @staff, 11: @trust_level_1
allow_any: false
refresh: true
area: "ai-features/ai_helper"
ai_helper_automatic_chat_thread_title:
default: false
area: "ai-features/ai_helper"
ai_helper_automatic_chat_thread_title_delay:
default: 5
area: "ai-features/ai_helper"
ai_helper_illustrate_post_model: # Deprecated. TODO(keegan): Remove 2025-12-01
default: disabled
type: enum
choices:
- stable_diffusion_xl
- dall_e_3
- disabled
area: "ai-features/ai_helper"
hidden: true
ai_helper_enabled_features:
client: true
default: "suggestions|context_menu"
type: list
list_type: compact
allow_any: false
refresh: true
choices:
- "suggestions"
- "context_menu"
- "image_caption"
area: "ai-features/ai_helper"
ai_helper_image_caption_model: # Deprecated. TODO(keegan): Remove 2025-09-01
default: ""
type: enum
enum: "DiscourseAi::Configuration::LlmVisionEnumerator"
hidden: true
ai_helper_proofreader_persona:
default: "-22"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/ai_helper"
ai_helper_title_suggestions_persona:
default: "-23"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/ai_helper"
ai_helper_explain_persona:
default: "-24"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/ai_helper"
ai_helper_post_illustrator_persona:
default: "-21"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/ai_helper"
ai_helper_smart_dates_persona:
default: "-19"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/ai_helper"
ai_helper_translator_persona:
default: "-25"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/ai_helper"
ai_helper_markdown_tables_persona:
default: "-20"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/ai_helper"
ai_helper_custom_prompt_persona:
default: "-18"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/ai_helper"
ai_helper_image_caption_persona:
default: "-26"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/ai_helper"
ai_embeddings_enabled:
default: false
client: true
validator: "DiscourseAi::Configuration::EmbeddingsModuleValidator"
area: "ai-features/embeddings"
ai_embeddings_selected_model:
type: enum
default: ""
allow_any: false
enum: "DiscourseAi::Configuration::EmbeddingDefsEnumerator"
validator: "DiscourseAi::Configuration::EmbeddingDefsValidator"
area: "ai-features/embeddings"
ai_embeddings_backfill_model:
type: enum
default: ""
allow_any: false
enum: "DiscourseAi::Configuration::EmbeddingDefsEnumerator"
hidden: true
ai_embeddings_per_post_enabled:
default: false
hidden: true
ai_embeddings_generate_for_pms:
default: false
area: "ai-features/embeddings"
ai_embeddings_semantic_related_topics_enabled:
default: false
client: true
area: "ai-features/embeddings"
ai_embeddings_semantic_related_topics:
default: 5
area: "ai-features/embeddings"
ai_embeddings_semantic_related_include_closed_topics:
default: true
area: "ai-features/embeddings"
ai_embeddings_semantic_related_age_penalty:
default: 0.3
type: float
min: 0.0
max: 2.0
area: "ai-features/embeddings"
ai_embeddings_semantic_related_age_time_scale:
default: 365
type: integer
min: 1
max: 3650
area: "ai-features/embeddings"
ai_embeddings_backfill_batch_size:
default: 250
hidden: true
ai_embeddings_semantic_search_enabled:
default: false
client: true
area: "ai-features/embeddings"
ai_embeddings_semantic_search_use_hyde:
default: false
validator: "DiscourseAi::Configuration::LlmDependencyValidator"
area: "ai-features/embeddings"
ai_embeddings_semantic_search_hyde_model: # Deprecated. TODO(keegan): Remove 2025-09-01
hidden: true
default: ""
type: enum
allow_any: false
enum: "DiscourseAi::Configuration::LlmEnumerator"
ai_embeddings_semantic_quick_search_enabled:
default: false
client: true
area: "ai-features/embeddings"
ai_embeddings_semantic_search_hyde_persona:
default: "-32"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/embeddings"
ai_embeddings_discourse_service_api_endpoint:
default: ""
hidden: true
ai_embeddings_discourse_service_api_endpoint_srv:
default: ""
hidden: true
ai_embeddings_discourse_service_api_key:
hidden: true
default: ""
secret: true
ai_embeddings_model:
hidden: true
type: enum
default: "bge-large-en"
allow_any: false
choices:
- all-mpnet-base-v2
- text-embedding-ada-002
- text-embedding-3-small
- text-embedding-3-large
- multilingual-e5-large
- bge-large-en
- gemini
- bge-m3
ai_embeddings_pg_connection_string:
default: ""
hidden: true
ai_summarization_enabled:
default: false
client: true
validator: "DiscourseAi::Configuration::LlmDependencyValidator"
area: "ai-features/summarization"
ai_summarization_model: # Deprecated. TODO(keegan): Remove 2025-09-01
default: ""
allow_any: false
type: enum
enum: "DiscourseAi::Configuration::LlmEnumerator"
hidden: true
ai_summarization_persona:
default: "-11"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/summarization"
ai_pm_summarization_allowed_groups:
type: group_list
list_type: compact
default: ""
area: "ai-features/summarization"
ai_custom_summarization_allowed_groups: # Deprecated. TODO(roman): Remove 2025-09-01
type: group_list
list_type: compact
default: "3|13" # 3: @staff, 13: @trust_level_3
hidden: true
ai_summary_gists_enabled:
default: false
client: true
area: "ai-features/summarization"
ai_summary_gists_persona:
default: "-12"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/summarization"
ai_summary_gists_allowed_groups: # Deprecated. TODO(roman): Remove 2025-09-01
type: group_list
list_type: compact
default: "0" #everyone
hidden: true
ai_summary_backfill_topic_max_age_days:
default: 30
min: 1
max: 10000
area: "ai-features/summarization"
ai_summary_backfill_maximum_topics_per_hour:
default: 0
min: 0
max: 10000
area: "ai-features/summarization"
ai_summary_backfill_minimum_word_count:
default: 200
area: "ai-features/summarization"
ai_bot_enabled:
default: false
client: true
area: "ai-features/bot"
ai_bot_enable_chat_warning:
default: false
client: true
area: "ai-features/bot"
ai_bot_debugging_allowed_groups:
type: group_list
list_type: compact
default: ""
allow_any: false
area: "ai-features/bot"
ai_bot_allowed_groups:
type: group_list
list_type: compact
default: "3|14" # 3: @staff, 14: @trust_level_4
area: "ai-features/bot"
ai_bot_public_sharing_allowed_groups:
client: false
type: group_list
list_type: compact
default: "1|2" # 1: admins, 2: moderators
allow_any: false
refresh: true
area: "ai-features/bot"
ai_bot_add_to_header:
default: false
client: true
area: "ai-features/bot"
ai_bot_add_to_community_section:
default: true
client: true
area: "ai-features/bot"
ai_bot_github_access_token:
default: ""
secret: true
area: "ai-features/bot"
ai_discover_enabled:
default: false
client: true
area: "ai-features/search"
ai_discover_persona:
default: "-34"
type: enum
client: true
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/search"
ai_bot_discover_persona: # Replaced by ai_discover_persona. TODO(roman): Remove 2026-01-01
default: ""
hidden: true
ai_automation_max_triage_per_minute:
default: 60
hidden: true
ai_automation_max_triage_per_post_per_minute:
default: 2
hidden: true
ai_discord_search_enabled:
default: false
client: true
area: "ai-features/discord"
ai_discord_app_id:
default: ""
client: false
area: "ai-features/discord"
ai_discord_app_public_key:
default: ""
client: false
area: "ai-features/discord"
ai_discord_search_mode:
default: "search"
type: enum
choices:
- search
- persona
area: "ai-features/discord"
ai_discord_search_persona:
default: ""
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/discord"
ai_discord_allowed_guilds:
type: list
list_type: compact
default: ""
area: "ai-features/discord"
ai_spam_detection_enabled:
default: false
validator: "DiscourseAi::Configuration::SpamDetectionValidator"
ai_spam_detection_user_id:
default: ""
hidden: true
ai_rag_images_enabled:
default: false
hidden: true
ai_translation_enabled:
default: false
client: true
validator: "DiscourseAi::Configuration::LlmDependencyValidator"
area: "ai-features/translation"
ai_translation_model: # Deprecated. TODO(keegan): Remove 2025-09-01
default: ""
type: enum
allow_any: false
enum: "DiscourseAi::Configuration::LlmEnumerator"
hidden: true
ai_translation_locale_detector_persona:
default: "-27"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/translation"
ai_translation_post_raw_translator_persona:
default: "-28"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/translation"
ai_translation_topic_title_translator_persona:
default: "-29"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/translation"
ai_translation_short_text_translator_persona:
default: "-30"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/translation"
ai_translation_backfill_hourly_rate:
default: 0
min: 0
max: 100000
client: false
area: "ai-features/translation"
ai_translation_backfill_limit_to_public_content:
default: true
client: false
area: "ai-features/translation"
ai_translation_max_post_length:
default: 10000
client: false
area: "ai-features/translation"
ai_translation_backfill_max_age_days:
default: 5
min: 0
max: 20000
client: false
area: "ai-features/translation"
ai_translation_max_tokens_multiplier:
default: 1.0
type: float
min: 1.0
max: 10.0
area: "ai-features/translation"
ai_translation_verbose_logs:
default: false
client: false
hidden: true
area: "ai-features/translation"
inferred_concepts_enabled:
default: false
client: true
area: "ai-features/inference"
inferred_concepts_background_match:
default: false
client: false
area: "ai-features/inference"
inferred_concepts_daily_topics_limit:
default: 20
client: false
area: "ai-features/inference"
inferred_concepts_min_posts:
default: 5
client: false
area: "ai-features/inference"
inferred_concepts_min_likes:
default: 10
client: false
area: "ai-features/inference"
inferred_concepts_min_views:
default: 100
client: false
area: "ai-features/inference"
inferred_concepts_lookback_days:
default: 30
client: false
area: "ai-features/inference"
inferred_concepts_daily_posts_limit:
default: 30
client: false
area: "ai-features/inference"
inferred_concepts_post_min_likes:
default: 5
client: false
area: "ai-features/inference"
inferred_concepts_generate_persona:
default: "-15"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/inference"
inferred_concepts_match_persona:
default: "-16"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/inference"
inferred_concepts_deduplicate_persona:
default: "-17"
type: enum
enum: "DiscourseAi::Configuration::PersonaEnumerator"
area: "ai-features/inference"
ai_artifact_kv_value_max_length:
default: 5000
hidden: true
ai_artifact_max_keys_per_user_per_artifact:
default: 100
hidden: true