1818from zhipuai .types .embeddings import Embedding , EmbeddingsResponded
1919from zhipuai .types .file_object import FileObject , ListOfFileObject
2020from zhipuai .types .fine_tuning import FineTuningJobEvent
21- from zhipuai .types .fine_tuning .fine_tuning_job import FineTuningJob , ListOfFineTuningJob
21+ from zhipuai .types .fine_tuning .fine_tuning_job import FineTuningJob , ListOfFineTuningJob , Error
2222from zhipuai .types .fine_tuning .fine_tuning_job_event import Metric , JobEvent
2323from zhipuai .types .fine_tuning .job_create_params import Hyperparameters
24+ from zhipuai .types .fine_tuning .fine_tuning_job import Hyperparameters as FineTuningHyperparameters
2425from zhipuai .types .fine_tuning .models import FineTunedModelsStatus
2526from zhipuai .types .image import GeneratedImage , ImagesResponded
2627
@@ -200,27 +201,31 @@ def test_response_job_model_cast(
200201 MockClient ._process_response_data = HttpClient ._process_response_data
201202 response = httpx .Response (
202203 status_code = 200 ,
203- content = """{
204- "object": "job_event",
205- "id": "event123",
206- "type": "training",
207- "created_at": 1617181723,
208- "level": "info",
209- "message": "Training has started.",
210- "data": {
211- "epoch": 1,
212- "current_steps": 100,
213- "total_steps": 1000,
214- "elapsed_time": "00:10:00",
215- "remaining_time": "05:20:00",
216- "trained_tokens": 500000,
217- "loss": 0.05,
218- "eval_loss": 0.03,
219- "acc": 0.9,
220- "eval_acc": 0.95,
221- "learning_rate": 0.001
222- }
223- }"""
204+ content = """ {
205+ "id": "job123",
206+ "request_id": "req456",
207+ "created_at": 1617181723,
208+ "error": {
209+ "code": "404",
210+ "message": "Not Found",
211+ "param": "model_id"
212+ },
213+ "fine_tuned_model": "ft_model_1",
214+ "finished_at": 1617182000,
215+ "hyperparameters": {
216+ "n_epochs": 10
217+ },
218+ "model": "base_model",
219+ "object": "fine_tuning_job",
220+ "result_files": [
221+ "result1.txt",
222+ "result2.json"
223+ ],
224+ "status": "completed",
225+ "trained_tokens": 1000000,
226+ "training_file": "training_data.csv",
227+ "validation_file": "validation_data.csv"
228+ }"""
224229 )
225230
226231 http_response = HttpResponse (
@@ -234,24 +239,24 @@ def test_response_job_model_cast(
234239
235240 assert R == model .__class__
236241 assert isinstance (model , FineTuningJob )
237- assert model .object == "job_event"
238- assert model .id == "event123"
239- assert model .type == "training"
242+ assert model .id == "job123"
243+ assert model .request_id == "req456"
240244 assert model .created_at == 1617181723
241- assert model .level == "info"
242- assert model .message == "Training has started."
243- assert isinstance (model .data , Metric )
244- assert model .data .epoch == 1
245- assert model .data .current_steps == 100
246- assert model .data .total_steps == 1000
247- assert model .data .elapsed_time == "00:10:00"
248- assert model .data .remaining_time == "05:20:00"
249- assert model .data .trained_tokens == 500000
250- assert model .data .loss == 0.05
251- assert model .data .eval_loss == 0.03
252- assert model .data .acc == 0.9
253- assert model .data .eval_acc == 0.95
254- assert model .data .learning_rate == 0.001
245+ assert isinstance (model .error , Error )
246+ assert model .error .code == "404"
247+ assert model .error .message == "Not Found"
248+ assert model .error .param == "model_id"
249+ assert model .fine_tuned_model == "ft_model_1"
250+ assert model .finished_at == 1617182000
251+ assert isinstance (model .hyperparameters , FineTuningHyperparameters )
252+ assert model .hyperparameters .n_epochs == 10
253+ assert model .model == "base_model"
254+ assert model .object == "fine_tuning_job"
255+ assert model .result_files == ["result1.txt" , "result2.json" ]
256+ assert model .status == "completed"
257+ assert model .trained_tokens == 1000000
258+ assert model .training_file == "training_data.csv"
259+ assert model .validation_file == "validation_data.csv"
255260
256261
257262@pytest .mark .parametrize (
0 commit comments