mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-06 08:18:39 +00:00
35 lines
1 KiB
TypeScript
35 lines
1 KiB
TypeScript
import { Anthropic } from "@anthropic-ai/sdk"
|
|
|
|
import type { ModelInfo } from "@roo-code/types"
|
|
|
|
import type { ApiHandler, ApiHandlerCreateMessageMetadata } from "../index"
|
|
import { ApiStream } from "../transform/stream"
|
|
import { countTokens } from "../../utils/countTokens"
|
|
|
|
/**
|
|
* Base class for API providers that implements common functionality.
|
|
*/
|
|
export abstract class BaseProvider implements ApiHandler {
|
|
abstract createMessage(
|
|
systemPrompt: string,
|
|
messages: Anthropic.Messages.MessageParam[],
|
|
metadata?: ApiHandlerCreateMessageMetadata,
|
|
): ApiStream
|
|
|
|
abstract getModel(): { id: string; info: ModelInfo }
|
|
|
|
/**
|
|
* Default token counting implementation using tiktoken.
|
|
* Providers can override this to use their native token counting endpoints.
|
|
*
|
|
* @param content The content to count tokens for
|
|
* @returns A promise resolving to the token count
|
|
*/
|
|
async countTokens(content: Anthropic.Messages.ContentBlockParam[]): Promise<number> {
|
|
if (content.length === 0) {
|
|
return 0
|
|
}
|
|
|
|
return countTokens(content, { useWorker: true })
|
|
}
|
|
}
|