diff --git a/packages/backend/server/src/plugins/copilot/providers/anthropic/anthropic.ts b/packages/backend/server/src/plugins/copilot/providers/anthropic/anthropic.ts index 2bd16a47e..483188cf6 100644 --- a/packages/backend/server/src/plugins/copilot/providers/anthropic/anthropic.ts +++ b/packages/backend/server/src/plugins/copilot/providers/anthropic/anthropic.ts @@ -26,8 +26,6 @@ import { } from '../utils'; export abstract class AnthropicProvider extends CopilotProvider { - private readonly MAX_STEPS = 20; - protected abstract instance: | AnthropicSDKProvider | GoogleVertexAnthropicProvider; diff --git a/packages/backend/server/src/plugins/copilot/providers/gemini/gemini.ts b/packages/backend/server/src/plugins/copilot/providers/gemini/gemini.ts index f2d200492..8525f3035 100644 --- a/packages/backend/server/src/plugins/copilot/providers/gemini/gemini.ts +++ b/packages/backend/server/src/plugins/copilot/providers/gemini/gemini.ts @@ -9,6 +9,7 @@ import { generateObject, generateText, JSONParseError, + stepCountIs, streamText, } from 'ai'; @@ -85,6 +86,7 @@ export abstract class GeminiProvider extends CopilotProvider { google: this.getGeminiOptions(options, model.id), }, tools: await this.getTools(options, model.id), + stopWhen: stepCountIs(this.MAX_STEPS), }); if (!text) throw new Error('Failed to generate text'); @@ -276,6 +278,7 @@ export abstract class GeminiProvider extends CopilotProvider { google: this.getGeminiOptions(options, model.id), }, tools: await this.getTools(options, model.id), + stopWhen: stepCountIs(this.MAX_STEPS), }); return fullStream; } diff --git a/packages/backend/server/src/plugins/copilot/providers/openai.ts b/packages/backend/server/src/plugins/copilot/providers/openai.ts index 48991cac2..12160a1ad 100644 --- a/packages/backend/server/src/plugins/copilot/providers/openai.ts +++ b/packages/backend/server/src/plugins/copilot/providers/openai.ts @@ -296,8 +296,6 @@ export class OpenAIProvider extends CopilotProvider { }, ]; - private readonly MAX_STEPS = 20; - #instance!: VercelOpenAIProvider; override configured(): boolean { diff --git a/packages/backend/server/src/plugins/copilot/providers/provider.ts b/packages/backend/server/src/plugins/copilot/providers/provider.ts index 41f95cce8..f18035448 100644 --- a/packages/backend/server/src/plugins/copilot/providers/provider.ts +++ b/packages/backend/server/src/plugins/copilot/providers/provider.ts @@ -55,6 +55,7 @@ import { @Injectable() export abstract class CopilotProvider { protected readonly logger = new Logger(this.constructor.name); + protected readonly MAX_STEPS = 20; protected onlineModelList: string[] = []; abstract readonly type: CopilotProviderType; abstract readonly models: CopilotProviderModel[];