Co-authored-by: Quentin Torroba <quentin.torroba@mistral.ai> Co-authored-by: Michel Thomazo <michel.thomazo@mistral.ai> Co-authored-by: Clément Drouin <clement.drouin@mistral.ai> Co-authored-by: Vincent Guilloux <vincent.guilloux@mistral.ai> Co-authored-by: Clément Siriex <clement.sirieix@mistral.ai> Co-authored-by: Kim-Adeline Miguel <kimadeline.miguel@mistral.ai> Co-authored-by: Nicolas Karolak <nicolas@karolak.fr>
68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from tests.conftest import build_test_agent_loop
|
|
from tests.mock.utils import mock_llm_chunk
|
|
from tests.stubs.fake_backend import FakeBackend
|
|
from vibe.core.config import VibeConfig
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_passes_x_affinity_header_when_asking_an_answer(vibe_config: VibeConfig):
|
|
backend = FakeBackend([mock_llm_chunk(content="Response")])
|
|
agent = build_test_agent_loop(config=vibe_config, backend=backend)
|
|
|
|
[_ async for _ in agent.act("Hello")]
|
|
|
|
assert len(backend.requests_extra_headers) > 0
|
|
headers = backend.requests_extra_headers[0]
|
|
assert headers is not None
|
|
assert "x-affinity" in headers
|
|
assert headers["x-affinity"] == agent.session_id
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_passes_x_affinity_header_when_asking_an_answer_streaming(
|
|
vibe_config: VibeConfig,
|
|
):
|
|
backend = FakeBackend([mock_llm_chunk(content="Response")])
|
|
agent = build_test_agent_loop(
|
|
config=vibe_config, backend=backend, enable_streaming=True
|
|
)
|
|
|
|
[_ async for _ in agent.act("Hello")]
|
|
|
|
assert len(backend.requests_extra_headers) > 0
|
|
headers = backend.requests_extra_headers[0]
|
|
assert headers is not None
|
|
assert "x-affinity" in headers
|
|
assert headers["x-affinity"] == agent.session_id
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_updates_tokens_stats_based_on_backend_response(vibe_config: VibeConfig):
|
|
chunk = mock_llm_chunk(content="Response", prompt_tokens=100, completion_tokens=50)
|
|
backend = FakeBackend([chunk])
|
|
agent = build_test_agent_loop(config=vibe_config, backend=backend)
|
|
|
|
[_ async for _ in agent.act("Hello")]
|
|
|
|
assert agent.stats.context_tokens == 150
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_updates_tokens_stats_based_on_backend_response_streaming(
|
|
vibe_config: VibeConfig,
|
|
):
|
|
final_chunk = mock_llm_chunk(
|
|
content="Complete", prompt_tokens=200, completion_tokens=75
|
|
)
|
|
backend = FakeBackend([final_chunk])
|
|
agent = build_test_agent_loop(
|
|
config=vibe_config, backend=backend, enable_streaming=True
|
|
)
|
|
|
|
[_ async for _ in agent.act("Hello")]
|
|
|
|
assert agent.stats.context_tokens == 275
|