mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-08-28 05:27:24 +00:00
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
This commit is contained in:
parent
95e4c12873
commit
f37dd4d97f
4 changed files with 29 additions and 13 deletions
|
|
@ -5,9 +5,11 @@ import type { ApiHandlerOptions } from "../../shared/api"
|
|||
import type { ApiStreamUsageChunk } from "../transform/stream"
|
||||
import { getModelParams } from "../transform/model-params"
|
||||
|
||||
import { OpenAiHandler } from "./openai"
|
||||
import { OpenAIChatCompletionsHandler } from "./openai-chat-completions"
|
||||
|
||||
export class DeepSeekHandler extends OpenAIChatCompletionsHandler {
|
||||
private deepSeekOptions: ApiHandlerOptions
|
||||
|
||||
export class DeepSeekHandler extends OpenAiHandler {
|
||||
constructor(options: ApiHandlerOptions) {
|
||||
super({
|
||||
...options,
|
||||
|
|
@ -17,12 +19,13 @@ export class DeepSeekHandler extends OpenAiHandler {
|
|||
openAiStreamingEnabled: true,
|
||||
includeMaxTokens: true,
|
||||
})
|
||||
this.deepSeekOptions = options
|
||||
}
|
||||
|
||||
override getModel() {
|
||||
const id = this.options.apiModelId ?? deepSeekDefaultModelId
|
||||
const id = this.deepSeekOptions.apiModelId ?? deepSeekDefaultModelId
|
||||
const info = deepSeekModels[id as keyof typeof deepSeekModels] || deepSeekModels[deepSeekDefaultModelId]
|
||||
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.options })
|
||||
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.deepSeekOptions })
|
||||
return { id, info, ...params }
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { OpenAiHandler } from "./openai"
|
||||
import { OpenAIChatCompletionsHandler } from "./openai-chat-completions"
|
||||
import type { ApiHandlerOptions } from "../../shared/api"
|
||||
import { DOUBAO_API_BASE_URL, doubaoDefaultModelId, doubaoModels } from "@roo-code/types"
|
||||
import { getModelParams } from "../transform/model-params"
|
||||
|
|
@ -49,7 +49,9 @@ interface ChatCompletionChunk {
|
|||
}
|
||||
}
|
||||
|
||||
export class DoubaoHandler extends OpenAiHandler {
|
||||
export class DoubaoHandler extends OpenAIChatCompletionsHandler {
|
||||
private doubaoOptions: ApiHandlerOptions
|
||||
|
||||
constructor(options: ApiHandlerOptions) {
|
||||
super({
|
||||
...options,
|
||||
|
|
@ -59,12 +61,13 @@ export class DoubaoHandler extends OpenAiHandler {
|
|||
openAiStreamingEnabled: true,
|
||||
includeMaxTokens: true,
|
||||
})
|
||||
this.doubaoOptions = options
|
||||
}
|
||||
|
||||
override getModel() {
|
||||
const id = this.options.apiModelId ?? doubaoDefaultModelId
|
||||
const id = this.doubaoOptions.apiModelId ?? doubaoDefaultModelId
|
||||
const info = doubaoModels[id as keyof typeof doubaoModels] || doubaoModels[doubaoDefaultModelId]
|
||||
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.options })
|
||||
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.doubaoOptions })
|
||||
return { id, info, ...params }
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@ import type { ApiHandlerOptions } from "../../shared/api"
|
|||
import type { ApiStreamUsageChunk } from "../transform/stream"
|
||||
import { getModelParams } from "../transform/model-params"
|
||||
|
||||
import { OpenAiHandler } from "./openai"
|
||||
import { OpenAIChatCompletionsHandler } from "./openai-chat-completions"
|
||||
|
||||
export class MoonshotHandler extends OpenAIChatCompletionsHandler {
|
||||
private moonshotOptions: ApiHandlerOptions
|
||||
|
||||
export class MoonshotHandler extends OpenAiHandler {
|
||||
constructor(options: ApiHandlerOptions) {
|
||||
super({
|
||||
...options,
|
||||
|
|
@ -18,12 +20,13 @@ export class MoonshotHandler extends OpenAiHandler {
|
|||
openAiStreamingEnabled: true,
|
||||
includeMaxTokens: true,
|
||||
})
|
||||
this.moonshotOptions = options
|
||||
}
|
||||
|
||||
override getModel() {
|
||||
const id = this.options.apiModelId ?? moonshotDefaultModelId
|
||||
const id = this.moonshotOptions.apiModelId ?? moonshotDefaultModelId
|
||||
const info = moonshotModels[id as keyof typeof moonshotModels] || moonshotModels[moonshotDefaultModelId]
|
||||
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.options })
|
||||
const params = getModelParams({ format: "openai", modelId: id, model: info, settings: this.moonshotOptions })
|
||||
return { id, info, ...params }
|
||||
}
|
||||
|
||||
|
|
@ -46,6 +49,6 @@ export class MoonshotHandler extends OpenAiHandler {
|
|||
modelInfo: ModelInfo,
|
||||
): void {
|
||||
// Moonshot uses max_tokens instead of max_completion_tokens
|
||||
requestOptions.max_tokens = this.options.modelMaxTokens || modelInfo.maxTokens
|
||||
requestOptions.max_tokens = this.moonshotOptions.modelMaxTokens || modelInfo.maxTokens
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,6 +75,13 @@ export class OpenAiHandler implements SingleCompletionHandler {
|
|||
return this.handler.completePrompt(prompt)
|
||||
}
|
||||
|
||||
/**
|
||||
* Count tokens for the given content
|
||||
*/
|
||||
async countTokens(content: any[]): Promise<number> {
|
||||
return this.handler.countTokens(content)
|
||||
}
|
||||
|
||||
/**
|
||||
* Get information about which API is being used
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue