diff --git a/asknews_sdk/api/chat.py b/asknews_sdk/api/chat.py index b151bc0..c360c15 100644 --- a/asknews_sdk/api/chat.py +++ b/asknews_sdk/api/chat.py @@ -71,7 +71,9 @@ "gemini-2.5-flash", "o3", "gpt-5.6-sol", + "gpt-6-sol", "claude-opus-4-8", + "claude-opus-5-5", "gpt-5.6-terra", ] diff --git a/tests/api/test_chat_model_types.py b/tests/api/test_chat_model_types.py index 62cd6b3..7e9e1b3 100644 --- a/tests/api/test_chat_model_types.py +++ b/tests/api/test_chat_model_types.py @@ -7,10 +7,12 @@ from asknews_sdk.api.chat import AsyncChatAPI, ChatAPI, ChatModel, DeepNewsModel from asknews_sdk.dto import alert as alert_dto +from asknews_sdk.dto.deepnews import CreateDeepNewsRequest GPT_6_ASTRA = "gpt-6-astra" CLAUDE_FABLE_MODELS = ("claude-fable-5", "claude-fable-5-1") +ADVANCED_DEEPNEWS_MODELS = ("claude-opus-5-5", "gpt-6-sol") def test_gpt_6_astra_is_a_direct_deepnews_model_only(): @@ -41,6 +43,24 @@ def test_gpt_6_astra_is_absent_from_alert_model_contracts(): assert GPT_6_ASTRA not in json.dumps(model.model_json_schema()), name +@pytest.mark.parametrize("model", ADVANCED_DEEPNEWS_MODELS) +@pytest.mark.parametrize("api_type", [ChatAPI, AsyncChatAPI]) +def test_advanced_models_are_scoped_to_deepnews_and_preserve_alert_contracts(model, api_type): + assert model in get_args(DeepNewsModel) + assert model in get_args(get_type_hints(api_type.get_deep_news)["model"]) + assert model not in get_args(ChatModel) + assert model not in get_args(alert_dto.DeepNewsModel) + assert model not in get_args(alert_dto.CheckAlertModel) + assert model not in get_args(alert_dto.AlertReportModel) + + +@pytest.mark.parametrize("model", ADVANCED_DEEPNEWS_MODELS) +def test_advanced_deepnews_models_serialize_in_requests(model): + request = CreateDeepNewsRequest(messages=[{"role": "user", "content": "query"}], model=model) + + assert request.model_dump(mode="json")["model"] == model + + @pytest.mark.parametrize("model", CLAUDE_FABLE_MODELS) def test_claude_fable_models_match_deepnews_and_alert_report_contracts(model): assert model in get_args(DeepNewsModel)