MCPcopy Create free account
hub / github.com/Seanium/ChatMap / ModelSettings

Function ModelSettings

components/model-settings.tsx:79–454  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

77}
78
79export default function ModelSettings() {
80 const [settings, setSettings] = useState<ModelSettings>(DEFAULT_SETTINGS)
81 const [isOpen, setIsOpen] = useState(false)
82 const [showApiKey, setShowApiKey] = useState(false)
83 const { toast } = useToast()
84
85 // 获取当前提供商的设置
86 const currentProviderSettings = settings.providerSettings[settings.provider] || {
87 baseURL: "",
88 model: "",
89 apiKey: "",
90 }
91
92 // 在组件挂载时从 localStorage 加载设置
93 useEffect(() => {
94 try {
95 const storedSettings = localStorage.getItem("model_settings")
96 if (storedSettings) {
97 const parsedSettings = JSON.parse(storedSettings)
98
99 // 如果是旧格式的设置,转换为新格式
100 if (!parsedSettings.providerSettings) {
101 // 创建新的设置对象
102 const convertedSettings: ModelSettings = {
103 provider: parsedSettings.provider || DEFAULT_SETTINGS.provider,
104 temperature:
105 parsedSettings.temperature !== undefined ? parsedSettings.temperature : DEFAULT_SETTINGS.temperature,
106 providerSettings: { ...DEFAULT_SETTINGS.providerSettings },
107 }
108
109 // 将旧的数据迁移到当前提供商
110 if (parsedSettings.provider) {
111 convertedSettings.providerSettings[parsedSettings.provider] = {
112 baseURL: parsedSettings.baseURL || "",
113 model: parsedSettings.model || "",
114 apiKey: parsedSettings.apiKey || "",
115 }
116 }
117
118 setSettings(convertedSettings)
119 } else {
120 // 已经是新格式
121 setSettings(parsedSettings)
122 }
123 } else {
124 // 如果有旧版的 API 密钥,则迁移它
125 const legacyApiKey = localStorage.getItem("openai_api_key")
126 if (legacyApiKey) {
127 const newSettings = { ...DEFAULT_SETTINGS }
128 newSettings.providerSettings.openai.apiKey = legacyApiKey
129 setSettings(newSettings)
130 } else {
131 // 如果没有设置,打开设置对话框
132 setIsOpen(true)
133 }
134 }
135 } catch (error) {
136 console.error("加载模型设置时出错:", error)

Callers

nothing calls this directly

Calls 3

useToastFunction · 0.90

Tested by

no test coverage detected