diff --git a/packages/frontend/core/src/blocksuite/ai/actions/types.ts b/packages/frontend/core/src/blocksuite/ai/actions/types.ts index b60c96b239..cdf627567b 100644 --- a/packages/frontend/core/src/blocksuite/ai/actions/types.ts +++ b/packages/frontend/core/src/blocksuite/ai/actions/types.ts @@ -135,6 +135,7 @@ declare global { isRootSession?: boolean; webSearch?: boolean; reasoning?: boolean; + modelId?: string; contexts?: { docs: AIDocContextOption[]; files: AIFileContextOption[]; diff --git a/packages/frontend/core/src/blocksuite/ai/provider/request.ts b/packages/frontend/core/src/blocksuite/ai/provider/request.ts index ca9062e7ad..b57d6d6b63 100644 --- a/packages/frontend/core/src/blocksuite/ai/provider/request.ts +++ b/packages/frontend/core/src/blocksuite/ai/provider/request.ts @@ -21,6 +21,7 @@ export type TextToTextOptions = { postfix?: (text: string) => string; reasoning?: boolean; webSearch?: boolean; + modelId?: string; }; export type ToImageOptions = TextToTextOptions & { @@ -117,6 +118,7 @@ export function textToText({ postfix, reasoning, webSearch, + modelId, }: TextToTextOptions) { let messageId: string | undefined; @@ -138,6 +140,7 @@ export function textToText({ messageId, reasoning, webSearch, + modelId, }, workflow ? 'workflow' : undefined ); @@ -199,6 +202,7 @@ export function textToText({ messageId, reasoning, webSearch, + modelId, }); })(), ]); diff --git a/packages/frontend/core/src/blocksuite/ai/provider/setup-provider.tsx b/packages/frontend/core/src/blocksuite/ai/provider/setup-provider.tsx index afe788ff12..5cc70a407e 100644 --- a/packages/frontend/core/src/blocksuite/ai/provider/setup-provider.tsx +++ b/packages/frontend/core/src/blocksuite/ai/provider/setup-provider.tsx @@ -82,7 +82,7 @@ export function setupAIProvider( //#region actions AIProvider.provide('chat', async options => { - const { input, contexts, webSearch } = options; + const { input, contexts, webSearch, reasoning } = options; const sessionId = await createSession({ promptName: 'Chat With AFFiNE AI', @@ -90,6 +90,7 @@ export function setupAIProvider( }); return textToText({ ...options, + modelId: options.modelId ?? (reasoning ? 'o4-mini' : undefined), client, sessionId, content: input,