| """Check requested reasoning settings at provider boundaries with local mocks.""" |
| import unittest |
| from types import SimpleNamespace |
| from unittest.mock import Mock, patch |
| from peppa.controllers import APIController, AnthropicController |
| from peppa.schema import Decision |
|
|
| class ProviderSettingsTests(unittest.TestCase): |
| def result_text(self): |
| return Decision(tool='stop',arguments={},hypothesis='fixture',evidence_ids=[],decision_summary='fixture',expected_observation='',stop=True).model_dump_json() |
|
|
| def test_astra_max_request_and_record(self): |
| c=APIController.__new__(APIController) |
| c.model='gpt-6-astra';c.provider='responses';c.reasoning_effort='max' |
| c.max_output_tokens=64000;c.input_bytes=14000;c.client=Mock() |
| c.client.responses.create.return_value=SimpleNamespace(output_text=self.result_text(),model=c.model,id='local-mock',usage=None) |
| with patch('peppa.controllers.request_context',return_value=('system','input')): |
| _,record=c.next({}, {}) |
| args=c.client.responses.create.call_args.kwargs |
| self.assertEqual(args['reasoning'],{'effort':'max'}) |
| self.assertEqual(args['max_output_tokens'],64000) |
| self.assertEqual(record['reasoning_effort'],'max') |
|
|
| def test_opus_max_request_and_record(self): |
| c=AnthropicController.__new__(AnthropicController) |
| c.model='claude-opus-5';c.effort='max';c.max_output_tokens=64000;c.input_bytes=14000;c.client=Mock() |
| c.client.messages.create.return_value=SimpleNamespace(content=[SimpleNamespace(type='text',text=self.result_text())],model=c.model,id='local-mock',usage=SimpleNamespace(model_dump=lambda:{})) |
| with patch('peppa.controllers.request_context',return_value=('system','input')): |
| _,record=c.next({}, {}) |
| args=c.client.messages.create.call_args.kwargs |
| self.assertEqual(args['output_config'],{'effort':'max'}) |
| self.assertEqual(args['thinking'],{'type':'adaptive'}) |
| self.assertEqual(args['max_tokens'],64000) |
| self.assertEqual(record['effort'],'max') |
|
|
| if __name__=='__main__':unittest.main() |
|
|