Roo-Code/src/api/providers/base-provider.ts
2025-05-30 14:54:48 -07:00

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 })
}
}