diff --git a/src/cloudcode/count-tokens.js b/src/cloudcode/count-tokens.js index d70586a..f37a21f 100644 --- a/src/cloudcode/count-tokens.js +++ b/src/cloudcode/count-tokens.js @@ -278,7 +278,7 @@ export function createCountTokensHandler(accountManager) { const result = await countTokens( { messages, model, system, tools, tool_choice, thinking }, accountManager, - { useAPI: true } // Use API for accurate token counting + { useAPI: false } // Use local estimation by default, API for complex content (images/docs) ); res.json(result); diff --git a/src/server.js b/src/server.js index 809467e..40c41d8 100644 --- a/src/server.js +++ b/src/server.js @@ -601,7 +601,17 @@ app.get('/v1/models', async (req, res) => { * Count tokens endpoint - Anthropic Messages API compatible * Uses hybrid approach: local tokenizer for text, API for complex content (images, documents) */ -app.post('/v1/messages/count_tokens', createCountTokensHandler(accountManager)); +app.post('/v1/messages/count_tokens', async (req, res) => { + try { + // Ensure account manager is initialized for API-based counting + await ensureInitialized(); + } catch (error) { + // If initialization fails, handler will fall back to local estimation + logger.debug(`[TokenCounter] Account manager not initialized: ${error.message}`); + } + + return createCountTokensHandler(accountManager)(req, res); +}); /** * Main messages endpoint - Anthropic Messages API compatible