import { useCallback } from 'react' import { QueryMode, QueryRequest } from '@/api/lightrag' // Removed unused import for Text component import Checkbox from '@/components/ui/Checkbox' import Input from '@/components/ui/Input' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/Card' import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/Select' import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/Tooltip' import { useSettingsStore } from '@/stores/settings' import { useTranslation } from 'react-i18next' export default function QuerySettings() { const { t } = useTranslation() const querySettings = useSettingsStore((state) => state.querySettings) const handleChange = useCallback((key: keyof QueryRequest, value: any) => { useSettingsStore.getState().updateQuerySettings({ [key]: value }) }, []) return ( {t('retrievePanel.querySettings.parametersTitle')} {t('retrievePanel.querySettings.parametersDescription')}
{/* Query Mode */} <>

{t('retrievePanel.querySettings.queryModeTooltip')}

{/* Response Format */} <>

{t('retrievePanel.querySettings.responseFormatTooltip')}

{/* Top K */} <>

{t('retrievePanel.querySettings.topKTooltip')}

{ const value = e.target.value handleChange('top_k', value === '' ? '' : parseInt(value) || 0) }} onBlur={(e) => { const value = e.target.value if (value === '' || isNaN(parseInt(value))) { handleChange('top_k', 1) } }} min={1} placeholder={t('retrievePanel.querySettings.topKPlaceholder')} />
{/* Chunk Top K */} <>

{t('retrievePanel.querySettings.chunkTopKTooltip')}

{ const value = e.target.value handleChange('chunk_top_k', value === '' ? '' : parseInt(value) || 0) }} onBlur={(e) => { const value = e.target.value if (value === '' || isNaN(parseInt(value))) { handleChange('chunk_top_k', 1) } }} min={1} placeholder={t('retrievePanel.querySettings.chunkTopKPlaceholder')} />
{/* Max Entity Tokens */} <>

{t('retrievePanel.querySettings.maxEntityTokensTooltip')}

{ const value = e.target.value handleChange('max_entity_tokens', value === '' ? '' : parseInt(value) || 0) }} onBlur={(e) => { const value = e.target.value if (value === '' || isNaN(parseInt(value))) { handleChange('max_entity_tokens', 1000) } }} min={1} placeholder={t('retrievePanel.querySettings.maxEntityTokensPlaceholder')} />
{/* Max Relation Tokens */} <>

{t('retrievePanel.querySettings.maxRelationTokensTooltip')}

{ const value = e.target.value handleChange('max_relation_tokens', value === '' ? '' : parseInt(value) || 0) }} onBlur={(e) => { const value = e.target.value if (value === '' || isNaN(parseInt(value))) { handleChange('max_relation_tokens', 1000) } }} min={1} placeholder={t('retrievePanel.querySettings.maxRelationTokensPlaceholder')} />
{/* Max Total Tokens */} <>

{t('retrievePanel.querySettings.maxTotalTokensTooltip')}

{ const value = e.target.value handleChange('max_total_tokens', value === '' ? '' : parseInt(value) || 0) }} onBlur={(e) => { const value = e.target.value if (value === '' || isNaN(parseInt(value))) { handleChange('max_total_tokens', 1000) } }} min={1} placeholder={t('retrievePanel.querySettings.maxTotalTokensPlaceholder')} />
{/* History Turns */} <>

{t('retrievePanel.querySettings.historyTurnsTooltip')}

{ const value = e.target.value handleChange('history_turns', value === '' ? '' : parseInt(value) || 0) }} onBlur={(e) => { const value = e.target.value if (value === '' || isNaN(parseInt(value))) { handleChange('history_turns', 0) } }} min={0} placeholder={t('retrievePanel.querySettings.historyTurnsPlaceholder')} className="h-9" />
{/* User Prompt */} <>

{t('retrievePanel.querySettings.userPromptTooltip')}

handleChange('user_prompt', e.target.value)} placeholder={t('retrievePanel.querySettings.userPromptPlaceholder')} className="h-9" />
{/* Toggle Options */} <>

{t('retrievePanel.querySettings.enableRerankTooltip')}

handleChange('enable_rerank', checked)} />

{t('retrievePanel.querySettings.onlyNeedContextTooltip')}

handleChange('only_need_context', checked)} />

{t('retrievePanel.querySettings.onlyNeedPromptTooltip')}

handleChange('only_need_prompt', checked)} />

{t('retrievePanel.querySettings.streamResponseTooltip')}

handleChange('stream', checked)} />
) }