| from landppt.services.runtime.ai_execution import ExecutionContext, ProviderConfig | |
| def test_execution_context_maps_processing_config_kwargs(): | |
| context = ExecutionContext.from_mapping( | |
| "outline", | |
| { | |
| "llm_provider": "openai", | |
| "llm_model": "gpt-5.4", | |
| "api_key": "test-key", | |
| "base_url": "https://example.com/v1", | |
| "temperature": 0.2, | |
| "max_tokens": 4096, | |
| "use_responses_api": True, | |
| "enable_reasoning": True, | |
| "reasoning_effort": "high", | |
| }, | |
| user_id=7, | |
| source="user_db", | |
| ) | |
| assert context.role == "outline" | |
| assert context.user_id == 7 | |
| assert context.source == "user_db" | |
| assert context.to_processing_config_kwargs() == { | |
| "llm_model": "gpt-5.4", | |
| "llm_provider": "openai", | |
| "temperature": 0.2, | |
| "max_tokens": 4096, | |
| "api_key": "test-key", | |
| "base_url": "https://example.com/v1", | |
| "use_responses_api": True, | |
| "enable_reasoning": True, | |
| "reasoning_effort": "high", | |
| } | |
| def test_provider_config_preserves_unmodeled_fields_as_extras(): | |
| provider = ProviderConfig.from_mapping( | |
| { | |
| "provider": "anthropic", | |
| "model": "claude-test", | |
| "timeout_seconds": 120, | |
| "region": "us-east-1", | |
| } | |
| ) | |
| assert provider.provider == "anthropic" | |
| assert provider.model == "claude-test" | |
| assert provider.extras == { | |
| "timeout_seconds": 120, | |
| "region": "us-east-1", | |
| } | |