apache / apache/answer

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

Ouverte Adaptée aux débutants
#1,608 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Go
Étoiles
15.7k
Forks
1.4k
Merge moyen
3 j 8 h
PR mergées (30 j)
7

Description

### 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

```go
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.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez dans ui/src/pages/Admin/AiSettings/index.tsx et examinez la payload construite pour enregistrer les paramètres AI, puis comparez-la au champ prompt_config accepté par le backend. Ajoutez des champs de prompt modifiables et assurez-vous que le prompt existant est inclus lors de l’enregistrement des autres paramètres. Vérifiez qu’un prompt personnalisé reste inchangé après l’enregistrement du formulaire Admin → AI Settings.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
react, typescript
Domaine
frontend
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
Active
Clarté
Clairement spécifiée
Accessibilité débutants
84/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.