Add user_prompt to WebUI
This commit is contained in:
@@ -78,6 +78,11 @@ class QueryRequest(BaseModel):
|
|||||||
description="Number of complete conversation turns (user-assistant pairs) to consider in the response context.",
|
description="Number of complete conversation turns (user-assistant pairs) to consider in the response context.",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
user_prompt: Optional[str] = Field(
|
||||||
|
default=None,
|
||||||
|
description="User-provided prompt for the query. If provided, this will be used instead of the default value from prompt template.",
|
||||||
|
)
|
||||||
|
|
||||||
@field_validator("query", mode="after")
|
@field_validator("query", mode="after")
|
||||||
@classmethod
|
@classmethod
|
||||||
def query_strip_after(cls, query: str) -> str:
|
def query_strip_after(cls, query: str) -> str:
|
||||||
|
@@ -101,6 +101,8 @@ export type QueryRequest = {
|
|||||||
conversation_history?: Message[]
|
conversation_history?: Message[]
|
||||||
/** Number of complete conversation turns (user-assistant pairs) to consider in the response context. */
|
/** Number of complete conversation turns (user-assistant pairs) to consider in the response context. */
|
||||||
history_turns?: number
|
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 = {
|
export type QueryResponse = {
|
||||||
|
@@ -3,6 +3,7 @@ import { QueryMode, QueryRequest } from '@/api/lightrag'
|
|||||||
// Removed unused import for Text component
|
// Removed unused import for Text component
|
||||||
import Checkbox from '@/components/ui/Checkbox'
|
import Checkbox from '@/components/ui/Checkbox'
|
||||||
import NumberInput from '@/components/ui/NumberInput'
|
import NumberInput from '@/components/ui/NumberInput'
|
||||||
|
import Input from '@/components/ui/Input'
|
||||||
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/Card'
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/Card'
|
||||||
import {
|
import {
|
||||||
Select,
|
Select,
|
||||||
@@ -241,6 +242,31 @@ export default function QuerySettings() {
|
|||||||
</div>
|
</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 */}
|
{/* Toggle Options */}
|
||||||
<>
|
<>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
|
@@ -350,7 +350,10 @@
|
|||||||
"onlyNeedPrompt": "تحتاج فقط إلى المطالبة",
|
"onlyNeedPrompt": "تحتاج فقط إلى المطالبة",
|
||||||
"onlyNeedPromptTooltip": "إذا كان صحيحًا، يتم إرجاع المطالبة المولدة فقط دون إنتاج رد",
|
"onlyNeedPromptTooltip": "إذا كان صحيحًا، يتم إرجاع المطالبة المولدة فقط دون إنتاج رد",
|
||||||
"streamResponse": "تدفق الرد",
|
"streamResponse": "تدفق الرد",
|
||||||
"streamResponseTooltip": "إذا كان صحيحًا، يتيح إخراج التدفق للردود في الوقت الفعلي"
|
"streamResponseTooltip": "إذا كان صحيحًا، يتيح إخراج التدفق للردود في الوقت الفعلي",
|
||||||
|
"userPrompt": "مطالبة مخصصة",
|
||||||
|
"userPromptTooltip": "تقديم متطلبات استجابة إضافية إلى نموذج اللغة الكبير (غير متعلقة بمحتوى الاستعلام، فقط لمعالجة المخرجات).",
|
||||||
|
"userPromptPlaceholder": "أدخل مطالبة مخصصة (اختياري)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"apiSite": {
|
"apiSite": {
|
||||||
|
@@ -350,7 +350,10 @@
|
|||||||
"onlyNeedPrompt": "Only Need Prompt",
|
"onlyNeedPrompt": "Only Need Prompt",
|
||||||
"onlyNeedPromptTooltip": "If True, only returns the generated prompt without producing a response",
|
"onlyNeedPromptTooltip": "If True, only returns the generated prompt without producing a response",
|
||||||
"streamResponse": "Stream 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": {
|
"apiSite": {
|
||||||
|
@@ -350,7 +350,10 @@
|
|||||||
"onlyNeedPrompt": "Besoin uniquement de l'invite",
|
"onlyNeedPrompt": "Besoin uniquement de l'invite",
|
||||||
"onlyNeedPromptTooltip": "Si vrai, ne renvoie que l'invite générée sans produire de réponse",
|
"onlyNeedPromptTooltip": "Si vrai, ne renvoie que l'invite générée sans produire de réponse",
|
||||||
"streamResponse": "Réponse en flux",
|
"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": {
|
"apiSite": {
|
||||||
|
@@ -350,7 +350,10 @@
|
|||||||
"onlyNeedPrompt": "仅需提示",
|
"onlyNeedPrompt": "仅需提示",
|
||||||
"onlyNeedPromptTooltip": "如果为True,仅返回生成的提示而不产生响应",
|
"onlyNeedPromptTooltip": "如果为True,仅返回生成的提示而不产生响应",
|
||||||
"streamResponse": "流式响应",
|
"streamResponse": "流式响应",
|
||||||
"streamResponseTooltip": "如果为True,启用实时流式输出响应"
|
"streamResponseTooltip": "如果为True,启用实时流式输出响应",
|
||||||
|
"userPrompt": "用户提示词",
|
||||||
|
"userPromptTooltip": "向LLM提供额外的响应要求(与查询内容无关,仅用于处理输出)。",
|
||||||
|
"userPromptPlaceholder": "输入自定义提示词(可选)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"apiSite": {
|
"apiSite": {
|
||||||
|
@@ -115,7 +115,8 @@ const useSettingsStoreBase = create<SettingsState>()(
|
|||||||
stream: true,
|
stream: true,
|
||||||
history_turns: 3,
|
history_turns: 3,
|
||||||
hl_keywords: [],
|
hl_keywords: [],
|
||||||
ll_keywords: []
|
ll_keywords: [],
|
||||||
|
user_prompt: ''
|
||||||
},
|
},
|
||||||
|
|
||||||
setTheme: (theme: Theme) => set({ theme }),
|
setTheme: (theme: Theme) => set({ theme }),
|
||||||
@@ -167,7 +168,7 @@ const useSettingsStoreBase = create<SettingsState>()(
|
|||||||
{
|
{
|
||||||
name: 'settings-storage',
|
name: 'settings-storage',
|
||||||
storage: createJSONStorage(() => localStorage),
|
storage: createJSONStorage(() => localStorage),
|
||||||
version: 12,
|
version: 13,
|
||||||
migrate: (state: any, version: number) => {
|
migrate: (state: any, version: number) => {
|
||||||
if (version < 2) {
|
if (version < 2) {
|
||||||
state.showEdgeLabel = false
|
state.showEdgeLabel = false
|
||||||
@@ -225,6 +226,12 @@ const useSettingsStoreBase = create<SettingsState>()(
|
|||||||
// Clear retrieval history to avoid compatibility issues with MessageWithError type
|
// Clear retrieval history to avoid compatibility issues with MessageWithError type
|
||||||
state.retrievalHistory = []
|
state.retrievalHistory = []
|
||||||
}
|
}
|
||||||
|
if (version < 13) {
|
||||||
|
// Add user_prompt field for older versions
|
||||||
|
if (state.querySettings) {
|
||||||
|
state.querySettings.user_prompt = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
return state
|
return state
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user