From af171972ac486f5184bffcc689dfac82d2f7431b Mon Sep 17 00:00:00 2001 From: Wei Wu Date: Thu, 22 Jan 2026 00:47:48 -0800 Subject: [PATCH 1/4] Sample code for ScoreModelGrader with audio --- ...aluations_score_model_grader_with_audio.py | 203 ++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py diff --git a/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py b/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py new file mode 100644 index 000000000000..8004c5a79c35 --- /dev/null +++ b/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py @@ -0,0 +1,203 @@ +# pylint: disable=line-too-long,useless-suppression +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +""" +DESCRIPTION: + Given an AIProjectClient, this sample demonstrates how to use the synchronous + `openai.evals.*` methods to create, get and list evaluation and eval runs. + + The OpenAI official tutorial is here: https://cookbook.openai.com/examples/evaluation/use-cases/evalsapi_audio_inputs + +USAGE: + python sample_evaluations_score_model_grader_with_audio.py + + Before running the sample: + + pip install "azure-ai-projects>=2.0.0b2" azure-identity python-dotenv + + Set these environment variables with your own values: + 1) AZURE_AI_PROJECT_ENDPOINT - Required. The Azure AI Project endpoint, as found in the overview page of your + Microsoft Foundry project. It has the form: https://.services.ai.azure.com/api/projects/. + 2) AZURE_AI_MODEL_DEPLOYMENT_NAME - Required. The name of the model deployment to use for evaluation. + 3) AZURE_AI_MODEL_DEPLOYMENT_NAME_FOR_AUDIO - Required. The name of the model deployment for audio to use for evaluation, recommend to use "gpt-4o-audio-preview" +""" + +import os +import base64 + +from azure.identity import DefaultAzureCredential +from azure.ai.projects import AIProjectClient +import time +from pprint import pprint +from openai.types.evals.create_eval_completions_run_data_source_param import ( + CreateEvalCompletionsRunDataSourceParam, + SourceFileContent, + SourceFileContentContent, + InputMessagesTemplate, + InputMessagesTemplateTemplateEvalItem, +) +from openai.types.responses import EasyInputMessageParam, ResponseInputAudioParam +from openai.types.eval_create_params import DataSourceConfigCustom +from dotenv import load_dotenv + + +load_dotenv() +file_path = os.path.abspath(__file__) +folder_path = os.path.dirname(file_path) + +endpoint = os.environ.get("AZURE_AI_PROJECT_ENDPOINT", "") +model_deployment_name = os.environ.get("AZURE_AI_MODEL_DEPLOYMENT_NAME", "") +model_deployment_name_for_audio = os.environ.get("AZURE_AI_MODEL_DEPLOYMENT_NAME_FOR_AUDIO", "") + + +def audio_to_base64(audio_path: str) -> str: + """Read an audio file and return its base64-encoded content.""" + with open(audio_path, "rb") as f: + return base64.b64encode(f.read()).decode() + + +with ( + DefaultAzureCredential() as credential, + AIProjectClient(endpoint=endpoint, credential=credential) as project_client, + project_client.get_openai_client() as client, +): + + data_source_config = DataSourceConfigCustom( + { + "type": "custom", + "item_schema": { + "type": "object", + "properties": { + "audio_data": { + "type": "string", + "description": "Base64-encoded WAV audio data." + }, + "expected": { + "type": "string", + "description": "The expected content in the audio." + } + }, + "required": [ + "audio_data", + "expected", + ], + }, + "include_sample_schema": True, + } + ) + + testing_criteria = [ + { + "type": "score_model", + "name": "score_grader", + "model": model_deployment_name, + "input": [ + { + "role": "system", + "content": "You are an audio analyzer. Listen to the audio, return a float score in [0,1] where 1 means the audio has the same meaning as {{item.expected}}.", + }, + { + "role": "user", + "content": "{{sample.output_text}}", + } + ], + "range": [ + 0.0, + 1.0 + ], + "pass_threshold": 0.5, + }, + ] + + print("Creating evaluation") + eval_object = client.evals.create( + name="OpenAI graders test", + data_source_config=data_source_config, + testing_criteria=testing_criteria, # type: ignore + ) + print(f"Evaluation created (id: {eval_object.id}, name: {eval_object.name})") + + print("Get evaluation by Id") + eval_object_response = client.evals.retrieve(eval_object.id) + print("Evaluation Response:") + pprint(eval_object_response) + + sourceFileContentContent = SourceFileContentContent( + item={ + "audio_data": audio_to_base64(os.path.join(folder_path, "data_folder/sample_evaluations_score_model_grader_with_audio.wav")), + "expected": "Don't forget a jacket", + }, + ) + sourceFileContent = SourceFileContent( + type="file_content", + content=[sourceFileContentContent], + ) + inputMessages = InputMessagesTemplate( + type="template", + template=[ + EasyInputMessageParam( + role="system", + content="You are an assistant that can analyze audio input. You will be given an audio input to analyze.", + ), + InputMessagesTemplateTemplateEvalItem( + role="user", + type="message", + content="Listen to the following audio and convert to text.", + ), + InputMessagesTemplateTemplateEvalItem( + role="user", + type="message", + content=ResponseInputAudioParam( + type="input_audio", + input_audio={ + "data": "{{item.audio_data}}", + "format": "wav", + } + ) + ) + ], + ) + + print("Creating Eval Run") + eval_run_object = client.evals.runs.create( + eval_id=eval_object.id, + name="Eval", + metadata={"team": "eval-exp", "scenario": "notifications-v1"}, + data_source=CreateEvalCompletionsRunDataSourceParam( + type="completions", + source=sourceFileContent, + model=model_deployment_name_for_audio, + input_messages=inputMessages, + sampling_params={ + "temperature": 0.8, + }, + modalities=[ + "text", + "audio" + ], + ), + ) + print(f"Eval Run created (id: {eval_run_object.id}, name: {eval_run_object.name})") + pprint(eval_run_object) + + print("Get Eval Run by Id") + eval_run_response = client.evals.runs.retrieve(run_id=eval_run_object.id, eval_id=eval_object.id) + print("Eval Run Response:") + pprint(eval_run_response) + + while True: + run = client.evals.runs.retrieve(run_id=eval_run_response.id, eval_id=eval_object.id) + if run.status == "completed" or run.status == "failed": + output_items = list(client.evals.runs.output_items.list(run_id=run.id, eval_id=eval_object.id)) + pprint(output_items) + print(f"Eval Run Report URL: {run.report_url}") + + break + time.sleep(5) + print("Waiting for eval run to complete...") + + client.evals.delete(eval_id=eval_object.id) + print("Evaluation deleted") From b1ccdc037093027749bd40ed7259823df5d07a7f Mon Sep 17 00:00:00 2001 From: David Wu Date: Thu, 22 Jan 2026 09:22:36 -0800 Subject: [PATCH 2/4] Update sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../sample_evaluations_score_model_grader_with_audio.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py b/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py index 8004c5a79c35..43d0ea9cae57 100644 --- a/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py +++ b/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py @@ -7,7 +7,7 @@ """ DESCRIPTION: Given an AIProjectClient, this sample demonstrates how to use the synchronous - `openai.evals.*` methods to create, get and list evaluation and eval runs. + `openai.evals.*` methods to create, get, and list evaluations and eval runs. The OpenAI official tutorial is here: https://cookbook.openai.com/examples/evaluation/use-cases/evalsapi_audio_inputs From cc5efeff83ed0f708d8f55fe0cbe82a057d7a240 Mon Sep 17 00:00:00 2001 From: Wei Wu Date: Thu, 22 Jan 2026 09:27:18 -0800 Subject: [PATCH 3/4] Address PR comments --- ...valuations_score_model_grader_with_audio.wav | Bin 0 -> 69446 bytes ...evaluations_score_model_grader_with_audio.py | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 sdk/ai/azure-ai-projects/samples/evaluations/data_folder/sample_evaluations_score_model_grader_with_audio.wav diff --git a/sdk/ai/azure-ai-projects/samples/evaluations/data_folder/sample_evaluations_score_model_grader_with_audio.wav b/sdk/ai/azure-ai-projects/samples/evaluations/data_folder/sample_evaluations_score_model_grader_with_audio.wav new file mode 100644 index 0000000000000000000000000000000000000000..6ce78c4215b33ece0bc1874445a51d30bf7af052 GIT binary patch literal 69446 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 literal 0 HcmV?d00001 diff --git a/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py b/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py index 43d0ea9cae57..46955482a758 100644 --- a/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py +++ b/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py @@ -125,17 +125,17 @@ def audio_to_base64(audio_path: str) -> str: print("Evaluation Response:") pprint(eval_object_response) - sourceFileContentContent = SourceFileContentContent( + source_file_content_content = SourceFileContentContent( item={ "audio_data": audio_to_base64(os.path.join(folder_path, "data_folder/sample_evaluations_score_model_grader_with_audio.wav")), "expected": "Don't forget a jacket", }, ) - sourceFileContent = SourceFileContent( + source_file_content = SourceFileContent( type="file_content", - content=[sourceFileContentContent], + content=[source_file_content_content], ) - inputMessages = InputMessagesTemplate( + input_messages = InputMessagesTemplate( type="template", template=[ EasyInputMessageParam( @@ -168,9 +168,9 @@ def audio_to_base64(audio_path: str) -> str: metadata={"team": "eval-exp", "scenario": "notifications-v1"}, data_source=CreateEvalCompletionsRunDataSourceParam( type="completions", - source=sourceFileContent, + source=source_file_content, model=model_deployment_name_for_audio, - input_messages=inputMessages, + input_messages=input_messages, sampling_params={ "temperature": 0.8, }, From 1e916fec2f718937b573e5c6214a8998dc642f3f Mon Sep 17 00:00:00 2001 From: Wei Wu Date: Thu, 22 Jan 2026 20:50:19 -0800 Subject: [PATCH 4/4] Remove modalities field --- .../sample_evaluations_score_model_grader_with_audio.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py b/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py index 46955482a758..64a7445a6b57 100644 --- a/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py +++ b/sdk/ai/azure-ai-projects/samples/evaluations/sample_evaluations_score_model_grader_with_audio.py @@ -174,11 +174,7 @@ def audio_to_base64(audio_path: str) -> str: sampling_params={ "temperature": 0.8, }, - modalities=[ - "text", - "audio" - ], - ), + ) ) print(f"Eval Run created (id: {eval_run_object.id}, name: {eval_run_object.name})") pprint(eval_run_object)