QueryOutputs per riflettere il campo is_crypto; aggiunto test per la verifica delle query crypto
This commit is contained in:
@@ -9,7 +9,7 @@ class QueryInputs(BaseModel):
|
|||||||
|
|
||||||
class QueryOutputs(BaseModel):
|
class QueryOutputs(BaseModel):
|
||||||
response: str
|
response: str
|
||||||
is_ok: bool
|
is_crypto: bool
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ class Pipeline:
|
|||||||
# Step 2: Crea gli steps
|
# Step 2: Crea gli steps
|
||||||
def condition_query_ok(step_input: StepInput) -> StepOutput:
|
def condition_query_ok(step_input: StepInput) -> StepOutput:
|
||||||
val = step_input.previous_step_content
|
val = step_input.previous_step_content
|
||||||
return StepOutput(stop=not val.is_ok) if isinstance(val, QueryOutputs) else StepOutput(stop=True)
|
return StepOutput(stop=not val.is_crypto) if isinstance(val, QueryOutputs) else StepOutput(stop=True)
|
||||||
|
|
||||||
query_check = Step(name=PipelineEvent.QUERY_CHECK, agent=q_check_agent)
|
query_check = Step(name=PipelineEvent.QUERY_CHECK, agent=q_check_agent)
|
||||||
info_recovery = Step(name=PipelineEvent.INFO_RECOVERY, team=team)
|
info_recovery = Step(name=PipelineEvent.INFO_RECOVERY, team=team)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ GOAL: check if the query is crypto-related
|
|||||||
1) Determine the language of the query:
|
1) Determine the language of the query:
|
||||||
- This will help you understand better the intention of the user
|
- This will help you understand better the intention of the user
|
||||||
- Focus on the query of the user
|
- Focus on the query of the user
|
||||||
|
- DO NOT answer the query
|
||||||
|
|
||||||
2) Determine if the query is crypto or investment-related:
|
2) Determine if the query is crypto or investment-related:
|
||||||
- Crypto-related if it mentions cryptocurrencies, tokens, NFTs, blockchain, exchanges, wallets, DeFi, oracles, smart contracts, on-chain, off-chain, staking, yield, liquidity, tokenomics, coins, ticker symbols, etc.
|
- Crypto-related if it mentions cryptocurrencies, tokens, NFTs, blockchain, exchanges, wallets, DeFi, oracles, smart contracts, on-chain, off-chain, staking, yield, liquidity, tokenomics, coins, ticker symbols, etc.
|
||||||
|
|||||||
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 Etherium?") #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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user