nanobot/tests/utils/test_token_estimation.py

33 lines
859 B
Python

from nanobot.utils.helpers import estimate_prompt_tokens_chain
class _NoCounterProvider:
pass
class _BrokenCounterProvider:
def estimate_prompt_tokens(self, messages, tools=None, model=None):
raise RuntimeError("counter unavailable")
def test_estimate_prompt_tokens_chain_falls_back_without_provider_counter() -> None:
tokens, source = estimate_prompt_tokens_chain(
_NoCounterProvider(),
"test-model",
[{"role": "user", "content": "hello"}],
)
assert tokens > 0
assert source == "tiktoken"
def test_estimate_prompt_tokens_chain_falls_back_when_provider_counter_fails() -> None:
tokens, source = estimate_prompt_tokens_chain(
_BrokenCounterProvider(),
"test-model",
[{"role": "user", "content": "hello"}],
)
assert tokens > 0
assert source == "tiktoken"