Skip to content

Commit f37dd4d

Browse files
committed
fix: update DeepSeek, Doubao, and Moonshot handlers to extend OpenAIChatCompletionsHandler
These handlers now properly extend from OpenAIChatCompletionsHandler instead of OpenAiHandler to maintain compatibility with the new architecture
1 parent 95e4c12 commit f37dd4d

File tree

4 files changed

+29
-13
lines changed

4 files changed

+29
-13
lines changed

src/api/providers/deepseek.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ import type { ApiHandlerOptions } from "../../shared/api"
55
import type { ApiStreamUsageChunk } from "../transform/stream"
66
import { getModelParams } from "../transform/model-params"
77

8-
import { OpenAiHandler } from "./openai"
8+
import { OpenAIChatCompletionsHandler } from "./openai-chat-completions"
9+
10+
export class DeepSeekHandler extends OpenAIChatCompletionsHandler {
11+
private deepSeekOptions: ApiHandlerOptions
912

10-
export class DeepSeekHandler extends OpenAiHandler {
1113
constructor(options: ApiHandlerOptions) {
1214
super({
1315
...options,
@@ -17,12 +19,13 @@ export class DeepSeekHandler extends OpenAiHandler {
1719
openAiStreamingEnabled: true,
1820
includeMaxTokens: true,
1921
})
22+
this.deepSeekOptions = options
2023
}
2124

2225
override getModel() {
23-
const id = this.options.apiModelId ?? deepSeekDefaultModelId
26+
const id = this.deepSeekOptions.apiModelId ?? deepSeekDefaultModelId
2427
const info = deepSeekModels[id as keyof typeof deepSeekModels] || deepSeekModels[deepSeekDefaultModelId]
25-
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.options })
28+
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.deepSeekOptions })
2629
return { id, info, ...params }
2730
}
2831

src/api/providers/doubao.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { OpenAiHandler } from "./openai"
1+
import { OpenAIChatCompletionsHandler } from "./openai-chat-completions"
22
import type { ApiHandlerOptions } from "../../shared/api"
33
import { DOUBAO_API_BASE_URL, doubaoDefaultModelId, doubaoModels } from "@roo-code/types"
44
import { getModelParams } from "../transform/model-params"
@@ -49,7 +49,9 @@ interface ChatCompletionChunk {
4949
}
5050
}
5151

52-
export class DoubaoHandler extends OpenAiHandler {
52+
export class DoubaoHandler extends OpenAIChatCompletionsHandler {
53+
private doubaoOptions: ApiHandlerOptions
54+
5355
constructor(options: ApiHandlerOptions) {
5456
super({
5557
...options,
@@ -59,12 +61,13 @@ export class DoubaoHandler extends OpenAiHandler {
5961
openAiStreamingEnabled: true,
6062
includeMaxTokens: true,
6163
})
64+
this.doubaoOptions = options
6265
}
6366

6467
override getModel() {
65-
const id = this.options.apiModelId ?? doubaoDefaultModelId
68+
const id = this.doubaoOptions.apiModelId ?? doubaoDefaultModelId
6669
const info = doubaoModels[id as keyof typeof doubaoModels] || doubaoModels[doubaoDefaultModelId]
67-
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.options })
70+
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.doubaoOptions })
6871
return { id, info, ...params }
6972
}
7073

src/api/providers/moonshot.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ import type { ApiHandlerOptions } from "../../shared/api"
66
import type { ApiStreamUsageChunk } from "../transform/stream"
77
import { getModelParams } from "../transform/model-params"
88

9-
import { OpenAiHandler } from "./openai"
9+
import { OpenAIChatCompletionsHandler } from "./openai-chat-completions"
10+
11+
export class MoonshotHandler extends OpenAIChatCompletionsHandler {
12+
private moonshotOptions: ApiHandlerOptions
1013

11-
export class MoonshotHandler extends OpenAiHandler {
1214
constructor(options: ApiHandlerOptions) {
1315
super({
1416
...options,
@@ -18,12 +20,13 @@ export class MoonshotHandler extends OpenAiHandler {
1820
openAiStreamingEnabled: true,
1921
includeMaxTokens: true,
2022
})
23+
this.moonshotOptions = options
2124
}
2225

2326
override getModel() {
24-
const id = this.options.apiModelId ?? moonshotDefaultModelId
27+
const id = this.moonshotOptions.apiModelId ?? moonshotDefaultModelId
2528
const info = moonshotModels[id as keyof typeof moonshotModels] || moonshotModels[moonshotDefaultModelId]
26-
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.options })
29+
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.moonshotOptions })
2730
return { id, info, ...params }
2831
}
2932

@@ -46,6 +49,6 @@ export class MoonshotHandler extends OpenAiHandler {
4649
modelInfo: ModelInfo,
4750
): void {
4851
// Moonshot uses max_tokens instead of max_completion_tokens
49-
requestOptions.max_tokens = this.options.modelMaxTokens || modelInfo.maxTokens
52+
requestOptions.max_tokens = this.moonshotOptions.modelMaxTokens || modelInfo.maxTokens
5053
}
5154
}

src/api/providers/openai.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,13 @@ export class OpenAiHandler implements SingleCompletionHandler {
7575
return this.handler.completePrompt(prompt)
7676
}
7777

78+
/**
79+
* Count tokens for the given content
80+
*/
81+
async countTokens(content: any[]): Promise<number> {
82+
return this.handler.countTokens(content)
83+
}
84+
7885
/**
7986
* Get information about which API is being used
8087
*/

0 commit comments

Comments
 (0)