mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
fix(insights): persist token usage for non-CLI sessions
This commit is contained in:
parent
585855d2ca
commit
20441cf2c8
6 changed files with 73 additions and 112 deletions
62
tests/test_token_persistence_non_cli.py
Normal file
62
tests/test_token_persistence_non_cli.py
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
from types import SimpleNamespace
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from run_agent import AIAgent
|
||||
|
||||
|
||||
def _mock_response(*, usage: dict, content: str = "done"):
|
||||
msg = SimpleNamespace(content=content, tool_calls=None)
|
||||
choice = SimpleNamespace(message=msg, finish_reason="stop")
|
||||
return SimpleNamespace(
|
||||
choices=[choice],
|
||||
model="test/model",
|
||||
usage=SimpleNamespace(**usage),
|
||||
)
|
||||
|
||||
|
||||
def _make_agent(session_db, *, platform: str):
|
||||
with (
|
||||
patch("run_agent.get_tool_definitions", return_value=[]),
|
||||
patch("run_agent.check_toolset_requirements", return_value={}),
|
||||
patch("run_agent.OpenAI"),
|
||||
):
|
||||
agent = AIAgent(
|
||||
api_key="test-key",
|
||||
quiet_mode=True,
|
||||
skip_context_files=True,
|
||||
skip_memory=True,
|
||||
session_db=session_db,
|
||||
session_id=f"{platform}-session",
|
||||
platform=platform,
|
||||
)
|
||||
agent.client = MagicMock()
|
||||
agent.client.chat.completions.create.return_value = _mock_response(
|
||||
usage={
|
||||
"prompt_tokens": 11,
|
||||
"completion_tokens": 7,
|
||||
"total_tokens": 18,
|
||||
}
|
||||
)
|
||||
return agent
|
||||
|
||||
|
||||
def test_run_conversation_persists_tokens_for_telegram_sessions():
|
||||
session_db = MagicMock()
|
||||
agent = _make_agent(session_db, platform="telegram")
|
||||
|
||||
result = agent.run_conversation("hello")
|
||||
|
||||
assert result["final_response"] == "done"
|
||||
session_db.update_token_counts.assert_called_once()
|
||||
assert session_db.update_token_counts.call_args.args[0] == "telegram-session"
|
||||
|
||||
|
||||
def test_run_conversation_persists_tokens_for_cron_sessions():
|
||||
session_db = MagicMock()
|
||||
agent = _make_agent(session_db, platform="cron")
|
||||
|
||||
result = agent.run_conversation("hello")
|
||||
|
||||
assert result["final_response"] == "done"
|
||||
session_db.update_token_counts.assert_called_once()
|
||||
assert session_db.update_token_counts.call_args.args[0] == "cron-session"
|
||||
Loading…
Add table
Add a link
Reference in a new issue