Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Bu belge , Microsoft Foundry (klasik) portalını ifade eder.
🔍Yeni portal hakkında bilgi edinmek için Microsoft Foundry (yeni) belgelerini görüntüleyin.
Önemli
Bu makalede işaretlenen (önizleme) öğeler şu anda genel önizleme aşamasındadır. Bu önizleme, hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.
Yapay zeka aracıları, iş ihtiyaçları için iş akışları oluşturan güçlü üretkenlik yardımcılarıdır. Ancak, karmaşık etkileşim desenleri nedeniyle gözlemlenebilirlik zordur. Bu makalede, yerleşik değerlendiricileri kullanarak Microsoft Foundry aracılarını veya diğer aracıları değerlendirmeyi öğreneceksiniz.
Üretime hazır aracı uygulamaları oluşturmak ve gözlemlenebilirlik ve saydamlık sağlamak için geliştiricilerin yalnızca aracı iş akışlarının son çıkışını değil, aynı zamanda iş akışlarının kalitesini ve verimliliğini de değerlendirecek araçlara ihtiyacı vardır.
"Yarın hava durumunu" sorgulayan bir kullanıcı gibi bir olay, aracı bir iş akışını tetikler. Son yanıtı oluşturmak için iş akışı kullanıcı amaçları, çağırma araçları ve alma artırılmış oluşturma kullanarak mantık yürütmeyi içerir.
Uyarı
Değerlendirme için Microsoft Foundry SDK'sı ve Foundry portalı genel önizleme aşamasındadır, ancak API'ler genellikle model ve veri kümesi değerlendirmesi için kullanılabilir (aracı değerlendirmesi genel önizlemede kalır). Bu makalede (önizleme) olarak işaretlenen Azure AI Değerlendirme SDK'sı ve değerlendiriciler şu anda her yerde genel önizleme aşamasındadır.
Bu süreçte, iş akışının her adımının ve nihai çıkışın kalitesinin ve güvenliğinin değerlendirilmesi çok önemlidir. Bu değerlendirme yönleri, aracılar için aşağıdaki ölçütler olarak oluşturulur.
- Amaç çözümlemesi: Aracının kullanıcının amacını doğru tanımlayıp tanımlamadığını ölçer.
- Araç çağrısı doğruluğu: Aracının kullanıcının isteğine doğru işlev aracı çağrıları yapıp yapmadığını ölçer.
- Göreve bağlılık: Aracının son yanıtının, sistem iletisine ve önceki adımlara göre atanan görevlerine bağlı olup olmadığını ölçer.
Yerleşik değerlendiricilerin kapsamlı paketini kullanarak aracı iş akışlarınızın diğer kalite ve güvenlik yönlerini değerlendirin. Genel olarak ajanlar ajan mesajlarını gönderir. Aracı iletilerini değerlendiriciler için doğru değerlendirme verilerine dönüştürmek zor olabilir. Foundry Agent Service'i kullanarak aracınızı oluşturursanız, dönüştürücü desteğimizle sorunsuz bir şekilde değerlendirebilirsiniz. Aracınızı Foundry Aracı Hizmeti dışında oluşturursanız, aracı iletilerinizi gerekli veri biçimlerinde ayrıştırarak değerlendiricileri aracı iş akışınıza uygun şekilde kullanmaya devam edebilirsiniz. Diğer aracıları değerlendirme örneklerine bakın.
Get started
Azure AI değerlendirme SDK'sından değerlendirici paketini yükleyin:
pip install azure-ai-evaluation
Microsoft Foundry aracılarını değerlendirme
Foundry Agent Service kullanıyorsanız, Microsoft Foundry aracıları ve Anlam Çekirdeği aracıları için dönüştürücü desteğimizi kullanarak aracılarınızı sorunsuz bir şekilde değerlendirebilirsiniz. Aşağıdaki değerlendiriciler dönüştürücü tarafından döndürülen değerlendirme verilerini destekler: IntentResolution, ToolCallAccuracy, TaskAdherence, Relevanceve Groundedness.
Uyarı
Farklı bir şema çıktısı veren başka aracılar oluşturuyorsanız, bunları genel OpenAI stili aracı ileti şemasına dönüştürün ve önceki değerlendiricileri kullanın. Daha genel olarak, aracı iletilerini gerekli veri biçimlerine ayrıştırabiliyorsanız, tüm değerlendiricilerimizi de kullanabilirsiniz.
Yapay zeka destekli değerlendiriciler için model desteği
AzureOpenAI ve OpenAI akıl yürütme modelleri ve mantık dışı modeller, değerlendiricilere bağlı olarak LLM yargıcını destekler:
| Değerlendiriciler | Yargıç Olarak Akıl Yürütme Modelleri (örnek: Azure OpenAI / OpenAI'den o serisi modeller) | Akıl yürütmeyen modellerin yargıç olarak kullanılması (örnek: gpt-4.1, gpt-4o vb.) | Etkinleştirmek için |
|---|---|---|---|
IntentResolution, TaskAdherence, ToolCallAccuracy, ResponseCompleteness, Coherence, Fluency, Similarity, Groundedness, Retrieval, Relevance |
Destekleniyor | Destekleniyor | Değerlendiricileri başlatırken ek parametre is_reasoning_model=True ayarlama |
| Diğer değerlendiriciler | Desteklenmiyor | Destekleniyor | -- |
İyileştirilmiş akıl yürütme gerektiren karmaşık değerlendirme için, akıl yürütme performansı ve maliyet verimliliği dengesi için gibi 4.1-mini güçlü bir akıl yürütme modeli kullanın.
Araç çağrısı değerlendirme desteği
ToolCallAccuracyEvaluator aşağıdaki araçlar için Microsoft Foundry Aracısı'nda değerlendirmeyi destekler:
- Dosya Arama
- Azure Yapay Zeka Arama
- Bing Bağlam Sağlama
- Bing Özel Arama
- SharePoint Temel Bilgilendirme
- Kod Yorumlayıcı
- Doku Veri Aracısı
- OpenAPI
- İşlev Aracı (kullanıcı tanımlı araçlar)
Ancak, ajan çalıştırma sırasında desteklenmeyen bir araç kullanırsanız, değerlendirici bu durumları filtreleme kolaylığı için bir "onay" ve çağrılan araçların değerlendirilmesinin desteklenmediğine dair bir neden çıkarır. Değerlendirmeyi mümkün kılmak için desteklenmeyen araçları kullanıcı tarafından tanımlanan araçlar olarak entegre edin.
Bu örnek, bir Microsoft Foundry aracısının nasıl derleneceğini ve değerlendirileceğini gösteriyor. Değerlendirmeden ayrı olarak, Foundry Aracısı Hizmeti için bir Foundry projesi bağlantı dizesi ve desteklenen modeller gerekir pip install azure-ai-projects azure-identity.
Aracı iş parçacıkları ve çalıştırmaları oluşturma
Temsilciler araçlar kullanabilir. Aşağıda ajanın kullanması için özel araçlar oluşturma örneği verilmiş (örnek olarak bir hava durumu işlevi kullanılarak):
from azure.ai.projects.models import FunctionTool, ToolSet
from typing import Set, Callable, Any
import json
# Define a custom Python function.
def fetch_weather(location: str) -> str:
"""
Fetches the weather information for the specified location.
:param location (str): The location to fetch weather for.
:return: Weather information as a JSON string.
:rtype: str
"""
# In a real-world scenario, you'd integrate with a weather API.
# In the following code snippet, we mock the response.
mock_weather_data = {"Seattle": "Sunny, 25°C", "London": "Cloudy, 18°C", "Tokyo": "Rainy, 22°C"}
weather = mock_weather_data.get(location, "Weather data not available for this location.")
weather_json = json.dumps({"weather": weather})
return weather_json
user_functions: Set[Callable[..., Any]] = {
fetch_weather,
}
# Add tools that the agent will use.
functions = FunctionTool(user_functions)
toolset = ToolSet()
toolset.add(functions)
AGENT_NAME = "Seattle Tourist Assistant"
Bir Foundry (Hub olmayan) projesi kullanıyorsanız araç takımıyla aşağıdaki gibi bir aracı oluşturun:
Uyarı
Foundry Hub tabanlı bir proje kullanıyorsanız (sadece azure-ai-projects<1.0.0b10 ve azure-ai-agents<1.0.0b10'nin alt sürümlerini destekliyorsa), en son sürüm Foundry Agent Service SDK Python istemci kütüphanesine geçin. Daha fazla bilgi için Toplu değerlendirme sonuçlarını günlüğe kaydetmek için Foundry projesi kurulumu bölümüne bakın.
Araç takımıyla aşağıdaki gibi bir aracı oluşturun:
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv
load_dotenv()
# Create an Azure AI Client from an endpoint, copied from your Foundry project.
# You need to login to Azure subscription via Azure CLI and set the environment variables
# Foundry project endpoint, example: AZURE_AI_PROJECT=https://your-account.services.ai.azure.com/api/projects/your-project
project_endpoint = os.environ["AZURE_AI_PROJECT"] # Ensure the PROJECT_ENDPOINT environment variable is set
# Create an AIProjectClient instance
project_client = AIProjectClient(
endpoint=project_endpoint,
credential=DefaultAzureCredential(), # Use Azure Default Credential for authentication
)
# Create an agent with the toolset
agent = project_client.agents.create_agent(
model=os.environ["MODEL_DEPLOYMENT_NAME"], # Model deployment name
name="my-agent", # Name of the agent
instructions="You are a helpful agent", # Instructions for the agent
toolset=toolset
)
print(f"Created agent, ID: {agent.id}")
# Create a thread for communication
thread = project_client.agents.threads.create()
print(f"Created thread, ID: {thread.id}")
# Add a message to the thread
message = project_client.agents.messages.create(
thread_id=thread.id,
role="user", # Role of the message sender
content="What is the weather in Seattle today?", # Message content
)
print(f"Created message, ID: {message['id']}")
# Create and process an agent run
run = project_client.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)
print(f"Run finished with status: {run.status}")
# Check if the run failed
if run.status == "failed":
print(f"Run failed: {run.last_error}")
# Fetch and log all messages
messages = project_client.agents.messages.list(thread_id=thread.id)
for message in messages:
print(f"Role: {message.role}, Content: {message.content}")
Tek bir aracı çalıştırmayı değerlendirme
Aracı çalıştırmalarını oluşturduktan sonra, Microsoft Foundry aracı iş parçacığı verilerini değerlendiricilerin anlayabileceği gerekli değerlendirme verilerine dönüştürmek için dönüştürücüsü kullanın.
import json, os
from azure.ai.evaluation import AIAgentConverter, IntentResolutionEvaluator
# Initialize the converter for Microsoft Foundry agents.
converter = AIAgentConverter(project_client)
# Specify the thread and run ID.
thread_id = thread.id
run_id = run.id
converted_data = converter.convert(thread_id, run_id)
Hepsi bu kadar!
converted_data bu değerlendiriciler için gereken tüm girişleri içerir. Her değerlendirici için giriş gereksinimlerini okumanız veya girişleri ayrıştırmak için herhangi bir çalışma yapmanız gerekmez. Değerlendiricinizi seçin ve tek seferlik bu çalıştırmada değerlendiriciyi çağırın. Değerlendiricilere bağlı olarak, hakim için Azure OpenAI veya OpenAI akıl yürütme modellerini ve mantık dışı modelleri destekliyoruz:
| Değerlendiriciler | Yargıç Olarak Akıl Yürütme Modelleri (örnek: Azure OpenAI / OpenAI'den o serisi modeller) | Akıl yürütmeyen modellerin yargıç olarak kullanılması (örnek: gpt-4.1, gpt-4o vb.) | Etkinleştirmek için |
|---|---|---|---|
GroundednessProEvaluator haricindeki tüm kalite değerlendiricileri |
Destekleniyor | Destekleniyor | Değerlendiricileri başlatırken ek parametre is_reasoning_model=True ayarlama |
GroundednessProEvaluator |
Kullanıcının modeli desteklemesi gerekmez | Kullanıcının modeli desteklemesi gerekmez | -- |
Değerlendirme için gelişmiş mantık yürütme gerektiren karmaşık görevler için, o3-mini veya daha sonra yayımlanan o-serisi mini modeller gibi güçlü bir akıl yürütme modeli kullanarak akıl yürütme performansı ve maliyet verimliliğini dengeleyin.
quality_evaluators ve safety_evaluators içinde kalite ve güvenlik değerlendiricilerinin bir listesini ayarlarsınız.
Birden fazla ajan çalıştırmasını veya bir iş parçacığını değerlendirdiğinizde bunlardan yararlanırsınız.
# This is specific to agentic workflows.
from azure.ai.evaluation import IntentResolutionEvaluator, TaskAdherenceEvaluator, ToolCallAccuracyEvaluator
# Other quality, risk, and safety metrics:
from azure.ai.evaluation import RelevanceEvaluator, CoherenceEvaluator, CodeVulnerabilityEvaluator, ContentSafetyEvaluator, IndirectAttackEvaluator, FluencyEvaluator
from azure.identity import DefaultAzureCredential
import os
from dotenv import load_dotenv
load_dotenv()
model_config = {
"azure_deployment": os.getenv("AZURE_DEPLOYMENT_NAME"),
"api_key": os.getenv("AZURE_API_KEY"),
"azure_endpoint": os.getenv("AZURE_ENDPOINT"),
"api_version": os.getenv("AZURE_API_VERSION"),
}
# example config for a reasoning model
reasoning_model_config = {
"azure_deployment": "o3-mini",
"api_key": os.getenv("AZURE_API_KEY"),
"azure_endpoint": os.getenv("AZURE_ENDPOINT"),
"api_version": os.getenv("AZURE_API_VERSION"),
}
# Evaluators you might want to use with reasoning models
quality_evaluators = {evaluator.__name__: evaluator(model_config=reasoning_model_config, is_reasoning_model=True) for evaluator in [IntentResolutionEvaluator, TaskAdherenceEvaluator, ToolCallAccuracyEvaluator]}
# Other evaluators you might NOT want to use with reasoning models
quality_evaluators.update({ evaluator.__name__: evaluator(model_config=model_config) for evaluator in [CoherenceEvaluator, FluencyEvaluator, RelevanceEvaluator]})
## Using Foundry (non-Hub) project endpoint, example: AZURE_AI_PROJECT=https://your-account.services.ai.azure.com/api/projects/your-project
azure_ai_project = os.environ.get("AZURE_AI_PROJECT")
safety_evaluators = {evaluator.__name__: evaluator(azure_ai_project=azure_ai_project, credential=DefaultAzureCredential()) for evaluator in [ContentSafetyEvaluator, IndirectAttackEvaluator, CodeVulnerabilityEvaluator]}
# Reference the quality and safety evaluator list above.
quality_and_safety_evaluators = {**quality_evaluators, **safety_evaluators}
for name, evaluator in quality_and_safety_evaluators.items():
result = evaluator(**converted_data)
print(name)
print(json.dumps(result, indent=4))
Çıkış biçimi
Yapay zeka destekli kalite değerlendiricileri sorgu ve yanıt çifti için bir sonuç döndürür. Sonuç, şunları içeren bir sözlüktür:
-
{metric_name}: Likert ölçeğinde (1 ile 5 arasında tamsayı) veya 0 ile 1 arasında bir kayan değer içeren sayısal bir puan sağlar. -
{metric_name}_label: Ölçüm doğal olarak bir ikili puan veriyorsa ikili etiket sağlar. -
{metric_name}_reason: Her veri noktası için belirli bir puanın veya etiketin neden verildiğini açıklar. -
details: Tek bir aracı çalıştırmanın kalitesi hakkında hata ayıklama bilgisi içeren isteğe bağlı bir çıkış.
Netliği artırmak için tüm değerlendiriciler ikili eşiği kabul eder (çıkışları zaten ikili değilse) ve iki yeni anahtar oluşturur. Binarizasyon eşiği için kullanıcının değiştirebileceği bir varsayılan ayar vardır. İki yeni anahtar şunlardır:
-
{metric_name}_result: Bir binarizasyon eşiğine dayalı bir "pass" veya "fail" dizesi. -
{metric_name}_threshold: Varsayılan olarak veya kullanıcı tarafından ayarlanan sayısal bir binarizasyon eşiği.
Bazı değerlendiriciler için aşağıdaki örnek çıktıya bakın:
{
"intent_resolution": 5.0, # likert scale: 1-5 integer
"intent_resolution_threshold": 3,
"intent_resolution_result": "pass", # pass because 5 > 3 the threshold
"intent_resolution_reason": "The assistant correctly understood the user's request to fetch the weather in Seattle. It used the appropriate tool to get the weather information and provided a clear and accurate response with the current weather conditions in Seattle. The response fully resolves the user's query with all necessary information."
}
{
"task_adherence": 5.0, # likert scale: 1-5 integer
"task_adherence_threshold": 3,
"task_adherence_result": "pass", # pass because 5 > 3 the threshold
"task_adherence_reason": "The response accurately follows the instructions, fetches the correct weather information, and relays it back to the user without any errors or omissions."
}
{
"tool_call_accuracy": 5, # a score between 1-5, higher is better
"tool_call_accuracy_threshold": 3,
"tool_call_accuracy_result": "pass", # pass because 5 > 3 the threshold
"details": { ... } # helpful details for debugging the tool calls made by the agent
}
Birden çok aracı çalıştırması veya iş parçacığını değerlendirme
Birden çok aracı çalıştırma veya iş parçacığı değerlendirmek için zaman uyumsuz değerlendirme amacıyla batch evaluate() API'sini kullanın. İlk olarak, dönüştürücü desteğini kullanarak aracı iş parçacığı verilerinizi bir dosyaya dönüştürün:
import json
from azure.ai.evaluation import AIAgentConverter
# Initialize the converter.
converter = AIAgentConverter(project_client)
# Specify a file path to save the agent output (evaluation input data) to.
filename = os.path.join(os.getcwd(), "evaluation_input_data.jsonl")
evaluation_data = converter.prepare_evaluation_data(thread_ids=thread_id, filename=filename)
print(f"Evaluation data saved to {filename}")
Değerlendirme verilerini bir kod satırında hazırlayarak değerlendiricileri seçerek aracı kalitesini değerlendirebilir ve toplu değerlendirme çalıştırması gönderebilirsiniz. Aşağıdaki örnekte, Tek bir aracı çalıştırmasınıquality_and_safety_evaluators değerlendirme bölümündeki kalite ve güvenlik değerlendiricilerinin aynı listesine başvurun:
import os
from dotenv import load_dotenv
load_dotenv()
# Batch evaluation API (local):
from azure.ai.evaluation import evaluate
response = evaluate(
data=filename,
evaluation_name="agent demo - batch run",
evaluators=quality_and_safety_evaluators,
# optionally, log your results to your Foundry project for rich visualization
azure_ai_project=os.environ.get("AZURE_AI_PROJECT"), # example: https://your-account.services.ai.azure.com/api/projects/your-project
)
# Inspect the average scores at a high level.
print(response["metrics"])
# Use the URL to inspect the results on the UI.
print(f'Foundry URL: {response.get("studio_url")}')
URL'yi seçtikten sonra Foundry'ye yönlendirilirsiniz. Dökümhane projenizde değerlendirme sonuçlarınızı görüntüleyin ve uygulamanızda hata ayıklayın. Uygulamalarınızın kalite ve güvenlik performansını değerlendirmek için neden alanlarını ve başarılı/başarısız sonuçları kullanın. Regresyon veya iyileştirmeleri test etmek için birden çok çalıştırma çalıştırabilir ve karşılaştırabilirsiniz.
Microsoft Foundry aracılarınızı dönüştürücü desteğiyle değerlendirmek ve aracı iş akışlarında gözlemlenebilirliği ve saydamlığı sağlamak için Azure AI Değerlendirme SDK'sı istemci kitaplığını kullanın.
Diğer aracıları değerlendir
Aracı Hizmeti dışında aracılar kullanıyorsanız, yine de seçtiğiniz değerlendiriciler için doğru verileri hazırlayarak bunları değerlendirebilirsiniz.
Aracılar genellikle bir kullanıcı veya diğer aracılarla etkileşime geçmek için iletiler gönderir. Yerleşik değerlendiriciler, query içindeki dizeler gibi basit veri türlerini response, ground_truth ve tek dönüşlü veri giriş gereksinimlerine göre kabul eder. Ancak aracıların karmaşık etkileşim desenleri ve çerçeve farklılıkları nedeniyle aracı iletilerinden bu basit veri türlerini ayıklamak zor olabilir. Örneğin, tek bir kullanıcı sorgusu aracı iletilerinin uzun bir listesini tetikleyebilir ve genellikle birden çok araç çağrısı çağrılır.
Aşağıdaki örnekte gösterildiği gibi, aracı iş akışının bu yönlerini değerlendirmek için aşağıdaki yerleşik değerlendiriciler için aracı iletisi desteğini etkinleştirebilirsiniz. Bu değerlendiriciler, tool_calls veya tool_definitions'i aracılara özgü parametreler olarak alabilir.
| Değerlendirici | query |
response |
tool_calls |
tool_definitions |
|---|---|---|---|---|
IntentResolutionEvaluator |
Gerekli: Union[str, list[Message]] |
Gerekli: Union[str, list[Message]] |
Geçerli değildir | Opsiyonel: list[ToolCall] |
ToolCallAccuracyEvaluator |
Gerekli: Union[str, list[Message]] |
Opsiyonel: Union[str, list[Message]] |
Opsiyonel: Union[dict, list[ToolCall]] |
Gerekli: list[ToolDefinition] |
TaskAdherenceEvaluator |
Gerekli: Union[str, list[Message]] |
Gerekli: Union[str, list[Message]] |
Geçerli değildir | Opsiyonel: list[ToolCall] |
GroundednessEvaluator |
Gerekli: Union[str, list[Message]] |
Gerekli: Union[str, list[Message]] |
Geçerli değildir | Gerekli: list[ToolCall] |
-
Message:dictBir kullanıcıyla aracı etkileşimlerini açıklayan openAI stili ileti; buradaqueryilk ileti olarak bir sistem iletisi içermesi gerekir. -
ToolCall:dictbir kullanıcıyla aracı etkileşimleri sırasında çağrılan araç çağrılarını belirtir. -
ToolDefinition:dictbir ajanın kullanabileceği araçları tanımlar.
ToolCallAccuracyEvaluator için, ya response ya da tool_calls sağlamanız gerekir.
GroundednessEvaluator aracının aldığı araç çıkışları doğrultusunda, ajanının yanıtlarının dayandığı temelleri değerlendirmeyi gerektirir.
Aşağıdaki örneklerde iki veri biçimi gösterilmektedir: basit aracı verileri ve aracı iletileri. Ancak, bu değerlendiricilerin benzersiz gereksinimleri nedeniyle, her değerlendirici için olası giriş yollarını gösteren Örnek not defterlerine bakın.
Tüm yerleşik yapay zeka destekli kalite değerlendirici sistemleri her giriş için geçer ya da kalır sonucu verir.
Basit aracı verileri
Basit aracı veri biçimindedir query ve response basit Python dizeleridir. Örneğin:
import os
import json
from azure.ai.evaluation import AzureOpenAIModelConfiguration
from azure.identity import DefaultAzureCredential
from azure.ai.evaluation import IntentResolutionEvaluator, ResponseCompletenessEvaluator
model_config = AzureOpenAIModelConfiguration(
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_key=os.environ["AZURE_OPENAI_API_KEY"],
api_version=os.environ["AZURE_OPENAI_API_VERSION"],
azure_deployment=os.environ["MODEL_DEPLOYMENT_NAME"],
)
intent_resolution_evaluator = IntentResolutionEvaluator(model_config)
# Evaluate the query and response as strings.
# The following is a positive example. Intent is identified and understood and the response correctly resolves user intent.
result = intent_resolution_evaluator(
query="What are the opening hours of the Eiffel Tower?",
response="Opening hours of the Eiffel Tower are 9:00 AM to 11:00 PM.",
)
print(json.dumps(result, indent=4))
Aşağıdaki çıkışa bakın (ayrıntılar için Çıkış biçimine bakın):
{
"intent_resolution": 5.0,
"intent_resolution_result": "pass",
"intent_resolution_threshold": 3,
"intent_resolution_reason": "The response provides the opening hours of the Eiffel Tower, which directly addresses the user's query. The information is clear, accurate, and complete, fully resolving the user's intent.",
}
Aracı yazılım çağrıları ve tanımları
aşağıdaki tool_calls ve tool_definitionsToolCallAccuracyEvaluator örneklerine bakın:
import json
query = "How is the weather in Seattle?"
tool_calls = [{
"type": "tool_call",
"tool_call_id": "call_CUdbkBfvVBla2YP3p24uhElJ",
"name": "fetch_weather",
"arguments": {
"location": "Seattle"
}
},
{
"type": "tool_call",
"tool_call_id": "call_CUdbkBfvVBla2YP3p24uhElJ",
"name": "fetch_weather",
"arguments": {
"location": "London"
}
}]
tool_definitions = [{
"name": "fetch_weather",
"description": "Fetches the weather information for the specified location.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The location to fetch weather for."
}
}
}
}]
from azure.ai.evaluation import ToolCallAccuracyEvaluator
tool_call_accuracy = ToolCallAccuracyEvaluator(model_config) # reuse the config defined above
response = tool_call_accuracy(query=query, tool_calls=tool_calls, tool_definitions=tool_definitions)
print(json.dumps(response, indent=4))
Aşağıdaki çıkışa bakın (ayrıntılar için Çıkış biçimine başvurun):
{
"tool_call_accuracy": 3, # a score between 1-5, higher is better
"tool_call_accuracy_result": "fail",
"tool_call_accuracy_threshold": 4,
"details": { ... } # helpful details for debugging the tool calls made by the agent
}
Ajan mesaj şeması
Aracı ileti biçiminde, query ve response OpenAI stili iletilerin listeleridir. Özellikle, query son kullanıcı sorgusuna kadar gerçekleşen geçmiş aracı-kullanıcı etkileşimlerini içerir ve listenin en üstünde aracıya ait sistem iletisinin olmasını gerektirir.
response son kullanıcı sorgusuna yanıt olarak aracının son mesajını taşır.
Değerlendiriciler için beklenen giriş biçimi, aşağıdaki gibi iletilerin Python listesidir:
[
{
"role": "system" | "user" | "assistant" | "tool",
"createdAt": "ISO 8601 timestamp", // Optional for 'system'
"run_id": "string", // Optional, only for assistant/tool in tool call context
"tool_call_id": "string", // Optional, only for tool/tool_result
"name": "string", // Present if it's a tool call
"arguments": { ... }, // Parameters passed to the tool (if tool call)
"content": [
{
"type": "text" | "tool_call" | "tool_result",
"text": "string", // if type == text
"tool_call_id": "string", // if type == tool_call
"name": "string", // tool name if type == tool_call
"arguments": { ... }, // tool args if type == tool_call
"tool_result": { ... } // result if type == tool_result
}
]
}
]
Örnek sorgu ve yanıt nesneleri:
query = [
{
"role": "system",
"content": "You are an AI assistant interacting with Azure Maps services to serve user requests."
},
{
"createdAt": "2025-04-25T23:55:43Z",
"role": "user",
"content": [
{
"type": "text",
"text": "Find the address for coordinates 41.8781,-87.6298."
}
]
},
{
"createdAt": "2025-04-25T23:55:45Z",
"run_id": "run_DGE8RWPS8A9SmfCg61waRx9u",
"role": "assistant",
"content": [
{
"type": "tool_call",
"tool_call_id": "call_nqNyhOFRw4FmF50jaCCq2rDa",
"name": "azure_maps_reverse_address_search",
"arguments": {
"lat": "41.8781",
"lon": "-87.6298"
}
}
]
},
{
"createdAt": "2025-04-25T23:55:47Z",
"run_id": "run_DGE8RWPS8A9SmfCg61waRx9u",
"tool_call_id": "call_nqNyhOFRw4FmF50jaCCq2rDa",
"role": "tool",
"content": [
{
"type": "tool_result",
"tool_result": {
"address": "300 South Federal Street, Chicago, IL 60604",
"position": {
"lat": "41.8781",
"lon": "-87.6298"
}
}
}
]
},
{
"createdAt": "2025-04-25T23:55:48Z",
"run_id": "run_DGE8RWPS8A9SmfCg61waRx9u",
"role": "assistant",
"content": [
{
"type": "text",
"text": "The address for the coordinates 41.8781, -87.6298 is 300 South Federal Street, Chicago, IL 60604."
}
]
},
{
"createdAt": "2025-04-25T23:55:50Z",
"role": "user",
"content": [
{
"type": "text",
"text": "What timezone corresponds to 41.8781,-87.6298?"
}
]
},
]
response = [
{
"createdAt": "2025-04-25T23:55:52Z",
"run_id": "run_DmnhUGqYd1vCBolcjjODVitB",
"role": "assistant",
"content": [
{
"type": "tool_call",
"tool_call_id": "call_qi2ug31JqzDuLy7zF5uiMbGU",
"name": "azure_maps_timezone",
"arguments": {
"lat": 41.878100000000003,
"lon": -87.629800000000003
}
}
]
},
{
"createdAt": "2025-04-25T23:55:54Z",
"run_id": "run_DmnhUGqYd1vCBolcjjODVitB",
"tool_call_id": "call_qi2ug31JqzDuLy7zF5uiMbGU",
"role": "tool",
"content": [
{
"type": "tool_result",
"tool_result": {
"ianaId": "America/Chicago",
"utcOffset": None,
"abbreviation": None,
"isDaylightSavingTime": None
}
}
]
},
{
"createdAt": "2025-04-25T23:55:55Z",
"run_id": "run_DmnhUGqYd1vCBolcjjODVitB",
"role": "assistant",
"content": [
{
"type": "text",
"text": "The timezone for the coordinates 41.8781, -87.6298 is America/Chicago."
}
]
}
]
Uyarı
Sorgu (mevcut çalışmaya kadar olan konuşma geçmişi) veya aracı yanıtı (sorguya verilen yanıt) beklenen biçimde değilse değerlendirici bir uyarı gösterir.
aracı iletilerini kullanarak ToolCallAccuracyEvaluatordeğerlendirme örneği için bkz:
import json
# The user asked a question.
query = [
{
"role": "system",
"content": "You are a friendly and helpful customer service agent."
},
# Past interactions are omitted.
# ...
{
"createdAt": "2025-03-14T06:14:20Z",
"role": "user",
"content": [
{
"type": "text",
"text": "Hi, I need help with the last 2 orders on my account #888. Could you please update me on their status?"
}
]
}
]
# The agent emits multiple messages to fulfill the request.
response = [
{
"createdAt": "2025-03-14T06:14:30Z",
"run_id": "0",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello! Let me quickly look up your account details."
}
]
},
{
"createdAt": "2025-03-14T06:14:35Z",
"run_id": "0",
"role": "assistant",
"content": [
{
"type": "tool_call",
"tool_call_id": "tool_call_20250310_001",
"name": "get_orders",
"arguments": {
"account_number": "888"
}
}
]
},
# Many more messages are omitted.
# ...
# Here is the agent's final response:
{
"createdAt": "2025-03-14T06:15:05Z",
"run_id": "0",
"role": "assistant",
"content": [
{
"type": "text",
"text": "The order with ID 123 has been shipped and is expected to be delivered on March 15, 2025. However, the order with ID 124 is delayed and should now arrive by March 20, 2025. Is there anything else I can help you with?"
}
]
}
]
# An example of tool definitions available to the agent:
tool_definitions = [
{
"name": "get_orders",
"description": "Get the list of orders for a given account number.",
"parameters": {
"type": "object",
"properties": {
"account_number": {
"type": "string",
"description": "The account number to get the orders for."
}
}
}
},
# Other tool definitions are omitted.
# ...
]
result = tool_call_accuracy(
query=query,
response=response,
tool_definitions=tool_definitions
)
print(json.dumps(result, indent=4))
Aşağıdaki çıkışa bakın (ayrıntılar için Çıkış biçimine başvurun):
{
"tool_call_accuracy": 2, # a score between 1-5, higher is better
"tool_call_accuracy_result": "fail",
"tool_call_accuracy_threshold": 3,
"details": { ... } # helpful details for debugging the tool calls made by the agent
}
Bu değerlendirme şeması aracı verilerini Aracı Hizmeti dışında ayrıştırmaya yardımcı olur ve aracı iş akışlarında gözlemlenebilirliği desteklemek için yerleşik değerlendiricilerin kullanılmasını sağlar.
Örnek not defterleri
Bu değerlendiricilerin her biri için bir örnek deneyin:
- Niyet çözümleme
- Araç çağrısı doğruluğu
- Göreve bağlı kalma
- Yanıtın eksiksiz olması
- Uçtan uca Microsoft Foundry aracısı değerlendirmesi
İlgili içerik
- Azure AI Değerlendirme Python SDK'sı istemci başvuru belgeleri
- Azure AI Değerlendirme SDK'sı istemci sorunlarını giderme kılavuzu
- Değerlendirme ölçümleri hakkında bilgi edinin
- Üretken yapay zeka uygulamalarını bulutta uzaktan değerlendirme
- Değerlendirme için test veri kümelerinin simülasyonu hakkında bilgi edinin
- Dökümhane projesinde değerlendirme sonuçlarını görüntüleme
- Microsoft Foundry SDK'sını kullanarak sohbet uygulaması oluşturmaya başlama
- Değerlendirme örneklerini kullanmaya başlama