diff --git a/ci/test/.test.yml b/ci/test/.test.yml index 15e2ca14..e562d9d5 100644 --- a/ci/test/.test.yml +++ b/ci/test/.test.yml @@ -9,6 +9,7 @@ <<: *use_base_container script: - pip3 install -e . + - pip install inline-snapshot pytest-asyncio graphviz pytest-mock - pytest -s $TEST_PATH tags: - p40 diff --git a/tests/core/test_openai_chatcompletions.py b/tests/core/test_openai_chatcompletions.py index a29167e9..7053fa5b 100644 --- a/tests/core/test_openai_chatcompletions.py +++ b/tests/core/test_openai_chatcompletions.py @@ -31,7 +31,8 @@ from cai.sdk.agents import ( generation_span, ) from cai.sdk.agents.models.fake_id import FAKE_RESPONSES_ID - +import os +cai_model = os.getenv('CAI_MODEL', "qwen2.5:14b") @pytest.mark.allow_call_model_methods @pytest.mark.asyncio @@ -57,7 +58,7 @@ async def test_get_response_with_text_message(monkeypatch) -> None: return chat monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response) - model = OpenAIProvider(use_responses=False).get_model("gpt-4") + model = OpenAIProvider(use_responses=False).get_model(cai_model) resp: ModelResponse = await model.get_response( system_instructions=None, input="", @@ -105,7 +106,7 @@ async def test_get_response_with_refusal(monkeypatch) -> None: return chat monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response) - model = OpenAIProvider(use_responses=False).get_model("gpt-4") + model = OpenAIProvider(use_responses=False).get_model(cai_model) resp: ModelResponse = await model.get_response( system_instructions=None, input="", @@ -154,7 +155,7 @@ async def test_get_response_with_tool_call(monkeypatch) -> None: return chat monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response) - model = OpenAIProvider(use_responses=False).get_model("gpt-4") + model = OpenAIProvider(use_responses=False).get_model(cai_model) resp: ModelResponse = await model.get_response( system_instructions=None, input="", @@ -208,7 +209,7 @@ async def test_fetch_response_non_stream(monkeypatch) -> None: ) completions = DummyCompletions() dummy_client = DummyClient(completions) - model = OpenAIChatCompletionsModel(model="gpt-4", openai_client=dummy_client) # type: ignore + model = OpenAIChatCompletionsModel(model=cai_model, openai_client=dummy_client) # type: ignore # Execute the private fetch with a system instruction and simple string input. with generation_span(disabled=True) as span: result = await model._fetch_response( @@ -227,7 +228,7 @@ async def test_fetch_response_non_stream(monkeypatch) -> None: kwargs = completions.kwargs assert kwargs["stream"] is False assert kwargs["store"] is True - assert kwargs["model"] == "gpt-4" + assert kwargs["model"] == cai_model assert kwargs["messages"][0]["role"] == "system" assert kwargs["messages"][0]["content"] == "sys" assert kwargs["messages"][1]["role"] == "user" @@ -265,7 +266,7 @@ async def test_fetch_response_stream(monkeypatch) -> None: completions = DummyCompletions() dummy_client = DummyClient(completions) - model = OpenAIChatCompletionsModel(model="gpt-4", openai_client=dummy_client) # type: ignore + model = OpenAIChatCompletionsModel(model=cai_model, openai_client=dummy_client) # type: ignore with generation_span(disabled=True) as span: response, stream = await model._fetch_response( system_instructions=None, @@ -285,7 +286,7 @@ async def test_fetch_response_stream(monkeypatch) -> None: # Response is a proper openai Response assert isinstance(response, Response) assert response.id == FAKE_RESPONSES_ID - assert response.model == "gpt-4" + assert response.model == cai_model assert response.object == "response" assert response.output == [] # We returned the async iterator produced by our dummy. diff --git a/tests/core/test_openai_chatcompletions_stream.py b/tests/core/test_openai_chatcompletions_stream.py index e2227b7e..f17606b9 100644 --- a/tests/core/test_openai_chatcompletions_stream.py +++ b/tests/core/test_openai_chatcompletions_stream.py @@ -22,6 +22,8 @@ from cai.sdk.agents.models.interface import ModelTracing from cai.sdk.agents.models.openai_chatcompletions import OpenAIChatCompletionsModel from cai.sdk.agents.models.openai_provider import OpenAIProvider +import os +cai_model = os.getenv('CAI_MODEL', "qwen2.5:14b") @pytest.mark.allow_call_model_methods @pytest.mark.asyncio @@ -69,7 +71,7 @@ async def test_stream_response_yields_events_for_text_content(monkeypatch) -> No return resp, fake_stream() monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response) - model = OpenAIProvider(use_responses=False).get_model("gpt-4") + model = OpenAIProvider(use_responses=False).get_model(cai_model) output_events = [] async for event in model.stream_response( system_instructions=None, @@ -158,7 +160,7 @@ async def test_stream_response_yields_events_for_refusal_content(monkeypatch) -> return resp, fake_stream() monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response) - model = OpenAIProvider(use_responses=False).get_model("gpt-4") + model = OpenAIProvider(use_responses=False).get_model(cai_model) output_events = [] async for event in model.stream_response( system_instructions=None, @@ -245,7 +247,7 @@ async def test_stream_response_yields_events_for_tool_call(monkeypatch) -> None: return resp, fake_stream() monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response) - model = OpenAIProvider(use_responses=False).get_model("gpt-4") + model = OpenAIProvider(use_responses=False).get_model(cai_model) output_events = [] async for event in model.stream_response( system_instructions=None, diff --git a/tests/others/test_config.py b/tests/others/test_config.py index 2b52f8cc..f5de277b 100644 --- a/tests/others/test_config.py +++ b/tests/others/test_config.py @@ -9,22 +9,25 @@ from cai.sdk.agents.models.openai_provider import OpenAIProvider from cai.sdk.agents.models.openai_responses import OpenAIResponsesModel +import os +cai_model = os.getenv('CAI_MODEL', "qwen2.5:14b") + def test_cc_no_default_key_errors(monkeypatch): monkeypatch.delenv("OPENAI_API_KEY", raising=False) with pytest.raises(openai.OpenAIError): - OpenAIProvider(use_responses=False).get_model("gpt-4") + OpenAIProvider(use_responses=False).get_model(cai_model) def test_cc_set_default_openai_key(): set_default_openai_key("test_key") - chat_model = OpenAIProvider(use_responses=False).get_model("gpt-4") + chat_model = OpenAIProvider(use_responses=False).get_model(cai_model) assert chat_model._client.api_key == "test_key" # type: ignore def test_cc_set_default_openai_client(): client = openai.AsyncOpenAI(api_key="test_key") set_default_openai_client(client) - chat_model = OpenAIProvider(use_responses=False).get_model("gpt-4") + chat_model = OpenAIProvider(use_responses=False).get_model(cai_model) assert chat_model._client.api_key == "test_key" # type: ignore @@ -32,33 +35,33 @@ def test_resp_no_default_key_errors(monkeypatch): monkeypatch.delenv("OPENAI_API_KEY", raising=False) assert os.getenv("OPENAI_API_KEY") is None with pytest.raises(openai.OpenAIError): - OpenAIProvider(use_responses=True).get_model("gpt-4") + OpenAIProvider(use_responses=True).get_model(cai_model) def test_resp_set_default_openai_key(): set_default_openai_key("test_key") - resp_model = OpenAIProvider(use_responses=True).get_model("gpt-4") + resp_model = OpenAIProvider(use_responses=True).get_model(cai_model) assert resp_model._client.api_key == "test_key" # type: ignore def test_resp_set_default_openai_client(): client = openai.AsyncOpenAI(api_key="test_key") set_default_openai_client(client) - resp_model = OpenAIProvider(use_responses=True).get_model("gpt-4") + resp_model = OpenAIProvider(use_responses=True).get_model(cai_model) assert resp_model._client.api_key == "test_key" # type: ignore def test_set_default_openai_api(): - assert isinstance(OpenAIProvider().get_model("gpt-4"), OpenAIResponsesModel), ( + assert isinstance(OpenAIProvider().get_model(cai_model), OpenAIResponsesModel), ( "Default should be responses" ) set_default_openai_api("chat_completions") - assert isinstance(OpenAIProvider().get_model("gpt-4"), OpenAIChatCompletionsModel), ( + assert isinstance(OpenAIProvider().get_model(cai_model), OpenAIChatCompletionsModel), ( "Should be chat completions model" ) set_default_openai_api("responses") - assert isinstance(OpenAIProvider().get_model("gpt-4"), OpenAIResponsesModel), ( + assert isinstance(OpenAIProvider().get_model(cai_model), OpenAIResponsesModel), ( "Should be responses model" )