discourse_ai: discourse_ai_enabled: default: true client: true ai_artifact_security: client: true type: enum default: "strict" choices: - "disabled" - "lax" - "strict" ai_toxicity_enabled: default: false client: true hidden: true ai_toxicity_inference_service_api_endpoint: default: "" ai_toxicity_inference_service_api_endpoint_srv: default: "" hidden: true ai_toxicity_inference_service_api_key: default: "" secret: true ai_toxicity_inference_service_api_model: type: enum default: unbiased choices: - unbiased - multilingual - original ai_toxicity_flag_automatically: default: false client: false ai_toxicity_flag_threshold_toxicity: default: 80 client: false ai_toxicity_flag_threshold_severe_toxicity: default: 30 client: false ai_toxicity_flag_threshold_obscene: default: 80 client: false ai_toxicity_flag_threshold_identity_attack: default: 60 client: false ai_toxicity_flag_threshold_insult: default: 60 client: false ai_toxicity_flag_threshold_threat: default: 60 client: false ai_toxicity_flag_threshold_sexual_explicit: default: 60 client: false ai_toxicity_groups_bypass: type: group_list list_type: compact default: "3" # 3: @staff allow_any: false refresh: true ai_sentiment_enabled: default: false client: true ai_sentiment_model_configs: default: "" json_schema: DiscourseAi::Sentiment::SentimentSiteSettingJsonSchema ai_nsfw_detection_enabled: default: false hidden: true ai_nsfw_inference_service_api_endpoint: default: "" ai_nsfw_inference_service_api_endpoint_srv: default: "" hidden: true ai_nsfw_inference_service_api_key: default: "" secret: true ai_nsfw_flag_automatically: true ai_nsfw_flag_threshold_general: 60 ai_nsfw_flag_threshold_drawings: 60 ai_nsfw_flag_threshold_hentai: 60 ai_nsfw_flag_threshold_porn: 60 ai_nsfw_flag_threshold_sexy: 70 ai_nsfw_models: type: list list_type: compact default: "opennsfw2" allow_any: false choices: - opennsfw2 - nsfw_detector ai_openai_gpt35_url: default: "https://api.openai.com/v1/chat/completions" hidden: true ai_openai_gpt35_16k_url: default: "https://api.openai.com/v1/chat/completions" hidden: true ai_openai_gpt4o_url: default: "https://api.openai.com/v1/chat/completions" hidden: true ai_openai_gpt4_url: default: "https://api.openai.com/v1/chat/completions" hidden: true ai_openai_gpt4_32k_url: default: "https://api.openai.com/v1/chat/completions" hidden: true ai_openai_gpt4_turbo_url: default: "https://api.openai.com/v1/chat/completions" hidden: true ai_openai_dall_e_3_url: "https://api.openai.com/v1/images/generations" ai_openai_embeddings_url: "https://api.openai.com/v1/embeddings" ai_openai_organization: default: "" hidden: true ai_openai_api_key: default: "" secret: true ai_anthropic_api_key: default: "" hidden: true ai_cohere_api_key: default: "" hidden: 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_api_url: default: "" hidden: true ai_hugging_face_api_key: default: "" hidden: true ai_hugging_face_token_limit: default: 4096 hidden: true ai_hugging_face_model_display_name: default: "" hidden: true ai_hugging_face_tei_endpoint: default: "" ai_hugging_face_tei_endpoint_srv: default: "" hidden: true ai_hugging_face_tei_api_key: "" ai_hugging_face_tei_reranker_endpoint: default: "" ai_hugging_face_tei_reranker_endpoint_srv: default: "" hidden: true ai_hugging_face_tei_reranker_api_key: "" ai_google_custom_search_api_key: default: "" secret: true ai_google_custom_search_cx: default: "" ai_bedrock_access_key_id: default: "" secret: true hidden: true ai_bedrock_secret_access_key: default: "" hidden: true ai_bedrock_region: default: "us-east-1" hidden: true ai_cloudflare_workers_account_id: default: "" secret: true ai_cloudflare_workers_api_token: default: "" secret: true ai_gemini_api_key: default: "" hidden: false ai_vllm_endpoint: default: "" hidden: true ai_vllm_endpoint_srv: default: "" hidden: true ai_vllm_api_key: default: "" hidden: true ai_llava_endpoint: default: "" hidden: true ai_llava_endpoint_srv: default: "" hidden: true ai_llava_api_key: default: "" hidden: true ai_strict_token_counting: default: false hidden: true ai_ollama_endpoint: hidden: true default: "" ai_helper_enabled: default: false client: true validator: "DiscourseAi::Configuration::LlmDependencyValidator" composer_ai_helper_allowed_groups: type: group_list list_type: compact default: "3|14" # 3: @staff, 14: @trust_level_4 allow_any: false refresh: true ai_helper_allowed_in_pm: default: false client: true ai_helper_model: default: "" allow_any: false type: enum enum: "DiscourseAi::Configuration::LlmEnumerator" validator: "DiscourseAi::Configuration::LlmValidator" ai_helper_custom_prompts_allowed_groups: type: group_list list_type: compact default: "3" # 3: @staff allow_any: false refresh: true post_ai_helper_allowed_groups: type: group_list list_type: compact default: "3|14" # 3: @staff, 14: @trust_level_4 allow_any: false refresh: true ai_helper_automatic_chat_thread_title: default: false ai_helper_automatic_chat_thread_title_delay: default: 5 ai_helper_illustrate_post_model: default: disabled type: enum choices: - stable_diffusion_xl - dall_e_3 - disabled 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" ai_helper_image_caption_model: default: "" type: enum enum: "DiscourseAi::Configuration::LlmVisionEnumerator" ai_auto_image_caption_allowed_groups: client: true type: group_list list_type: compact default: "10" # 10: @trust_level_0 allow_any: false refresh: true ai_helper_model_allowed_seeded_models: default: "" hidden: true type: list list_type: compact ai_helper_image_caption_model_allowed_seeded_models: default: "" hidden: true type: list list_type: compact ai_embeddings_enabled: default: false client: true validator: "DiscourseAi::Configuration::EmbeddingsModuleValidator" ai_embeddings_discourse_service_api_endpoint: "" ai_embeddings_discourse_service_api_endpoint_srv: default: "" hidden: true ai_embeddings_discourse_service_api_key: default: "" secret: true ai_embeddings_model: 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 validator: "DiscourseAi::Configuration::EmbeddingsModelValidator" ai_embeddings_per_post_enabled: default: false hidden: true ai_embeddings_generate_for_pms: false ai_embeddings_semantic_related_topics_enabled: default: false client: true ai_embeddings_semantic_related_topics: 5 ai_embeddings_semantic_related_include_closed_topics: true ai_embeddings_backfill_batch_size: default: 250 hidden: true ai_embeddings_pg_connection_string: default: "" hidden: true ai_embeddings_semantic_search_enabled: default: false client: true validator: "DiscourseAi::Configuration::LlmDependencyValidator" ai_embeddings_semantic_search_hyde_model: default: "" type: enum allow_any: false enum: "DiscourseAi::Configuration::LlmEnumerator" validator: "DiscourseAi::Configuration::LlmValidator" ai_embeddings_semantic_search_hyde_model_allowed_seeded_models: default: "" hidden: true type: list list_type: compact ai_embeddings_semantic_quick_search_enabled: default: false client: true hidden: true ai_summarization_enabled: default: false client: true validator: "DiscourseAi::Configuration::LlmDependencyValidator" ai_summarization_model: default: "" allow_any: false type: enum enum: "DiscourseAi::Configuration::LlmEnumerator" validator: "DiscourseAi::Configuration::LlmValidator" ai_pm_summarization_allowed_groups: type: group_list list_type: compact default: "" ai_custom_summarization_allowed_groups: type: group_list list_type: compact default: "3|13" # 3: @staff, 13: @trust_level_3 ai_summarize_max_hot_topics_gists_per_batch: default: 0 min: 0 max: 1000 hidden: true ai_hot_topic_gists_allowed_groups: type: group_list list_type: compact default: "" ai_summarization_strategy: # TODO(roman): Deprecated. Remove by Sept 2024 type: enum default: "" hidden: true choices: "DiscourseAi::Configuration::LlmEnumerator.old_summarization_options + ['']" ai_summarization_model_allowed_seeded_models: default: "" hidden: true type: list list_type: compact ai_summary_backfill_maximum_topics_per_hour: default: 0 min: 0 max: 10000 ai_summary_backfill_minimum_word_count: default: 200 hidden: true ai_bot_enabled: default: false client: true ai_bot_enable_chat_warning: default: false client: true ai_bot_debugging_allowed_groups: type: group_list list_type: compact default: "" allow_any: false ai_bot_allowed_groups: type: group_list list_type: compact default: "3|14" # 3: @staff, 14: @trust_level_4 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 ai_bot_enabled_chat_bots: # TODO(roman): Deprecated. Remove by Sept 2024 type: list default: "gpt-3.5-turbo" hidden: true choices: "DiscourseAi::Configuration::LlmEnumerator.available_ai_bots" ai_bot_add_to_header: default: true client: true ai_bot_github_access_token: default: "" secret: true ai_automation_max_triage_per_minute: default: 60 hidden: true ai_automation_max_triage_per_post_per_minute: default: 2 hidden: true ai_automation_allowed_seeded_models: default: "" hidden: true type: list list_type: compact ai_discord_app_id: default: "" client: false ai_discord_app_public_key: default: "" client: false ai_discord_search_mode: default: "search" type: enum choices: - search - persona ai_discord_search_persona: default: "" type: enum enum: "DiscourseAi::Configuration::PersonaEnumerator" ai_discord_allowed_guilds: type: list list_type: compact default: ""