discourse_ai:
  discourse_ai_enabled:
    default: true
    client: true

  ai_toxicity_enabled:
    default: false
    client: true
  ai_toxicity_inference_service_api_endpoint:
    default: "https://disorder-testing.demo-by-discourse.com"
  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:
    client: true
    type: group_list
    list_type: compact
    default: "3" # 3: @staff
    allow_any: false
    refresh: true

  ai_sentiment_enabled:
    default: false
    client: true
  ai_sentiment_inference_service_api_endpoint:
    default: "https://sentiment-testing.demo-by-discourse.com"
  ai_sentiment_inference_service_api_key:
    default: ''
    secret: true
  ai_sentiment_models:
    type: list
    list_type: compact
    default: "emotion"
    allow_any: false
    choices:
     - sentiment
     - emotion

  ai_nsfw_detection_enabled: false
  ai_nsfw_inference_service_api_endpoint:
    default: "https://nsfw-testing.demo-by-discourse.com"
  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: "https://api.openai.com/v1/chat/completions"
  ai_openai_gpt35_16k_url: "https://api.openai.com/v1/chat/completions"
  ai_openai_gpt4_url: "https://api.openai.com/v1/chat/completions"
  ai_openai_gpt4_32k_url: "https://api.openai.com/v1/chat/completions"
  ai_openai_embeddings_url: "https://api.openai.com/v1/embeddings"
  ai_openai_api_key:
    default: ""
    secret: true
  ai_anthropic_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:
      - "stable-diffusion-xl-1024-v1-0"
      - "stable-diffusion-768-v2-1"
      - "stable-diffusion-v1-5"
  ai_hugging_face_api_url:
    default: ""
  ai_hugging_face_api_key:
    default: ""
    secret: true
  ai_hugging_face_token_limit:
    default: 4096
  ai_hugging_face_model_display_name:
    default: ""

  ai_google_custom_search_api_key:
    default: ""
    secret: true
  ai_google_custom_search_cx:
    default: ""

  composer_ai_helper_enabled:
    default: false
    client: true
  ai_helper_allowed_groups:
    client: true
    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: gpt-3.5-turbo
    type: enum
    choices:
      - gpt-3.5-turbo
      - gpt-4
      - claude-2
      - stable-beluga-2

  ai_embeddings_enabled:
    default: false
    client: true
  ai_embeddings_discourse_service_api_endpoint: ""
  ai_embeddings_discourse_service_api_key:
    default: ""
    secret: true
  ai_embeddings_model:
    type: enum
    list_type: compact
    default: "all-mpnet-base-v2"
    allow_any: false
    choices:
     - all-mpnet-base-v2
     - text-embedding-ada-002
     - multilingual-e5-large
  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_pg_connection_string:
    default: ""
    hidden: true
  ai_embeddings_semantic_search_enabled:
    default: false
    client: true
  ai_embeddings_semantic_search_hyde_model:
    default: "gpt-3.5-turbo"
    type: enum
    allow_any: false
    choices:
      - Llama2-*-chat-hf
      - claude-instant-1   
      - claude-2           
      - gpt-3.5-turbo
      - gpt-4              
      - StableBeluga2      
      - Upstage-Llama-2-*-instruct-v2

  ai_summarization_discourse_service_api_endpoint: ""
  ai_summarization_discourse_service_api_key:
    default: ""
    secret: true

  ai_bot_enabled:
    default: false
    client: true
  ai_bot_enable_chat_warning:
    default: false
    client: true
  ai_bot_allowed_groups:
    type: group_list
    list_type: compact
    default: "3|14" # 3: @staff, 14: @trust_level_4
  # Adding a new bot? Make sure to create a user for it on the seed file and update translations.
  ai_bot_enabled_chat_bots:
    type: list
    default: "gpt-3.5-turbo"
    client: true
    choices:
     - gpt-3.5-turbo
     - gpt-4
     - claude-2
  ai_bot_enabled_chat_commands:
    type: list
    default: "categories|google|image|search|tags|time|read"
    client: true
    choices:
     - categories
     - google
     - image
     - search
     - summarize
     - read
     - tags
     - time
  ai_bot_enabled_personas:
    type: list
    default: "general|artist|sql_helper|settings_explorer|researcher"
    choices:
      - general
      - artist
      - sql_helper
      - settings_explorer
      - researcher
  ai_bot_add_to_header:
    default: true
    client: true
