"use client"; import { Settings2 } from "lucide-react"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import type { KnowledgeRetrievalConfig } from "@/lib/api"; export const DEFAULT_KNOWLEDGE_RETRIEVAL_CONFIG: KnowledgeRetrievalConfig = { mode: "automatic", topN: 5, scoreThreshold: 0, }; export function KnowledgeRetrievalConfigDialog({ disabled, value, onChange, }: { disabled: boolean; value: KnowledgeRetrievalConfig; onChange: (config: KnowledgeRetrievalConfig) => void; }) { const [open, setOpen] = useState(false); const [draft, setDraft] = useState(value); const [error, setError] = useState(null); function openDialog() { setDraft(value); setError(null); setOpen(true); } function saveDraft() { if (draft.topN === 0 || draft.topN < -1 || !Number.isInteger(draft.topN)) { setError("Top N 必须为 -1 或大于 0 的整数"); return; } if (draft.scoreThreshold < 0 || draft.scoreThreshold > 1) { setError("最低相关度必须在 0 到 1 之间"); return; } onChange(draft); setOpen(false); } return ( <> 知识库高级配置 设置检索触发方式、返回数量和相关度过滤条件。
检索方式

{draft.mode === "automatic" ? "每轮用户提问后自动检索,响应行为更稳定。" : "由大模型判断是否调用知识库,依赖模型的工具调用能力。"}

{error &&

{error}

}
); }