diff --git a/electron/main/ai/llm/index.ts b/electron/main/ai/llm/index.ts index 3b62184..fcf8e1e 100644 --- a/electron/main/ai/llm/index.ts +++ b/electron/main/ai/llm/index.ts @@ -7,20 +7,12 @@ import * as fs from 'fs' import * as path from 'path' import { randomUUID } from 'crypto' import { getAiDataDir } from '../../paths' -import type { - LLMProvider, - ProviderInfo, - AIServiceConfig, - AIConfigStore, -} from './types' +import type { LLMProvider, ProviderInfo, AIServiceConfig, AIConfigStore } from './types' import { MAX_CONFIG_COUNT } from './types' import { aiLogger } from '../logger' import { encryptApiKey, decryptApiKey, isEncrypted } from './crypto' import { t } from '../../i18n' -import { - completeSimple, - type Model as PiModel, -} from '@mariozechner/pi-ai' +import { completeSimple, type Model as PiModel } from '@mariozechner/pi-ai' // 导出类型 export * from './types' @@ -456,9 +448,7 @@ export function getProviderInfo(provider: LLMProvider): ProviderInfo | null { /** * 将 AIServiceConfig 转换为 pi-ai Model 对象 */ -export function buildPiModel( - config: AIServiceConfig -): PiModel<'openai-completions'> | PiModel<'google-generative-ai'> { +export function buildPiModel(config: AIServiceConfig): PiModel<'openai-completions'> | PiModel<'google-generative-ai'> { const providerInfo = getProviderInfo(config.provider) const baseUrl = config.baseUrl || providerInfo?.defaultBaseUrl || '' const modelId = config.model || providerInfo?.models?.[0]?.id || '' @@ -523,13 +513,17 @@ export async function validateApiKey( const timeout = setTimeout(() => abortController.abort(), 15000) try { - await completeSimple(piModel, { - messages: [{ role: 'user', content: 'Hi', timestamp: Date.now() }], - }, { - apiKey, - maxTokens: 1, - signal: abortController.signal, - }) + await completeSimple( + piModel, + { + messages: [{ role: 'user', content: 'Hi', timestamp: Date.now() }], + }, + { + apiKey, + maxTokens: 1, + signal: abortController.signal, + } + ) return { success: true } } finally { clearTimeout(timeout) diff --git a/electron/main/ai/rag/pipeline/semantic.ts b/electron/main/ai/rag/pipeline/semantic.ts index 14c656b..bcf7784 100644 --- a/electron/main/ai/rag/pipeline/semantic.ts +++ b/electron/main/ai/rag/pipeline/semantic.ts @@ -40,15 +40,19 @@ async function rewriteQuery(query: string, abortSignal?: AbortSignal): Promise item.type === 'text') diff --git a/electron/main/ai/summary/index.ts b/electron/main/ai/summary/index.ts index 51d191a..1d0ac01 100644 --- a/electron/main/ai/summary/index.ts +++ b/electron/main/ai/summary/index.ts @@ -28,14 +28,18 @@ async function llmComplete( const piModel = buildPiModel(activeConfig) const now = Date.now() - const result = await completeSimple(piModel, { - systemPrompt, - messages: [{ role: 'user', content: userPrompt, timestamp: now }], - }, { - apiKey: activeConfig.apiKey, - temperature: options?.temperature, - maxTokens: options?.maxTokens, - }) + const result = await completeSimple( + piModel, + { + systemPrompt, + messages: [{ role: 'user', content: userPrompt, timestamp: now }], + }, + { + apiKey: activeConfig.apiKey, + temperature: options?.temperature, + maxTokens: options?.maxTokens, + } + ) return result.content .filter((item): item is PiTextContent => item.type === 'text') @@ -438,11 +442,10 @@ export async function generateSessionSummary( * 直接生成摘要(适用于短会话) */ async function generateDirectSummary(content: string, lengthLimit: number, locale: string): Promise { - const result = await llmComplete( - t('summary.systemPromptDirect'), - buildSummaryPrompt(content, lengthLimit, locale), - { temperature: 0.3, maxTokens: 300 } - ) + const result = await llmComplete(t('summary.systemPromptDirect'), buildSummaryPrompt(content, lengthLimit, locale), { + temperature: 0.3, + maxTokens: 300, + }) return result.trim() } @@ -462,11 +465,10 @@ async function generateMapReduceSummary( for (let i = 0; i < segments.length; i++) { const segmentContent = formatMessages(segments[i]) - const result = await llmComplete( - t('summary.systemPromptDirect'), - buildSubSummaryPrompt(segmentContent, locale), - { temperature: 0.3, maxTokens: 100 } - ) + const result = await llmComplete(t('summary.systemPromptDirect'), buildSubSummaryPrompt(segmentContent, locale), { + temperature: 0.3, + maxTokens: 100, + }) subSummaries.push(result.trim()) } diff --git a/src/pages/group-chat/components/MemberTab.vue b/src/pages/group-chat/components/MemberTab.vue index 5433833..2bf3c65 100644 --- a/src/pages/group-chat/components/MemberTab.vue +++ b/src/pages/group-chat/components/MemberTab.vue @@ -47,11 +47,7 @@ function handleDataChanged() {
- + ({
- + ({
- +