Team Workflow aggiornato (#37)
* Rimuovi la classe Predictor e aggiorna le importazioni in Pipeline e __init__.py * Aggiungi modelli per l'analisi delle query e la generazione di report; aggiorna le configurazioni degli agenti * Tests for report generation and team agent responses * Aggiorna i prompt degli agenti * Changed defaults models * Aggiunta della classe PlanMemoryTool per la gestione dei task e aggiornamento della logica del team leader per un'esecuzione più dinamica del piano.
This commit was merged in pull request #37.
This commit is contained in:
committed by
GitHub
parent
885a70d748
commit
12339ccbff
48
tests/agents/test_query_check.py
Normal file
48
tests/agents/test_query_check.py
Normal file
@@ -0,0 +1,48 @@
|
||||
import pytest
|
||||
from app.agents.core import QueryOutputs
|
||||
from app.agents.prompts import QUERY_CHECK_INSTRUCTIONS
|
||||
from app.configs import AppConfig
|
||||
|
||||
|
||||
class TestQueryCheckAgent:
|
||||
@pytest.fixture(autouse=True)
|
||||
def setup(self):
|
||||
self.configs = AppConfig.load()
|
||||
self.model = self.configs.get_model_by_name("qwen3:1.7b")
|
||||
self.agent = self.model.get_agent(QUERY_CHECK_INSTRUCTIONS, output_schema=QueryOutputs)
|
||||
|
||||
def test_query_not_ok(self):
|
||||
response = self.agent.run("Is the sky blue?") # type: ignore
|
||||
assert response is not None
|
||||
assert response.content is not None
|
||||
content = response.content
|
||||
assert isinstance(content, QueryOutputs)
|
||||
assert content.is_crypto == False
|
||||
|
||||
def test_query_not_ok2(self):
|
||||
response = self.agent.run("What is the capital of France?") # type: ignore
|
||||
assert response is not None
|
||||
assert response.content is not None
|
||||
content = response.content
|
||||
assert isinstance(content, QueryOutputs)
|
||||
assert content.is_crypto == False
|
||||
|
||||
def test_query_ok(self):
|
||||
response = self.agent.run("Bitcoin") # type: ignore
|
||||
assert response is not None
|
||||
assert response.content is not None
|
||||
content = response.content
|
||||
assert isinstance(content, QueryOutputs)
|
||||
assert content.is_crypto == True
|
||||
|
||||
def test_query_ok2(self):
|
||||
response = self.agent.run("Ha senso investire in Ethereum?") # type: ignore
|
||||
assert response is not None
|
||||
assert response.content is not None
|
||||
content = response.content
|
||||
assert isinstance(content, QueryOutputs)
|
||||
assert content.is_crypto == True
|
||||
|
||||
|
||||
|
||||
|
||||
31
tests/agents/test_report.py
Normal file
31
tests/agents/test_report.py
Normal file
@@ -0,0 +1,31 @@
|
||||
import pytest
|
||||
from app.agents.prompts import REPORT_GENERATION_INSTRUCTIONS
|
||||
from app.configs import AppConfig
|
||||
|
||||
|
||||
class TestReportGenerationAgent:
|
||||
@pytest.fixture(autouse=True)
|
||||
def setup(self):
|
||||
self.configs = AppConfig.load()
|
||||
self.model = self.configs.get_model_by_name("qwen3:1.7b")
|
||||
self.agent = self.model.get_agent(REPORT_GENERATION_INSTRUCTIONS)
|
||||
|
||||
def test_report_generation(self):
|
||||
sample_data = """
|
||||
The analysis reported from the Market Agent have highlighted the following key metrics for the cryptocurrency market:
|
||||
Bitcoin (BTC) has shown strong performance over the last 24 hours with a price of $30,000 and a Market Cap of $600 Billion
|
||||
Ethereum (ETH) is currently priced at $2,000 with a Market Cap of $250 Billion and a 24h Volume of $20 Billion.
|
||||
The overall market sentiment is bullish with a 5% increase in total market capitalization.
|
||||
No significant regulatory news has been reported and the social media sentiment remains unknown.
|
||||
"""
|
||||
|
||||
response = self.agent.run(sample_data) # type: ignore
|
||||
assert response is not None
|
||||
assert response.content is not None
|
||||
content = response.content
|
||||
assert isinstance(content, str)
|
||||
print(content)
|
||||
assert "Bitcoin" in content
|
||||
assert "Ethereum" in content
|
||||
assert "Summary" in content
|
||||
|
||||
37
tests/agents/test_team.py
Normal file
37
tests/agents/test_team.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import asyncio
|
||||
import pytest
|
||||
from app.agents.core import PipelineInputs
|
||||
from app.agents.prompts import *
|
||||
from app.configs import AppConfig
|
||||
|
||||
|
||||
# fix warning about no event loop
|
||||
@pytest.fixture(scope="session", autouse=True)
|
||||
def event_loop():
|
||||
loop = asyncio.new_event_loop()
|
||||
asyncio.set_event_loop(loop)
|
||||
yield loop
|
||||
loop.close()
|
||||
|
||||
|
||||
@pytest.mark.slow
|
||||
class TestTeamAgent:
|
||||
@pytest.fixture(autouse=True)
|
||||
def setup(self):
|
||||
self.configs = AppConfig.load()
|
||||
self.configs.agents.team_model = "qwen3:1.7b"
|
||||
self.configs.agents.team_leader_model = "qwen3:1.7b"
|
||||
self.inputs = PipelineInputs(self.configs)
|
||||
self.team = self.inputs.get_agent_team()
|
||||
|
||||
def test_team_agent_response(self):
|
||||
self.inputs.user_query = "Is Bitcoin a good investment now?"
|
||||
inputs = self.inputs.get_query_inputs()
|
||||
response = self.team.run(inputs) # type: ignore
|
||||
|
||||
assert response is not None
|
||||
assert response.content is not None
|
||||
content = response.content
|
||||
print(content)
|
||||
assert isinstance(content, str)
|
||||
assert "Bitcoin" in content
|
||||
Reference in New Issue
Block a user