ajuste no contas
This commit is contained in:
53
tests/migration/test_judge_context_compaction.py
Normal file
53
tests/migration/test_judge_context_compaction.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import json
|
||||
import pytest
|
||||
|
||||
from agent_framework.judges.judge import JudgePipeline, JudgeResult, _compact_judge_context
|
||||
|
||||
|
||||
def test_compact_judge_context_drops_recursive_runtime_payload_and_preserves_business_facts():
|
||||
huge = 'X' * 50000
|
||||
context = {
|
||||
'transaction_status': 'COMPLETED',
|
||||
'route': 'contestacao_agent',
|
||||
'evidence': [{
|
||||
'tool_name': 'cancelar_vas_avulso',
|
||||
'result': {
|
||||
'subject': 'TIM Fashion Mensal',
|
||||
'value': '10,00',
|
||||
'success': True,
|
||||
'state': {'session': huge, 'nodes': huge, 'business_events': [huge]},
|
||||
},
|
||||
}],
|
||||
'session': {'original_context': huge},
|
||||
'agent_profile': huge,
|
||||
}
|
||||
out = _compact_judge_context(context)
|
||||
rendered = json.dumps(out, ensure_ascii=False, default=str)
|
||||
assert len(rendered) < 40000
|
||||
assert 'TIM Fashion Mensal' in rendered
|
||||
assert '10,00' in rendered
|
||||
assert 'COMPLETED' in rendered
|
||||
assert 'agent_profile' not in rendered
|
||||
assert 'business_events' not in rendered
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_pipeline_compacts_context_before_external_judge():
|
||||
seen = {}
|
||||
|
||||
class ExternalJudge:
|
||||
async def evaluate(self, question, answer, context):
|
||||
seen['context'] = context
|
||||
return JudgeResult(name='external', score=1.0, passed=True, reason='ok')
|
||||
|
||||
pipeline = JudgePipeline(judges=[ExternalJudge()], enabled=True)
|
||||
context = {
|
||||
'transaction_status': 'COMPLETED',
|
||||
'evidence': [{'subject': 'TIM Fashion Mensal', 'state': {'session': 'Y' * 80000}}],
|
||||
}
|
||||
results = await pipeline.evaluate_all('sim', 'Cancelado com sucesso', context)
|
||||
assert results[0].passed is True
|
||||
rendered = json.dumps(seen['context'], ensure_ascii=False, default=str)
|
||||
assert len(rendered) < 40000
|
||||
assert 'TIM Fashion Mensal' in rendered
|
||||
assert 'session' not in rendered
|
||||
Reference in New Issue
Block a user