Add user_prompt to WebUI

This commit is contained in:
yangdx
2025-05-08 04:15:21 +08:00
parent a359414931
commit d914de441e
8 changed files with 58 additions and 6 deletions

View File

@@ -101,6 +101,8 @@ export type QueryRequest = {
conversation_history?: Message[]
/** Number of complete conversation turns (user-assistant pairs) to consider in the response context. */
history_turns?: number
/** User-provided prompt for the query. If provided, this will be used instead of the default value from prompt template. */
user_prompt?: string
}
export type QueryResponse = {

View File

@@ -3,6 +3,7 @@ import { QueryMode, QueryRequest } from '@/api/lightrag'
// Removed unused import for Text component
import Checkbox from '@/components/ui/Checkbox'
import NumberInput from '@/components/ui/NumberInput'
import Input from '@/components/ui/Input'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/Card'
import {
Select,
@@ -241,6 +242,31 @@ export default function QuerySettings() {
</div>
</>
{/* User Prompt */}
<>
<TooltipProvider>
<Tooltip>
<TooltipTrigger asChild>
<label htmlFor="user_prompt" className="ml-1 cursor-help">
{t('retrievePanel.querySettings.userPrompt')}
</label>
</TooltipTrigger>
<TooltipContent side="left">
<p>{t('retrievePanel.querySettings.userPromptTooltip')}</p>
</TooltipContent>
</Tooltip>
</TooltipProvider>
<div>
<Input
id="user_prompt"
value={querySettings.user_prompt}
onChange={(e) => handleChange('user_prompt', e.target.value)}
placeholder={t('retrievePanel.querySettings.userPromptPlaceholder')}
className="h-9"
/>
</div>
</>
{/* Toggle Options */}
<>
<div className="flex items-center gap-2">

View File

@@ -350,7 +350,10 @@
"onlyNeedPrompt": "تحتاج فقط إلى المطالبة",
"onlyNeedPromptTooltip": "إذا كان صحيحًا، يتم إرجاع المطالبة المولدة فقط دون إنتاج رد",
"streamResponse": "تدفق الرد",
"streamResponseTooltip": "إذا كان صحيحًا، يتيح إخراج التدفق للردود في الوقت الفعلي"
"streamResponseTooltip": "إذا كان صحيحًا، يتيح إخراج التدفق للردود في الوقت الفعلي",
"userPrompt": "مطالبة مخصصة",
"userPromptTooltip": "تقديم متطلبات استجابة إضافية إلى نموذج اللغة الكبير (غير متعلقة بمحتوى الاستعلام، فقط لمعالجة المخرجات).",
"userPromptPlaceholder": "أدخل مطالبة مخصصة (اختياري)"
}
},
"apiSite": {

View File

@@ -350,7 +350,10 @@
"onlyNeedPrompt": "Only Need Prompt",
"onlyNeedPromptTooltip": "If True, only returns the generated prompt without producing a response",
"streamResponse": "Stream Response",
"streamResponseTooltip": "If True, enables streaming output for real-time responses"
"streamResponseTooltip": "If True, enables streaming output for real-time responses",
"userPrompt": "User Prompt",
"userPromptTooltip": "Provide additional response requirements to the LLM (unrelated to query content, only for output processing).",
"userPromptPlaceholder": "Enter custom prompt (optional)"
}
},
"apiSite": {

View File

@@ -350,7 +350,10 @@
"onlyNeedPrompt": "Besoin uniquement de l'invite",
"onlyNeedPromptTooltip": "Si vrai, ne renvoie que l'invite générée sans produire de réponse",
"streamResponse": "Réponse en flux",
"streamResponseTooltip": "Si vrai, active la sortie en flux pour des réponses en temps réel"
"streamResponseTooltip": "Si vrai, active la sortie en flux pour des réponses en temps réel",
"userPrompt": "Invite personnalisée",
"userPromptTooltip": "Fournir des exigences de réponse supplémentaires au LLM (sans rapport avec le contenu de la requête, uniquement pour le traitement de sortie).",
"userPromptPlaceholder": "Entrez une invite personnalisée (facultatif)"
}
},
"apiSite": {

View File

@@ -350,7 +350,10 @@
"onlyNeedPrompt": "仅需提示",
"onlyNeedPromptTooltip": "如果为True仅返回生成的提示而不产生响应",
"streamResponse": "流式响应",
"streamResponseTooltip": "如果为True启用实时流式输出响应"
"streamResponseTooltip": "如果为True启用实时流式输出响应",
"userPrompt": "用户提示词",
"userPromptTooltip": "向LLM提供额外的响应要求与查询内容无关仅用于处理输出。",
"userPromptPlaceholder": "输入自定义提示词(可选)"
}
},
"apiSite": {

View File

@@ -115,7 +115,8 @@ const useSettingsStoreBase = create<SettingsState>()(
stream: true,
history_turns: 3,
hl_keywords: [],
ll_keywords: []
ll_keywords: [],
user_prompt: ''
},
setTheme: (theme: Theme) => set({ theme }),
@@ -167,7 +168,7 @@ const useSettingsStoreBase = create<SettingsState>()(
{
name: 'settings-storage',
storage: createJSONStorage(() => localStorage),
version: 12,
version: 13,
migrate: (state: any, version: number) => {
if (version < 2) {
state.showEdgeLabel = false
@@ -225,6 +226,12 @@ const useSettingsStoreBase = create<SettingsState>()(
// Clear retrieval history to avoid compatibility issues with MessageWithError type
state.retrievalHistory = []
}
if (version < 13) {
// Add user_prompt field for older versions
if (state.querySettings) {
state.querySettings.user_prompt = ''
}
}
return state
}
}