| 12345678910111213141516171819202122232425262728293031323334 |
- import { Anthropic } from "@anthropic-ai/sdk"
- import { ModelInfo } from "../../shared/api"
- 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 })
- }
- }
|