Skip to content

Admin AI settings silently reset the assistant prompt, which cannot be edited in the UI #1608

Description

@Andy-Sverdlov-LucaNet

Describe the bug

The AI assistant's prompt (prompt_config) can be stored and returned by the API, but there is no way to edit it, and saving AI settings silently overwrites whatever is stored with the built-in default.

SaveSiteAI substitutes the defaults whenever a request omits prompt_config:

https://github.com/apache/answer/blob/main/internal/service/siteinfo/siteinfo_service.go#L384-L389

if req.PromptConfig == nil {
    req.PromptConfig = &schema.AIPromptConfig{
        ZhCN: constant.DefaultAIPromptConfigZhCN,
        EnUS: constant.DefaultAIPromptConfigEnUS,
    }
}

The admin form in ui/src/pages/Admin/AiSettings/index.tsx builds its payload from enabled, chosen_provider and ai_providers only, so it never sends prompt_config. Every save from that page therefore resets the prompt.

Combined, this means:

  1. The prompt cannot be customised through the UI at all — there is no field for it.
  2. A prompt set directly through the API survives only until somebody saves the AI settings page, then reverts silently with no warning and no indication in the UI that anything changed.

The backend side is fully implemented: SiteAIReq accepts prompt_config, SaveSiteAI persists it, GetSiteAI returns it, and getPromptByLanguage reads it and falls back to the constant when empty. Only the form is missing.

Expected behavior

The prompt is editable in Admin → AI Settings, and saving other AI settings does not discard it.

Steps to reproduce

  1. Set a custom en_us prompt via PUT /answer/admin/api/ai-config with a prompt_config object.
  2. Confirm it is stored (GET /answer/admin/api/ai-config).
  3. In Admin → AI Settings, change nothing of substance and press Save.
  4. Read the config again — the prompt is back to DefaultAIPromptConfigEnUS.

Version

Reproduced on main (3b9f137) and on 2.0.2.

Additional context

This surfaced while running the assistant against a vector-search plugin. semantic_search returns a link for every result, but the default prompt never asks the model to cite sources, so whether an answer links the thread it came from is left to the model. Being able to ask for citations in the prompt is the natural fix — which needs the prompt to be editable and to stay edited.

Happy to send a PR: the change is frontend-only, since the backend already supports the field.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions