UNPKG

@hashgraphonline/conversational-agent

Version:

Hashgraph Online conversational AI agent implementing HCS-10 communication, HCS-2 registries, and content inscription on Hedera

62 lines (60 loc) 2.15 kB
import { TiktokenModel } from 'tiktoken'; import { BaseMessage } from '@langchain/core/messages'; /** * Token counter utility for OpenAI models using tiktoken encoding * Provides accurate token counting for text content and chat messages */ export declare class TokenCounter { private encoding; private modelName; private static readonly MESSAGE_OVERHEAD; private static readonly ROLE_OVERHEAD; constructor(modelName?: string | TiktokenModel); /** * Count tokens in raw text content * @param text - The text to count tokens for * @returns Number of tokens */ countTokens(text: string): number; /** * Count tokens for a single chat message including role overhead * @param message - The message to count tokens for * @returns Number of tokens including message formatting overhead */ countMessageTokens(message: BaseMessage): number; /** * Count tokens for multiple messages * @param messages - Array of messages to count * @returns Total token count for all messages */ countMessagesTokens(messages: BaseMessage[]): number; /** * Estimate tokens for system prompt * System prompts have slightly different overhead in chat completions * @param systemPrompt - The system prompt text * @returns Estimated token count */ estimateSystemPromptTokens(systemPrompt: string): number; /** * Get total context size estimate including system prompt and messages * @param systemPrompt - System prompt text * @param messages - Conversation messages * @returns Total estimated token count */ estimateContextSize(systemPrompt: string, messages: BaseMessage[]): number; /** * Get the role string for a message * @param message - The message to get the role for * @returns Role string ('user', 'assistant', 'system', etc.) */ private getMessageRole; /** * Get the model name being used for token counting * @returns The tiktoken model name */ getModelName(): string; /** * Clean up encoding resources */ dispose(): void; }