feat: OpenAI 兼容的 chat completion API(流式+非流式+usage)

This commit is contained in:
2026-05-08 21:54:55 +08:00
parent 4e324d8f26
commit f81e2b4a73
3 changed files with 163 additions and 121 deletions
+7 -19
View File
@@ -14,21 +14,6 @@ def client():
return TestClient(app)
@pytest.fixture
def mock_model_param():
"""Create a mock ModelParameter."""
mock_param = MagicMock()
mock_param.model = MagicMock()
mock_param.tokenizer = MagicMock()
mock_param.config = MagicMock()
mock_param.config.max_len = 100
mock_param.tokenizer.encode = MagicMock(return_value=[1, 2, 3])
mock_param.tokenizer.decode = MagicMock(return_value="mock response")
mock_param.tokenizer.stop_ids = []
mock_param.tokenizer.pad_id = 0
return mock_param
@pytest.fixture
def mock_engine():
"""Create a mock InferenceEngine."""
@@ -47,11 +32,14 @@ def mock_engine():
"active_tasks": 0,
"waiting_queue": 0,
}
mock.tokenizer.encode.return_value = [1, 2, 3]
mock.tokenizer.decode.return_value = "mock response"
mock.tokenizer.apply_chat_template.return_value = "mock prompt"
return mock
@pytest.fixture
def loaded_model(mock_model_param, monkeypatch):
"""Simulate that the model is loaded."""
monkeypatch.setattr("astrai.inference.server._state.model_param", mock_model_param)
return mock_model_param
def loaded_model(mock_engine, monkeypatch):
"""Simulate that the engine is loaded."""
monkeypatch.setattr("astrai.inference.server._state.engine", mock_engine)
return mock_engine