mirror of https://github.com/aliasrobotics/cai.git
change gpt-4o and install in .yml
This commit is contained in:
parent
58a0aaaae8
commit
bd33d3fd67
|
|
@ -9,6 +9,7 @@
|
||||||
<<: *use_base_container
|
<<: *use_base_container
|
||||||
script:
|
script:
|
||||||
- pip3 install -e .
|
- pip3 install -e .
|
||||||
|
- pip install inline-snapshot pytest-asyncio graphviz pytest-mock
|
||||||
- pytest -s $TEST_PATH
|
- pytest -s $TEST_PATH
|
||||||
tags:
|
tags:
|
||||||
- p40
|
- p40
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,8 @@ from cai.sdk.agents import (
|
||||||
generation_span,
|
generation_span,
|
||||||
)
|
)
|
||||||
from cai.sdk.agents.models.fake_id import FAKE_RESPONSES_ID
|
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.allow_call_model_methods
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
|
|
@ -57,7 +58,7 @@ async def test_get_response_with_text_message(monkeypatch) -> None:
|
||||||
return chat
|
return chat
|
||||||
|
|
||||||
monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response)
|
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(
|
resp: ModelResponse = await model.get_response(
|
||||||
system_instructions=None,
|
system_instructions=None,
|
||||||
input="",
|
input="",
|
||||||
|
|
@ -105,7 +106,7 @@ async def test_get_response_with_refusal(monkeypatch) -> None:
|
||||||
return chat
|
return chat
|
||||||
|
|
||||||
monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response)
|
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(
|
resp: ModelResponse = await model.get_response(
|
||||||
system_instructions=None,
|
system_instructions=None,
|
||||||
input="",
|
input="",
|
||||||
|
|
@ -154,7 +155,7 @@ async def test_get_response_with_tool_call(monkeypatch) -> None:
|
||||||
return chat
|
return chat
|
||||||
|
|
||||||
monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response)
|
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(
|
resp: ModelResponse = await model.get_response(
|
||||||
system_instructions=None,
|
system_instructions=None,
|
||||||
input="",
|
input="",
|
||||||
|
|
@ -208,7 +209,7 @@ async def test_fetch_response_non_stream(monkeypatch) -> None:
|
||||||
)
|
)
|
||||||
completions = DummyCompletions()
|
completions = DummyCompletions()
|
||||||
dummy_client = DummyClient(completions)
|
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.
|
# Execute the private fetch with a system instruction and simple string input.
|
||||||
with generation_span(disabled=True) as span:
|
with generation_span(disabled=True) as span:
|
||||||
result = await model._fetch_response(
|
result = await model._fetch_response(
|
||||||
|
|
@ -227,7 +228,7 @@ async def test_fetch_response_non_stream(monkeypatch) -> None:
|
||||||
kwargs = completions.kwargs
|
kwargs = completions.kwargs
|
||||||
assert kwargs["stream"] is False
|
assert kwargs["stream"] is False
|
||||||
assert kwargs["store"] is True
|
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]["role"] == "system"
|
||||||
assert kwargs["messages"][0]["content"] == "sys"
|
assert kwargs["messages"][0]["content"] == "sys"
|
||||||
assert kwargs["messages"][1]["role"] == "user"
|
assert kwargs["messages"][1]["role"] == "user"
|
||||||
|
|
@ -265,7 +266,7 @@ async def test_fetch_response_stream(monkeypatch) -> None:
|
||||||
|
|
||||||
completions = DummyCompletions()
|
completions = DummyCompletions()
|
||||||
dummy_client = DummyClient(completions)
|
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:
|
with generation_span(disabled=True) as span:
|
||||||
response, stream = await model._fetch_response(
|
response, stream = await model._fetch_response(
|
||||||
system_instructions=None,
|
system_instructions=None,
|
||||||
|
|
@ -285,7 +286,7 @@ async def test_fetch_response_stream(monkeypatch) -> None:
|
||||||
# Response is a proper openai Response
|
# Response is a proper openai Response
|
||||||
assert isinstance(response, Response)
|
assert isinstance(response, Response)
|
||||||
assert response.id == FAKE_RESPONSES_ID
|
assert response.id == FAKE_RESPONSES_ID
|
||||||
assert response.model == "gpt-4"
|
assert response.model == cai_model
|
||||||
assert response.object == "response"
|
assert response.object == "response"
|
||||||
assert response.output == []
|
assert response.output == []
|
||||||
# We returned the async iterator produced by our dummy.
|
# We returned the async iterator produced by our dummy.
|
||||||
|
|
|
||||||
|
|
@ -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_chatcompletions import OpenAIChatCompletionsModel
|
||||||
from cai.sdk.agents.models.openai_provider import OpenAIProvider
|
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.allow_call_model_methods
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
|
|
@ -69,7 +71,7 @@ async def test_stream_response_yields_events_for_text_content(monkeypatch) -> No
|
||||||
return resp, fake_stream()
|
return resp, fake_stream()
|
||||||
|
|
||||||
monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response)
|
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 = []
|
output_events = []
|
||||||
async for event in model.stream_response(
|
async for event in model.stream_response(
|
||||||
system_instructions=None,
|
system_instructions=None,
|
||||||
|
|
@ -158,7 +160,7 @@ async def test_stream_response_yields_events_for_refusal_content(monkeypatch) ->
|
||||||
return resp, fake_stream()
|
return resp, fake_stream()
|
||||||
|
|
||||||
monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response)
|
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 = []
|
output_events = []
|
||||||
async for event in model.stream_response(
|
async for event in model.stream_response(
|
||||||
system_instructions=None,
|
system_instructions=None,
|
||||||
|
|
@ -245,7 +247,7 @@ async def test_stream_response_yields_events_for_tool_call(monkeypatch) -> None:
|
||||||
return resp, fake_stream()
|
return resp, fake_stream()
|
||||||
|
|
||||||
monkeypatch.setattr(OpenAIChatCompletionsModel, "_fetch_response", patched_fetch_response)
|
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 = []
|
output_events = []
|
||||||
async for event in model.stream_response(
|
async for event in model.stream_response(
|
||||||
system_instructions=None,
|
system_instructions=None,
|
||||||
|
|
|
||||||
|
|
@ -9,22 +9,25 @@ from cai.sdk.agents.models.openai_provider import OpenAIProvider
|
||||||
from cai.sdk.agents.models.openai_responses import OpenAIResponsesModel
|
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):
|
def test_cc_no_default_key_errors(monkeypatch):
|
||||||
monkeypatch.delenv("OPENAI_API_KEY", raising=False)
|
monkeypatch.delenv("OPENAI_API_KEY", raising=False)
|
||||||
with pytest.raises(openai.OpenAIError):
|
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():
|
def test_cc_set_default_openai_key():
|
||||||
set_default_openai_key("test_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
|
assert chat_model._client.api_key == "test_key" # type: ignore
|
||||||
|
|
||||||
|
|
||||||
def test_cc_set_default_openai_client():
|
def test_cc_set_default_openai_client():
|
||||||
client = openai.AsyncOpenAI(api_key="test_key")
|
client = openai.AsyncOpenAI(api_key="test_key")
|
||||||
set_default_openai_client(client)
|
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
|
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)
|
monkeypatch.delenv("OPENAI_API_KEY", raising=False)
|
||||||
assert os.getenv("OPENAI_API_KEY") is None
|
assert os.getenv("OPENAI_API_KEY") is None
|
||||||
with pytest.raises(openai.OpenAIError):
|
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():
|
def test_resp_set_default_openai_key():
|
||||||
set_default_openai_key("test_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
|
assert resp_model._client.api_key == "test_key" # type: ignore
|
||||||
|
|
||||||
|
|
||||||
def test_resp_set_default_openai_client():
|
def test_resp_set_default_openai_client():
|
||||||
client = openai.AsyncOpenAI(api_key="test_key")
|
client = openai.AsyncOpenAI(api_key="test_key")
|
||||||
set_default_openai_client(client)
|
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
|
assert resp_model._client.api_key == "test_key" # type: ignore
|
||||||
|
|
||||||
|
|
||||||
def test_set_default_openai_api():
|
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"
|
"Default should be responses"
|
||||||
)
|
)
|
||||||
|
|
||||||
set_default_openai_api("chat_completions")
|
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"
|
"Should be chat completions model"
|
||||||
)
|
)
|
||||||
|
|
||||||
set_default_openai_api("responses")
|
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"
|
"Should be responses model"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue