Provide fallback if tiktoken cannot be imported #456
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull Request Description
What and why?
Eliminate Network Calls on Import with Lazy Tiktoken Loading
This PR refactors the
validmind.ai.test_descriptionsmodule to eliminate network calls during import by implementing lazy loading fortiktoken. Previously,import tiktokenat the module level would trigger network requests to download encoding data, causing delays and failures in environments without network access.The solution implements a hybrid approach that attempts to import
tiktokenonce at module load within a try-catch block, caching the result in module-level flags (_TIKTOKEN_AVAILABLEand_TIKTOKEN_ENCODING). The_truncate_summaryfunction now checks these cached flags with zero runtime overhead:Before: Direct import causes network call
After: Cached import with character-based fallback
When
tiktokenis available, the implementation uses accurate token counting. When unavailable (no network, import failure), it gracefully falls back to character-based estimation (~4 characters per token). This ensures the library works reliably in all environments while maintaining accuracy when possible. Comprehensive unit tests verify both code paths execute correctly with proper assertions on mocked function calls.How to test
What needs special review?
Dependencies, breaking changes, and deployment notes
Release notes
Checklist