test_model_utils.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. """Unit tests for model utility functions."""
  2. from agents.models.openai_chatcompletions import OpenAIChatCompletionsModel
  3. from agents.models.openai_responses import OpenAIResponsesModel
  4. from openai import AsyncOpenAI
  5. from agency_swarm.utils.model_utils import get_model_name, is_reasoning_model
  6. def test_is_reasoning_model_case_table() -> None:
  7. """Reasoning detection should stay stable across common model identifiers."""
  8. client = AsyncOpenAI(api_key="test")
  9. cases: list[tuple[str | OpenAIResponsesModel | None, bool]] = [
  10. ("o3", True),
  11. ("o4-mini", True),
  12. ("gpt-5.4", True),
  13. ("gpt-5.4-mini", True),
  14. (OpenAIResponsesModel(model="openai/gpt-5.4-mini", openai_client=client), True),
  15. ("gpt-4.1", False),
  16. (None, False),
  17. ("", False),
  18. ]
  19. for model_name, expected in cases:
  20. assert is_reasoning_model(model_name) is expected
  21. def test_get_model_name_from_openai_model_objects() -> None:
  22. """Model-name extraction should work for both Responses and Chat models."""
  23. client = AsyncOpenAI(api_key="test")
  24. cases = [
  25. OpenAIResponsesModel(model="gpt-5.4-mini", openai_client=client),
  26. OpenAIChatCompletionsModel(model="gpt-5.4-mini", openai_client=client),
  27. ]
  28. for model in cases:
  29. assert get_model_name(model) == "gpt-5.4-mini"