0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-06 01:10:43 +08:00
discourse/plugins/discourse-ai/config/settings.yml
Rafael dos Santos Silva 5b6d87a4c9
PERF: Remove ai_translation_max_post_length setting (#42133)
Previously, every SQL query finding translation candidates (admin
progress report and backfill jobs) filtered on `LENGTH(posts.raw)`,
which forced detoasting `raw` for every scanned row and made those
queries slow, while the limit itself no longer guarded anything — long
posts are already split into chunks sized to the model's
`max_output_tokens`, and core's `max_post_length` bounds raw size.

This change removes the setting and its query filters, deletes any
stored override via a post-deploy migration, and bumps the translation
progress cache versions since eligibility counts change.

Note for review: on existing sites, posts previously excluded by the
limit become eligible for backfill, so pending counts (and translation
spend on long-form content) will increase accordingly.
2026-07-30 19:35:58 +08:00

666 lines
17 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_sentiment_classification_strategy:
default: "classification_model"
type: enum
choices:
- classification_model
- agent
ai_sentiment_sentiment_agent:
default: "-36"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
ai_sentiment_emotion_classification_strategy:
default: "classification_model"
type: enum
choices:
- classification_model
- agent
ai_sentiment_emotion_agent:
default: "-37"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
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_embeddings_url:
hidden: true
default: "https://api.openai.com/v1/embeddings"
ai_openai_organization:
default: ""
hidden: true
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_llm_temperature_top_p_enabled:
default: false
hidden: true
client: 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"
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_enabled_features:
client: true
default: "suggestions|context_menu"
type: list
list_type: compact
allow_any: false
refresh: true
choices:
- "suggestions"
- "context_menu"
area: "ai-features/ai_helper"
ai_helper_proofreader_agent:
default: "-22"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/ai_helper"
ai_helper_title_suggestions_agent:
default: "-23"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/ai_helper"
ai_helper_explain_agent:
default: "-24"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/ai_helper"
ai_helper_post_illustrator_agent:
default: "-21"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/ai_helper"
ai_helper_smart_dates_agent:
default: "-19"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/ai_helper"
ai_helper_translator_agent:
default: "-25"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/ai_helper"
ai_helper_markdown_tables_agent:
default: "-20"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/ai_helper"
ai_helper_custom_prompt_agent:
default: "-18"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/ai_helper"
ai_image_caption_agent:
default: "-26"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
validator: "DiscourseAi::Configuration::ImageCaptionAgentValidator"
area: "ai-features/image_caption"
ai_post_image_captions_enabled:
default: false
client: true
validator: "DiscourseAi::Configuration::ImageCaptionEnabledValidator"
area: "ai-features/image_caption"
ai_post_image_captions_per_post_limit:
default: 10
min: 1
area: "ai-features/image_caption"
ai_post_image_captions_backfill_hourly_rate:
default: 0
min: 0
area: "ai-features/image_caption"
ai_post_image_captions_backfill_max_age_days:
default: 30
min: 1
max: 10000
area: "ai-features/image_caption"
ai_helper_chat_thread_title_agent:
default: "-35"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
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.0
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_quick_search_enabled:
default: false
client: true
area: "ai-features/embeddings"
ai_embeddings_semantic_search_hyde_agent:
default: "-32"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
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_admin_dashboard_enabled:
default: false
client: true
validator: "DiscourseAi::Configuration::LlmDependencyValidator"
area: "ai-features/admin_dashboard"
ai_admin_dashboard_highlights_agent:
default: "-38"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/admin_dashboard"
ai_admin_dashboard_highlights_category_scope:
type: enum
default: "public"
enum: "CategoryScopeSiteSetting"
client: false
area: "ai-features/admin_dashboard"
ai_admin_dashboard_highlights_categories:
type: category_list
default: ""
client: false
area: "ai-features/admin_dashboard"
depends_on:
- ai_admin_dashboard_highlights_category_scope
depends_on_values:
ai_admin_dashboard_highlights_category_scope:
- include
- include_strict
- exclude
- exclude_strict
depends_behavior: "hidden"
dependent_setting_display: "inline"
ai_summarization_enabled:
default: false
client: true
validator: "DiscourseAi::Configuration::LlmDependencyValidator"
area: "ai-features/summarization"
ai_summarization_agent:
default: "-11"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/summarization"
ai_pm_summarization_allowed_groups:
type: group_list
list_type: compact
default: ""
area: "ai-features/summarization"
ai_summary_gists_enabled:
default: false
client: true
area: "ai-features/summarization"
ai_summary_gists_agent:
default: "-12"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/summarization"
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"
enable_ai_bot_starred_conversations:
default: false
hidden: true
client: true
upcoming_change:
status: "permanent"
impact: "feature,all_members"
learn_more_url: "https://meta.discourse.org/t/-/403285"
ai_bot_enabled_llms:
default: ""
client: true
type: list
list_type: compact
allow_any: false
enum: "DiscourseAi::Configuration::LlmEnumerator"
refresh: 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_bot_enable_docked_composer:
default: false
hidden: true
client: true
area: "ai-features/bot"
upcoming_change:
status: "stable"
impact: "feature,all_members"
learn_more_url: "https://meta.discourse.org/t/-/403327"
ai_discover_enabled:
default: false
client: true
area: "ai-features/search"
ai_discover_agent:
default: "-34"
type: enum
client: true
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/search"
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
validator: "DiscourseAi::Configuration::DiscordSearchAgentValidator"
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
- agent
validator: "DiscourseAi::Configuration::DiscordSearchAgentValidator"
area: "ai-features/discord"
ai_discord_search_agent:
default: ""
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
validator: "DiscourseAi::Configuration::DiscordSearchAgentValidator"
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_spam_detection_max_post_count:
default: 3
min: 1
max: 100
ai_spam_detection_max_trust_level:
default: 1
type: enum
choices:
- 0
- 1
- 2
- 3
- 4
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_locale_detector_agent:
default: "-27"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/translation"
ai_translation_post_raw_translator_agent:
default: "-28"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/translation"
ai_translation_topic_title_translator_agent:
default: "-29"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/translation"
ai_translation_short_text_translator_agent:
default: "-30"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/translation"
ai_translation_backfill_hourly_rate:
default: 50
min: 0
max: 100000
client: false
area: "ai-features/translation"
ai_translation_category_scope:
type: enum
default: "public"
enum: "CategoryScopeSiteSetting"
client: false
area: "ai-features/translation"
ai_translation_categories:
type: category_list
default: ""
client: false
area: "ai-features/translation"
depends_on:
- ai_translation_category_scope
depends_on_values:
ai_translation_category_scope:
- include
- include_strict
- exclude
- exclude_strict
depends_behavior: "hidden"
dependent_setting_display: "inline"
ai_translation_personal_messages:
type: enum
default: "none"
choices:
- "none"
- "group"
- "all"
client: false
area: "ai-features/translation"
ai_translation_include_bot_content:
default: false
client: false
area: "ai-features/translation"
ai_translation_backfill_start_date:
default: ""
type: "date"
client: false
area: "ai-features/translation"
ai_translation_backfill_parallel_jobs:
default: 1
min: 1
max: 10
hidden: true
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_agent:
default: "-15"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/inference"
inferred_concepts_match_agent:
default: "-16"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
area: "ai-features/inference"
inferred_concepts_deduplicate_agent:
default: "-17"
type: enum
enum: "DiscourseAi::Configuration::AgentEnumerator"
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
ai_usage_rollup_after_days:
default: 7
min: 0
client: false
hidden: true
ai_audit_logs_purge_after_days:
default: 180
min: 0
client: false