mirror of
https://github.com/hicccc77/WeFlow.git
synced 2026-04-22 15:09:04 +00:00
Merge pull request #776 from Jasonzhu1207/main
feat(ai): add configurable max_tokens in shared AI settings
This commit is contained in:
@@ -267,6 +267,7 @@ function SettingsPage({ onClose }: SettingsPageProps = {}) {
|
||||
const [aiModelApiBaseUrl, setAiModelApiBaseUrl] = useState('')
|
||||
const [aiModelApiKey, setAiModelApiKey] = useState('')
|
||||
const [aiModelApiModel, setAiModelApiModel] = useState('gpt-4o-mini')
|
||||
const [aiModelApiMaxTokens, setAiModelApiMaxTokens] = useState(200)
|
||||
const [aiInsightSilenceDays, setAiInsightSilenceDays] = useState(3)
|
||||
const [aiInsightAllowContext, setAiInsightAllowContext] = useState(false)
|
||||
const [isTestingInsight, setIsTestingInsight] = useState(false)
|
||||
@@ -527,6 +528,7 @@ function SettingsPage({ onClose }: SettingsPageProps = {}) {
|
||||
const savedAiModelApiBaseUrl = await configService.getAiModelApiBaseUrl()
|
||||
const savedAiModelApiKey = await configService.getAiModelApiKey()
|
||||
const savedAiModelApiModel = await configService.getAiModelApiModel()
|
||||
const savedAiModelApiMaxTokens = await configService.getAiModelApiMaxTokens()
|
||||
const savedAiInsightSilenceDays = await configService.getAiInsightSilenceDays()
|
||||
const savedAiInsightAllowContext = await configService.getAiInsightAllowContext()
|
||||
const savedAiInsightWhitelistEnabled = await configService.getAiInsightWhitelistEnabled()
|
||||
@@ -550,6 +552,7 @@ function SettingsPage({ onClose }: SettingsPageProps = {}) {
|
||||
setAiModelApiBaseUrl(savedAiModelApiBaseUrl)
|
||||
setAiModelApiKey(savedAiModelApiKey)
|
||||
setAiModelApiModel(savedAiModelApiModel)
|
||||
setAiModelApiMaxTokens(savedAiModelApiMaxTokens)
|
||||
setAiInsightSilenceDays(savedAiInsightSilenceDays)
|
||||
setAiInsightAllowContext(savedAiInsightAllowContext)
|
||||
setAiInsightWhitelistEnabled(savedAiInsightWhitelistEnabled)
|
||||
@@ -2841,6 +2844,28 @@ function SettingsPage({ onClose }: SettingsPageProps = {}) {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="form-group">
|
||||
<label>通用 Max Tokens</label>
|
||||
<span className="form-hint">
|
||||
设置单次请求的最大输出 token 数量,见解与足迹共享该值。默认 <code>200</code>。
|
||||
</span>
|
||||
<input
|
||||
type="number"
|
||||
className="field-input"
|
||||
value={aiModelApiMaxTokens}
|
||||
min={1}
|
||||
max={65535}
|
||||
step={1}
|
||||
onChange={(e) => {
|
||||
const parsed = parseInt(e.target.value, 10)
|
||||
const val = Math.min(65535, Math.max(1, Number.isFinite(parsed) ? parsed : 200))
|
||||
setAiModelApiMaxTokens(val)
|
||||
scheduleConfigSave('aiModelApiMaxTokens', () => configService.setAiModelApiMaxTokens(val))
|
||||
}}
|
||||
style={{ width: 260 }}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="form-group">
|
||||
<label>连接测试</label>
|
||||
<span className="form-hint">
|
||||
|
||||
@@ -89,6 +89,7 @@ export const CONFIG_KEYS = {
|
||||
AI_MODEL_API_BASE_URL: 'aiModelApiBaseUrl',
|
||||
AI_MODEL_API_KEY: 'aiModelApiKey',
|
||||
AI_MODEL_API_MODEL: 'aiModelApiModel',
|
||||
AI_MODEL_API_MAX_TOKENS: 'aiModelApiMaxTokens',
|
||||
AI_INSIGHT_ENABLED: 'aiInsightEnabled',
|
||||
AI_INSIGHT_API_BASE_URL: 'aiInsightApiBaseUrl',
|
||||
AI_INSIGHT_API_KEY: 'aiInsightApiKey',
|
||||
@@ -1838,6 +1839,21 @@ export async function setAiModelApiModel(model: string): Promise<void> {
|
||||
await config.set(CONFIG_KEYS.AI_MODEL_API_MODEL, model)
|
||||
}
|
||||
|
||||
export async function getAiModelApiMaxTokens(): Promise<number> {
|
||||
const value = await config.get(CONFIG_KEYS.AI_MODEL_API_MAX_TOKENS)
|
||||
if (typeof value === 'number' && Number.isFinite(value) && value > 0) {
|
||||
return Math.floor(value)
|
||||
}
|
||||
return 200
|
||||
}
|
||||
|
||||
export async function setAiModelApiMaxTokens(maxTokens: number): Promise<void> {
|
||||
const normalized = Number.isFinite(maxTokens)
|
||||
? Math.min(65535, Math.max(1, Math.floor(maxTokens)))
|
||||
: 200
|
||||
await config.set(CONFIG_KEYS.AI_MODEL_API_MAX_TOKENS, normalized)
|
||||
}
|
||||
|
||||
export async function getAiInsightEnabled(): Promise<boolean> {
|
||||
const value = await config.get(CONFIG_KEYS.AI_INSIGHT_ENABLED)
|
||||
return value === true
|
||||
|
||||
Reference in New Issue
Block a user