@@ -331,99 +331,112 @@ def get_auth_value(key):
331331 fireworks_api_key = get_auth_value ("FIREWORKS_API_KEY" )
332332 fireworks_account_id = get_auth_value ("FIREWORKS_ACCOUNT_ID" )
333333
334- if fireworks_api_key and fireworks_account_id :
335- headers = {"Authorization" : f"Bearer { fireworks_api_key } " , "Content-Type" : "application/json" }
336-
337- # Make dataset first
338- dataset_url = f"https://api.fireworks.ai/v1/accounts/{ fireworks_account_id } /datasets"
339-
340- dataset_payload = {
341- "dataset" : {
342- "displayName" : dataset_name ,
343- "evalProtocol" : {},
344- "format" : "FORMAT_UNSPECIFIED" ,
345- "exampleCount" : f"{ len (exp_rows )} " ,
346- },
347- "datasetId" : dataset_name ,
348- }
349-
350- dataset_response = requests .post (dataset_url , json = dataset_payload , headers = headers )
351-
352- # Skip if dataset creation failed
353- if dataset_response .status_code not in [200 , 201 ]:
354- _store_experiment_link (
355- experiment_id ,
356- f"Dataset creation failed: { dataset_response .status_code } { dataset_response .text } " ,
357- "failure" ,
358- )
359- continue
334+ if not (fireworks_api_key and fireworks_account_id ):
335+ _store_experiment_link (
336+ experiment_id ,
337+ "No Fireworks API key AND account ID found" ,
338+ "failure" ,
339+ )
340+ continue
341+ elif not fireworks_api_key :
342+ _store_experiment_link (
343+ experiment_id ,
344+ "No Fireworks API key found" ,
345+ "failure" ,
346+ )
347+ continue
348+ elif not fireworks_account_id :
349+ _store_experiment_link (
350+ experiment_id ,
351+ "No Fireworks account ID found" ,
352+ "failure" ,
353+ )
354+ continue
355+
356+ headers = {"Authorization" : f"Bearer { fireworks_api_key } " , "Content-Type" : "application/json" }
357+
358+ # Make dataset first
359+ dataset_url = f"https://api.fireworks.ai/v1/accounts/{ fireworks_account_id } /datasets"
360+
361+ dataset_payload = {
362+ "dataset" : {
363+ "displayName" : dataset_name ,
364+ "evalProtocol" : {},
365+ "format" : "FORMAT_UNSPECIFIED" ,
366+ "exampleCount" : f"{ len (exp_rows )} " ,
367+ },
368+ "datasetId" : dataset_name ,
369+ }
370+
371+ dataset_response = requests .post (dataset_url , json = dataset_payload , headers = headers )
372+
373+ # Skip if dataset creation failed
374+ if dataset_response .status_code not in [200 , 201 ]:
375+ _store_experiment_link (
376+ experiment_id ,
377+ f"Dataset creation failed: { dataset_response .status_code } { dataset_response .text } " ,
378+ "failure" ,
379+ )
380+ continue
360381
361- dataset_data = dataset_response .json ()
362- dataset_id = dataset_data .get ("datasetId" , dataset_name )
382+ dataset_data = dataset_response .json ()
383+ dataset_id = dataset_data .get ("datasetId" , dataset_name )
363384
364- # Upload the JSONL file content
365- upload_url = (
366- f"https://api.fireworks.ai/v1/accounts/{ fireworks_account_id } /datasets/{ dataset_id } :upload"
385+ # Upload the JSONL file content
386+ upload_url = (
387+ f"https://api.fireworks.ai/v1/accounts/{ fireworks_account_id } /datasets/{ dataset_id } :upload"
388+ )
389+ upload_headers = {"Authorization" : f"Bearer { fireworks_api_key } " }
390+
391+ with open (exp_file , "rb" ) as f :
392+ files = {"file" : f }
393+ upload_response = requests .post (upload_url , files = files , headers = upload_headers )
394+
395+ # Skip if upload failed
396+ if upload_response .status_code not in [200 , 201 ]:
397+ _store_experiment_link (
398+ experiment_id ,
399+ f"File upload failed: { upload_response .status_code } { upload_response .text } " ,
400+ "failure" ,
367401 )
368- upload_headers = {"Authorization" : f"Bearer { fireworks_api_key } " }
369-
370- with open (exp_file , "rb" ) as f :
371- files = {"file" : f }
372- upload_response = requests .post (upload_url , files = files , headers = upload_headers )
373-
374- # Skip if upload failed
375- if upload_response .status_code not in [200 , 201 ]:
376- _store_experiment_link (
377- experiment_id ,
378- f"File upload failed: { upload_response .status_code } { upload_response .text } " ,
379- "failure" ,
380- )
381- continue
382-
383- # Create evaluation job (optional - don't skip experiment if this fails)
384- eval_job_url = f"https://api.fireworks.ai/v1/accounts/{ fireworks_account_id } /evaluationJobs"
385- # Truncate job ID to fit 63 character limit
386- job_id_base = f"{ dataset_name } -job"
387- if len (job_id_base ) > 63 :
388- # Keep the "-job" suffix and truncate the dataset_name part
389- max_dataset_name_len = 63 - 4 # 4 = len("-job")
390- truncated_dataset_name = dataset_name [:max_dataset_name_len ]
391- job_id_base = f"{ truncated_dataset_name } -job"
392-
393- eval_job_payload = {
394- "evaluationJobId" : job_id_base ,
395- "evaluationJob" : {
396- "evaluator" : f"accounts/{ fireworks_account_id } /evaluators/dummy" ,
397- "inputDataset" : f"accounts/{ fireworks_account_id } /datasets/dummy" ,
398- "outputDataset" : f"accounts/{ fireworks_account_id } /datasets/{ dataset_id } " ,
399- },
400- }
401-
402- eval_response = requests .post (eval_job_url , json = eval_job_payload , headers = headers )
403-
404- if eval_response .status_code in [200 , 201 ]:
405- eval_job_data = eval_response .json ()
406- job_id = eval_job_data .get ("evaluationJobId" , job_id_base )
407-
408- _store_experiment_link (
409- experiment_id ,
410- f"https://app.fireworks.ai/dashboard/evaluation-jobs/{ job_id } " ,
411- "success" ,
412- )
413- else :
414- _store_experiment_link (
415- experiment_id ,
416- f"Job creation failed: { eval_response .status_code } { eval_response .text } " ,
417- "failure" ,
418- )
402+ continue
419403
404+ # Create evaluation job (optional - don't skip experiment if this fails)
405+ eval_job_url = f"https://api.fireworks.ai/v1/accounts/{ fireworks_account_id } /evaluationJobs"
406+ # Truncate job ID to fit 63 character limit
407+ job_id_base = f"{ dataset_name } -job"
408+ if len (job_id_base ) > 63 :
409+ # Keep the "-job" suffix and truncate the dataset_name part
410+ max_dataset_name_len = 63 - 4 # 4 = len("-job")
411+ truncated_dataset_name = dataset_name [:max_dataset_name_len ]
412+ job_id_base = f"{ truncated_dataset_name } -job"
413+
414+ eval_job_payload = {
415+ "evaluationJobId" : job_id_base ,
416+ "evaluationJob" : {
417+ "evaluator" : f"accounts/{ fireworks_account_id } /evaluators/dummy" ,
418+ "inputDataset" : f"accounts/{ fireworks_account_id } /datasets/dummy" ,
419+ "outputDataset" : f"accounts/{ fireworks_account_id } /datasets/{ dataset_id } " ,
420+ },
421+ }
422+
423+ eval_response = requests .post (eval_job_url , json = eval_job_payload , headers = headers )
424+
425+ if eval_response .status_code in [200 , 201 ]:
426+ eval_job_data = eval_response .json ()
427+ job_id = eval_job_data .get ("evaluationJobId" , job_id_base )
428+
429+ _store_experiment_link (
430+ experiment_id ,
431+ f"https://app.fireworks.ai/dashboard/evaluation-jobs/{ job_id } " ,
432+ "success" ,
433+ )
420434 else :
421- # Store failure for missing credentials for all experiments
422- for experiment_id , exp_rows in experiments .items ():
423- if experiment_id and exp_rows :
424- _store_experiment_link (
425- experiment_id , "No Fireworks API key or account ID found" , "failure"
426- )
435+ _store_experiment_link (
436+ experiment_id ,
437+ f"Job creation failed: { eval_response .status_code } { eval_response .text } " ,
438+ "failure" ,
439+ )
427440
428441 except Exception as e :
429442 # Do not fail evaluation if experiment JSONL writing fails
0 commit comments