Implement performance improvements for memory caching, HTTP client reuse, and regex optimization
Co-authored-by: Kenearos <86194771+Kenearos@users.noreply.github.com>
This commit is contained in:
parent
860e4d5027
commit
b72cd9db1c
5 changed files with 451 additions and 246 deletions
|
|
@ -22,48 +22,51 @@ class TestFullWorkflow:
|
|||
detector = MentionDetector(config.bot_name)
|
||||
ai = PerplexityProvider(api_key=config.perplexity_key, model=config.model)
|
||||
|
||||
# Mock API response
|
||||
with patch('httpx.AsyncClient') as mock_client:
|
||||
mock_response = Mock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.json.return_value = mock_perplexity_response
|
||||
# Mock API client for lazy initialization
|
||||
mock_client = Mock()
|
||||
mock_client.is_closed = False
|
||||
mock_response = Mock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.json.return_value = mock_perplexity_response
|
||||
|
||||
mock_post = AsyncMock(return_value=mock_response)
|
||||
mock_client.return_value.__aenter__.return_value.post = mock_post
|
||||
mock_client.post = AsyncMock(return_value=mock_response)
|
||||
|
||||
# Simulate user message
|
||||
username = "testuser"
|
||||
user_message = "@TestBot what's the weather?"
|
||||
# Inject the mock client
|
||||
ai._client = mock_client
|
||||
|
||||
# 1. Detect mention
|
||||
assert detector.is_mentioned(user_message)
|
||||
# Simulate user message
|
||||
username = "testuser"
|
||||
user_message = "@TestBot what's the weather?"
|
||||
|
||||
# 2. Extract content
|
||||
content = detector.extract_content(user_message)
|
||||
assert content == "what's the weather?"
|
||||
# 1. Detect mention
|
||||
assert detector.is_mentioned(user_message)
|
||||
|
||||
# 3. Load history
|
||||
history = memory.get_user_history(username, limit=5)
|
||||
assert len(history) == 0 # First message
|
||||
# 2. Extract content
|
||||
content = detector.extract_content(user_message)
|
||||
assert content == "what's the weather?"
|
||||
|
||||
# 4. Build messages for API
|
||||
messages = [{"role": "system", "content": config.get_system_prompt()}]
|
||||
messages.extend(memory.format_for_prompt(history))
|
||||
messages.append({"role": "user", "content": content})
|
||||
# 3. Load history
|
||||
history = memory.get_user_history(username, limit=5)
|
||||
assert len(history) == 0 # First message
|
||||
|
||||
# 5. Get AI response
|
||||
response = await ai.get_response(messages)
|
||||
assert response == "This is a test response from the AI."
|
||||
# 4. Build messages for API
|
||||
messages = [{"role": "system", "content": config.get_system_prompt()}]
|
||||
messages.extend(memory.format_for_prompt(history))
|
||||
messages.append({"role": "user", "content": content})
|
||||
|
||||
# 6. Save to memory
|
||||
memory.add_message(username, "user", content)
|
||||
memory.add_message(username, "assistant", response)
|
||||
# 5. Get AI response
|
||||
response = await ai.get_response(messages)
|
||||
assert response == "This is a test response from the AI."
|
||||
|
||||
# 7. Verify history was saved
|
||||
saved_history = memory.get_user_history(username)
|
||||
assert len(saved_history) == 2
|
||||
assert saved_history[0]["content"] == content
|
||||
assert saved_history[1]["content"] == response
|
||||
# 6. Save to memory
|
||||
memory.add_message(username, "user", content)
|
||||
memory.add_message(username, "assistant", response)
|
||||
|
||||
# 7. Verify history was saved
|
||||
saved_history = memory.get_user_history(username)
|
||||
assert len(saved_history) == 2
|
||||
assert saved_history[0]["content"] == content
|
||||
assert saved_history[1]["content"] == response
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_conversation_context_preserved(self, temp_dir, mock_env_file):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue