53 lines
2.9 KiB
Markdown
53 lines
2.9 KiB
Markdown
# AI Prompt Settings and Task Registry Plan
|
|
|
|
## Summary
|
|
|
|
Add an AI prompt settings tab under the operations AI settings page. Operators can select a business AI task from a dropdown, edit its prompt, save the override, and reset it back to the shipped default. Runtime LLM calls must resolve prompts through a task registry instead of embedding large prompt blocks at each call site.
|
|
|
|
Default prompts are shipped as versioned resource data, not scattered business-code literals. Business services reference stable task keys, and the runtime resolves the effective prompt from the database override first, then the shipped default resource.
|
|
|
|
## Key Changes
|
|
|
|
- Add a backend task prompt registry with stable keys, labels, groups, versions, default system prompts, and default task prompts.
|
|
- Store operator overrides in the existing `SystemSetting` table under an `ai_prompts` category. Store only custom overrides; defaults remain in the versioned prompt resource.
|
|
- Add settings APIs:
|
|
- `GET /api/v1/settings/ai-prompts`
|
|
- `PUT /api/v1/settings/ai-prompts/{task_key}`
|
|
- `POST /api/v1/settings/ai-prompts/{task_key}/reset`
|
|
- Migrate business LLM entrypoints to resolve prompts by task key. `aiprovider` remains a pure model adapter and does not inject business prompts.
|
|
- Add a “提示词” tab to `/ai`. The tab shows a grouped task dropdown, current/default prompt status, editable prompt fields, save, and reset-to-default controls.
|
|
|
|
## Initial Tasks
|
|
|
|
- `earth.news.enrich` — Earth news localization and location enrichment.
|
|
- `alerts.brief` — system alert AI brief.
|
|
- `alerts.situational.brief` — situational alert AI brief.
|
|
- `bgp.brief` — BGP AI brief.
|
|
- `location.factcheck.normalize` — location factcheck normalization.
|
|
- `location.factcheck.resolve` — location factcheck fallback resolution.
|
|
- `datasource.mapping` — datasource mapping DSL generation.
|
|
- `credential.guide` — credential guide generation.
|
|
- `ai.connection_test` — AI provider connection test.
|
|
|
|
Playground and public free-form analyze endpoints stay caller-controlled and are not shown in the prompt settings dropdown.
|
|
|
|
## Test Plan
|
|
|
|
- Backend uses `uv`:
|
|
- `uv run pytest tests/test_settings_ai_prompts.py`
|
|
- `uv run pytest tests/test_earth_news.py`
|
|
- `uv run pytest tests/test_api.py`
|
|
- Frontend uses `bun`:
|
|
- `cd frontend && bun run build`
|
|
- Manual checks:
|
|
- Prompt dropdown switches task content correctly.
|
|
- Save persists an override and runtime calls use it.
|
|
- Reset deletes the override and restores the shipped default.
|
|
- Alert prompts do not leak into news, BGP, datasource, or location tasks.
|
|
|
|
## Assumptions
|
|
|
|
- This iteration does not add prompt history, approval workflows, A/B testing, or per-user prompt variants.
|
|
- Strict JSON tasks may fail validation if an operator edits away the output contract; existing task-specific failure and retry behavior remains responsible for recovery.
|
|
- The UI stays Chinese-only in this iteration.
|