@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
TypeScript
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;
}