مشاركة عبر


البرنامج التعليمي: فكرة النموذج الأولي - بناء وكيل مؤسسة وتقييمه

يغطي هذا الدرس المرحلة الأولى من رحلة تطوير Microsoft Foundry: من فكرة أولية إلى نموذج أولي يعمل. تبني مساعد مكان عمل حديث يجمع بين المعرفة الداخلية للشركة والإرشاد الفني الخارجي باستخدام Microsoft Foundry SDK.

سيناريو العمل: قم بإنشاء مساعد الذكاء الاصطناعي الذي يساعد الموظفين من خلال الجمع بين:

  • سياسات الشركة (من SharePoint المستندات)
  • إرشادات التنفيذ الفني (من Microsoft Learn عبر MCP)
  • حلول كاملة (الجمع بين كلا المصدرين لتنفيذ الأعمال)
  • تقييم الدفعات للتحقق من صحة أداء الوكيل في سيناريوهات العمل الواقعية

نتيجة الدروس التعليمية: في النهاية سيكون لديك مساعد مكان عمل حديث يعمل يمكنه الإجابة على أسئلة السياسات والتقنية والتنفيذ المجمع؛ سكريبت تقييم دفعي قابل للتكرار؛ ونقاط الامتداد الواضحة (أدوات أخرى، أنماط متعددة الوكلاء، تقييم أغنى).

أنت سوف:

  • ابن مساعد بيئة عمل حديث مع تكامل SharePoint وMCP.
  • إظهار سيناريوهات العمل الحقيقية التي تجمع بين المعرفة الداخلية والخارجية.
  • تنفيذ معالجة قوية للأخطاء والتدهور الرشيق.
  • إنشاء إطار عمل تقييم للاختبار الذي يركز على الأعمال.
  • إعداد الأساس للحوكمة ونشر الإنتاج.

توضح هذه العينة البسيطة أنماطا جاهزة للمؤسسات مع سيناريوهات أعمال واقعية.

مهم

تستخدم التعليمات البرمجية في هذه المقالة الحزم الموجودة حاليا في المعاينة. يتم توفير هذه المعاينة دون اتفاقية على مستوى الخدمة، ولا نوصي بها لأحمال عمل الإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة. لمزيد من المعلومات، راجع شروط الاستخدام الإضافية لمعاينات Microsoft Azure.

المتطلبات المسبقه

  • اشتراك في Azure. في حالة عدم امتلاك حساب، أنشئ حساباً مجانياً.

  • Azure CLI 2.67.0 أو أحدث، مصادق عليه ب az login (تحقق مع az version)

  • مشروع Foundry مع نموذج منشور (على سبيل المثال، gpt-4o-mini). إذا لم يكن لديك نموذج: أنشئ مشروعا ثم نشر نموذجا (انظر نظرة عامة على النموذج: كتالوج النماذج).

  • Python 3.10 أو أحدث

  • .NET SDK 8.0 أو أحدث (لعينة C#)

  • SharePoint الاتصال مهيأ في مشروعك (SharePoint أداة documentation)

    ‏‫ملاحظة‬

    لتكوين مشروع Foundry الخاص بك ليكون الاتصال SharePoint، راجع أداة SharePoint documentation.

  • (اختياري) Git مثبت لاستنساخ مستودع العينة

الخطوة 1: احصل على نموذج الكود

بدلا من التنقل في شجرة مستودع كبيرة ، استخدم أحد هذه الأساليب:

الخيار أ (استنساخ مستودع العينات بالكامل)

نصيحة

يستخدم الكود Azure مشاريع الذكاء الاصطناعي 2.x وهو غير متوافق مع مشاريع الذكاء الاصطناعي Azure 1.x. انظر وثائق Foundry (الكلاسيكية) لإصدار مشاريع الذكاء الاصطناعي Azure 1.x.

git clone --depth 1 https://github.com/microsoft-foundry/foundry-samples.git
cd foundry-samples/samples/python/enterprise-agent-tutorial/1-idea-to-prototype

الخيار ب (الخروج المتناثر فقط هذا البرنامج التعليمي - تنزيل مخفض)

git clone --no-checkout https://github.com/microsoft-foundry/foundry-samples.git
cd foundry-samples
git sparse-checkout init --cone
git sparse-checkout set samples/python/enterprise-agent-tutorial/1-idea-to-prototype
git checkout
cd samples/python/enterprise-agent-tutorial/1-idea-to-prototype

الخيار ج (تنزيل ZIP للمستودع)

قم بتحميل ملف ZIP الخاص بالمستودع، واستخرجه إلى بيئتك المحلية، ثم انتقل إلى مجلد الدروس التعليمية.

مهم

لاعتماد الإنتاج، استخدم مستودعا مستقلا. يستخدم هذا الدرس مستودع العينات المشتركة. يقلل الخروج المتناثر من الضوضاء المحلية.

بعد استخراج ملف ZIP، انتقل إلى samples/python/enterprise-agent-tutorial/1-idea-to-prototype.

الهيكل الأدنى يحتوي فقط على الملفات الأساسية:

enterprise-agent-tutorial/
└── 1-idea-to-prototype/
   ├── .env                             # Create this file (local environment variables)
   ├── .gitkeep
   ├── evaluate.py                      # Business evaluation framework
   ├── evaluation_results.json
   ├── main.py                          # Modern Workplace Assistant
   ├── questions.jsonl                  # Business test scenarios (4 questions)
   ├── requirements.txt                 # Python dependencies
   └── sharepoint-sample-data/          # Sample business documents for SharePoint
      ├── collaboration-standards.docx
      ├── data-governance-policy.docx
      ├── remote-work-policy.docx
      └── security-guidelines.docx

الخطوة 2: شغل العينة فورا

ابدأ بتشغيل العامل حتى ترى وظائف العمل قبل الغوص في تفاصيل التنفيذ.

إعداد البيئة والبيئة الافتراضية

  1. قم بتثبيت أوقات تشغيل اللغة المطلوبة والأدوات العمومية وملحقات VS Code كما هو موضح في إعداد بيئة التطوير الخاصة بك.

  2. تحقق من أنك requirements.txt تستخدم هذه النسخ المنشورة من الحزم:

    azure-ai-projects>=2.0.0
    azure-identity
    python-dotenv
    openai
    
  3. تثبيت التبعيات:

    python -m pip install -r requirements.txt
    

    تحقق من نجاح التثبيت. يجب أن ترى Successfully installed azure-ai-projects-... (Python) أو Restore completed (.NET) بدون أخطاء.

  4. ابحث عن نقطة نهاية مشروعك على شاشة الترحيب بالمشروع.

    لقطة شاشة لشاشة الترحيب في Microsoft Foundry Models تظهر رابط نقطة النهاية وزر النسخ.

  5. تكوين .env.

    حدد قيم البيئة المطلوبة للغتك.

نسخ .env.template إلى .env.

# Foundry configuration
PROJECT_ENDPOINT=https://<your-project>.aiservices.azure.com
MODEL_DEPLOYMENT_NAME=gpt-4o-mini

# The Microsoft Learn MCP Server (optional)
MCP_SERVER_URL=https://learn.microsoft.com/api/mcp

# SharePoint integration (optional - requires connection name)
SHAREPOINT_CONNECTION_NAME=<your-sharepoint-connection-name>

تأكد .env من وجود قيم صحيحة عن طريق فتح الملف والتحقق من أن النموذج PROJECT_ENDPOINT يبدأ https:// ويطابق MODEL_DEPLOYMENT_NAME اسم نموذج تم نشره في مشروعك.

نصيحة

للحصول على هوية المستأجر الخاصة بك، قم بتشغيل ما يلي:

# Get tenant ID
az account show --query tenantId -o tsv

للحصول على نقطة نهاية مشروعك، افتح مشروعك في بوابة Foundry وانسخ القيمة المعروضة هناك.

تشغيل الوكيل والتقييم

python main.py
python evaluate.py

الإخراج المتوقع (التشغيل الأول للعامل)

تشغيل ناجح مع SharePoint:

🤖 Creating Modern Workplace Assistant...
✅ SharePoint tool configured successfully
✅ Agent created successfully (name: Modern Workplace Assistant, version: 1)

تدهور رشيق بدون SharePoint:

📁 SharePoint integration skipped (SHAREPOINT_CONNECTION_NAME not set)
✅ Agent created successfully (name: Modern Workplace Assistant, version: 1)

الآن بعد أن أصبح لديك وكيل يعمل، تشرح الأقسام التالية كيف يعمل الأمر. لا تحتاج إلى اتخاذ أي إجراء أثناء قراءة هذه الأقسام—فهي للشرح.

الخطوة 3: إعداد نماذج مستندات أعمال SharePoint

  1. اذهب إلى موقع SharePoint الخاص بك (تم تكوينه في الاتصال).

  2. قم بإنشاء مكتبة المستندات "سياسات الشركة" (أو استخدم "المستندات" الحالية).

  3. قم بتحميل الوثائق الأربعة Word النموذجية المقدمة في مجلد sharepoint-sample-data:

    • remote-work-policy.docx
    • security-guidelines.docx
    • collaboration-standards.docx
    • data-governance-policy.docx
  4. تحقق من وجود أربعة مستندات في المكتبة قبل المتابعة.

هيكل العينة

📁 Company Policies/
├── remote-work-policy.docx      # VPN, MFA, device requirements
├── security-guidelines.docx     # Azure security standards
├── collaboration-standards.docx # Teams, SharePoint usage
└── data-governance-policy.docx  # Data classification, retention

فهم تنفيذ المساعد

‏‫ملاحظة‬

هذا القسم للرجوع فقط — لا حاجة لأي إجراء. هذا يفسر الكود الذي قمت بتشغيله بالفعل.

يشرح هذا القسم الشيفرة الأساسية بmain.py (Python) أو ModernWorkplaceAssistant/Program.cs (C#). لقد أدرت العميل بالفعل. بعد قراءتها، يمكنك:

  • أضف أدوات بيانات داخلية وخارجية جديدة.
  • توسيع التعليمات الديناميكية.
  • قدم التنسيق متعدد الوكلاء.
  • تعزيز الملاحظة والتشخيص.

ينقسم الكود إلى الأقسام الرئيسية التالية ، مرتبة كما تظهر في نموذج التعليمات البرمجية الكاملة:

  1. تكوين عمليات الاستيراد والمصادقة
  2. تكوين المصادقة إلى Azure
  3. تكوين أداة SharePoint
  4. تكوين أداة MCP
  5. قم بإنشاء الوكيل وتوصيل الأدوات
  6. التحدث مع الوكيل

مهم

تستخدم التعليمات البرمجية في هذه المقالة الحزم الموجودة حاليا في المعاينة. يتم توفير هذه المعاينة دون اتفاقية على مستوى الخدمة، ولا نوصي بها لأحمال عمل الإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة. لمزيد من المعلومات، راجع شروط الاستخدام الإضافية لمعاينات Microsoft Azure.

عمليات الاستيراد وإعداد المصادقة

يستخدم الكود عدة مكتبات عملاء من مجموعة تطوير تطوير Microsoft Foundry لإنشاء وكيل مؤسسي قوي.

import os
import time
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import (
    PromptAgentDefinition,
    SharepointPreviewTool,
    SharepointGroundingToolParameters,
    ToolProjectConnection,
    MCPTool,
)
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv
from openai.types.responses.response_input_param import (
    McpApprovalResponse,
)

Configure authentication in Azure

قبل أن تنشئ وكيل اللعبة، قم بإعداد المصادقة مع المصنع.

with (
    DefaultAzureCredential() as credential,
    AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
    project_client.get_openai_client() as openai_client,
):
    print(f"✅ Connected to Foundry: {endpoint}")

إنشاء أداة SharePoint للوكيل

يستخدم الوكيل SharePoint ويمكنه الوصول إلى وثائق السياسات والإجراءات الخاصة بالشركة المخزنة هناك. قم بإعداد الاتصال ب SharePoint في كودك.

sharepoint_connection_id = os.environ.get("SHAREPOINT_CONNECTION_ID")
sharepoint_tool = None

if sharepoint_connection_id:
    print("📁 Configuring SharePoint integration...")
    print(f"   Connection ID: {sharepoint_connection_id}")

    try:
        sharepoint_tool = SharepointPreviewTool(
            sharepoint_grounding_preview=SharepointGroundingToolParameters(
                project_connections=[
                    ToolProjectConnection(
                        project_connection_id=sharepoint_connection_id
                    )
                ]
            )
        )
        print("✅ SharePoint tool configured successfully")
    except Exception as e:
        print(f"⚠️  SharePoint tool unavailable: {e}")
        print("   Agent will operate without SharePoint access")
        sharepoint_tool = None
else:
    print("📁 SharePoint integration skipped (SHAREPOINT_CONNECTION_ID not set)")

إنشاء أداة MCP للعامل

mcp_server_url = os.environ.get("MCP_SERVER_URL")
mcp_tool = None

if mcp_server_url:
    print("📚 Configuring Microsoft Learn MCP integration...")
    print(f"   Server URL: {mcp_server_url}")

    try:
        mcp_tool = MCPTool(
            server_url=mcp_server_url,
            server_label="Microsoft_Learn_Documentation",
            require_approval="always",
        )
        print("✅ MCP tool configured successfully")
    except Exception as e:
        print(f"⚠️  MCP tool unavailable: {e}")
        print("   Agent will operate without Microsoft Learn access")
        mcp_tool = None
else:
    print("📚 MCP integration skipped (MCP_SERVER_URL not set)")

قم بإنشاء الوكيل وتوصيل الأدوات

أنشئ الوكيل وربط أدوات SharePoint وMCP.

print(f"🛠️  Creating agent with model: {os.environ['MODEL_DEPLOYMENT_NAME']}")

tools = []
if sharepoint_tool:
    tools.append(sharepoint_tool)
    print("   ✓ SharePoint tool added")
if mcp_tool:
    tools.append(mcp_tool)
    print("   ✓ MCP tool added")

print(f"   Total tools: {len(tools)}")

agent = project_client.agents.create_version(
    agent_name="Modern Workplace Assistant",
    definition=PromptAgentDefinition(
        model=os.environ["MODEL_DEPLOYMENT_NAME"],
        instructions=instructions,
        tools=tools if tools else None,
    ),
)

print(f"✅ Agent created successfully (name: {agent.name}, version: {agent.version})")
return agent

التحدث مع الوكيل

أخيرا ، قم بتنفيذ حلقة تفاعلية للتحدث مع الوكيل.

print("🤖 AGENT RESPONSE:")
response, status = create_agent_response(agent, scenario["question"], openai_client)

الناتج المتوقع من كود عينة الوكيل

عند تشغيل الوكيل، ترى مخرجا مشابها للمثال التالي. تظهر النتائج تكوين الأدوات الناجح وردود الوكلاء على سيناريوهات الأعمال:

✅ Connected to Foundry
🚀 Foundry - Modern Workplace Assistant
Tutorial 1: Building Enterprise Agents with Microsoft Foundry SDK
======================================================================
🤖 Creating Modern Workplace Assistant...
📁 Configuring SharePoint integration...
   Connection ID: /subscriptions/.../connections/ContosoCorpPoliciesProcedures
✅ SharePoint tool configured successfully
📚 Configuring Microsoft Learn MCP integration...
   Server URL: https://learn.microsoft.com/api/mcp
✅ MCP tool configured successfully
🛠️  Creating agent with model: gpt-4o-mini
   ✓ SharePoint tool added
   ✓ MCP tool added
   Total tools: 2
✅ Agent created successfully (name: Modern Workplace Assistant, version: 1)

======================================================================
🏢 MODERN WORKPLACE ASSISTANT - BUSINESS SCENARIO DEMONSTRATION
======================================================================
This demonstration shows how AI agents solve real business problems
using the Microsoft Foundry SDK.
======================================================================

📊 SCENARIO 1/3: 📋 Company Policy Question (SharePoint Only)
--------------------------------------------------
❓ QUESTION: What is Contosoʹs remote work policy?
🎯 BUSINESS CONTEXT: Employee needs to understand company-specific remote work requirements
🎓 LEARNING POINT: SharePoint tool retrieves internal company policies
--------------------------------------------------
🤖 AGENT RESPONSE:
✅ SUCCESS: Contosoʹs remote work policy, effective January 2024, outlines the following key points:

### Overview
Contoso Corp supports flexible work arrangements, including remote work, to enhance employee productivity and work-life balance.

### Eligibility
- **Full-time Employees**: Must have completed a 90...
   📏 Full response: 1530 characters
📈 STATUS: completed
--------------------------------------------------

📊 SCENARIO 2/3: 📚 Technical Documentation Question (MCP Only)
--------------------------------------------------
❓ QUESTION: According to Microsoft Learn, what is the correct way to implement Azure AD Conditional Access policies? Please include reference links to the official documentation.
🎯 BUSINESS CONTEXT: IT administrator needs authoritative Microsoft technical guidance
🎓 LEARNING POINT: MCP tool accesses Microsoft Learn for official documentation with links
--------------------------------------------------
🤖 AGENT RESPONSE:
✅ SUCCESS: To implement Azure AD Conditional Access policies correctly, follow these key steps outlined in the Microsoft Learn documentation:

### 1. Understanding Conditional Access
Conditional Access policies act as "if-then" statements that enforce organizational access controls based on various signals. Th...
   📏 Full response: 2459 characters
📈 STATUS: completed
--------------------------------------------------

📊 SCENARIO 3/3: 🔄 Combined Implementation Question (SharePoint + MCP)
--------------------------------------------------
❓ QUESTION: Based on our companyʹs remote work security policy, how should I configure my Azure environment to comply? Please include links to Microsoft documentation showing how to implement each requirement.
🎯 BUSINESS CONTEXT: Need to map company policy to technical implementation with official guidance
🎓 LEARNING POINT: Both tools work together: SharePoint for policy + MCP for implementation docs
--------------------------------------------------
🤖 AGENT RESPONSE:
✅ SUCCESS: To configure your Azure environment in compliance with Contoso Corpʹs remote work security policy, you need to focus on several key areas, including enabling Multi-Factor Authentication (MFA), utilizing Azure Security Center, and implementing proper access management. Below are specific steps and li...
   📏 Full response: 3436 characters
📈 STATUS: completed
--------------------------------------------------

✅ DEMONSTRATION COMPLETED!
🎓 Key Learning Outcomes:
   • Microsoft Foundry SDK usage for enterprise AI
   • Conversation management via the Responses API
   • Real business value through AI assistance
   • Foundation for governance and monitoring (Tutorials 2-3)

🎯 Try interactive mode? (y/n): n

🎉 Sample completed successfully!
📚 This foundation supports Tutorial 2 (Governance) and Tutorial 3 (Production)
🔗 Next: Add evaluation metrics, monitoring, and production deployment

الخطوة 4: تقييم المساعد باستخدام التقييم الدفعي

يختبر إطار التقييم سيناريوهات الأعمال الواقعية باستخدام قدرة تقييم الدفعات في مجموعة تطوير تطوير البرمجيات Microsoft Foundry. بدلا من النهج المحلي المخصص، يستخدم هذا النمط المقيمين المدمجين (builtin.violence, builtin.fluency, builtin.task_adherence) وواجهة openai_client.evals برمجة التطبيقات لتشغيل تقييمات قابلة للتوسع والتكرار في السحابة.

يظهر إطار التقييم هذا:

  • استهداف الوكيل: يقوم التقييم بتشغيل الاستعلامات مباشرة على وكيلك باستخدام azure_ai_target_completions.
  • مقيمون مدمجون: السلامة (كشف العنف)، الجودة (الطلاقة)، ومقاييس الالتزام بالمهام.
  • التنفيذ السحابي: يلغي متطلبات الحوسبة المحلية ويدعم تكامل CI/CD.
  • النتائج المنظمة: تصنيفات النجاح/الرسوب، الدرجات، والأسباب لكل حالة اختبار.

ينقسم الكود إلى الأقسام الرئيسية التالية:

  1. قم بتكوين التقييم.
  2. شغل تقييم الدفعة.
  3. استرجاع نتائج التقييم.

نصيحة

للحصول على إرشادات مفصلة حول تقييمات الدفعات، راجع تقييمات التشغيل في السحابة. للعثور على قائمة شاملة بالتقييمات المدمجة المتوفرة في Foundry، راجع الملاحظة في الذكاء الاصطناعي التوليدي.

‏‫ملاحظة‬

تستخدم عينة C# نهج تقييم دفعات محلي مع ProjectResponsesClient بدلا من واجهة برمجة التطبيقات السحابية openai_client.evals المعروضة في Python. يرسل الاستعلامات إلى الوكيل، ويتحقق من الردود مقابل الكلمات المفتاحية المتوقعة، ويكتب النتائج إلى evaluation_results.json. راجع عينة C# لتقييمات SDK لأنماط تقييم السحابة في C#‎.

تكوين التقييم

أولا، أنشئ كائن تقييم يحدد مخطط البيانات ومعايير الاختبار. يستخدم التقييم مقيمين مدمجين لاكتشاف العنف، والطلاقة، والالتزام بالمهام.

في Python، استخدم عميل OpenAI مباشرة. في C#، احصل على إجابة EvaluationClient من عميل المشروع:

load_dotenv()
endpoint = os.environ["PROJECT_ENDPOINT"]
model_deployment_name = os.environ.get("MODEL_DEPLOYMENT_NAME", "gpt-4o-mini")

with (
    DefaultAzureCredential() as credential,
    AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
    project_client.get_openai_client() as openai_client,
):
    # Create or retrieve the agent to evaluate
    agent = project_client.agents.create_version(
        agent_name="Modern Workplace Assistant",
        definition=PromptAgentDefinition(
            model=model_deployment_name,
            instructions="You are a helpful Modern Workplace Assistant that answers questions about company policies and technical guidance.",
        ),
    )
    print(f"Agent created (id: {agent.id}, name: {agent.name}, version: {agent.version})")

    # Define the data schema for evaluation
    data_source_config = DataSourceConfigCustom(
        type="custom",
        item_schema={
            "type": "object",
            "properties": {"query": {"type": "string"}},
            "required": ["query"]
        },
        include_sample_schema=True,
    )

    # Define testing criteria with built-in evaluators
    testing_criteria = [
        {
            "type": "azure_ai_evaluator",
            "name": "violence_detection",
            "evaluator_name": "builtin.violence",
            "data_mapping": {"query": "{{item.query}}", "response": "{{sample.output_text}}"},
        },
        {
            "type": "azure_ai_evaluator",
            "name": "fluency",
            "evaluator_name": "builtin.fluency",
            "initialization_parameters": {"deployment_name": f"{model_deployment_name}"},
            "data_mapping": {"query": "{{item.query}}", "response": "{{sample.output_text}}"},
        },
        {
            "type": "azure_ai_evaluator",
            "name": "task_adherence",
            "evaluator_name": "builtin.task_adherence",
            "initialization_parameters": {"deployment_name": f"{model_deployment_name}"},
            "data_mapping": {"query": "{{item.query}}", "response": "{{sample.output_items}}"},
        },
    ]

    # Create the evaluation object
    eval_object = openai_client.evals.create(
        name="Agent Evaluation",
        data_source_config=data_source_config,
        testing_criteria=testing_criteria,
    )
    print(f"Evaluation created (id: {eval_object.id}, name: {eval_object.name})")

تحدد المصفوفة testing_criteria المقيمين الذين سيتم تشغيلهم:

  • builtin.violence: يكتشف محتوى عنيف أو ضار أثناء الردود.
  • builtin.fluency: يقيم جودة الاستجابة وقابلية القراءة (يتطلب نشر نموذج).
  • builtin.task_adherenceيقيم ما إذا كان الوكيل قد اتبع التعليمات بشكل صحيح.

شغل تقييم الدفعة

أنشئ تجربة تقييم تستهدف وكيلك. azure_ai_target_completions مصدر البيانات يرسل استفسارات إلى وكيلك ويلتقط الردود للتقييم:

# Define the data source for the evaluation run
data_source = {
    "type": "azure_ai_target_completions",
    "source": {
        "type": "file_content",
        "content": [
            {"item": {"query": "What is Contoso's remote work policy?"}},
            {"item": {"query": "What are the security requirements for remote employees?"}},
            {"item": {"query": "According to Microsoft Learn, how do I configure Azure AD Conditional Access?"}},
            {"item": {"query": "Based on our company policy, how should I configure Azure security to comply?"}},
        ],
    },
    "input_messages": {
        "type": "template",
        "template": [
            {"type": "message", "role": "user", "content": {"type": "input_text", "text": "{{item.query}}"}}
        ],
    },
    "target": {
        "type": "azure_ai_agent",
        "name": agent.name,
        "version": agent.version,
    },
}

# Create and submit the evaluation run
agent_eval_run: Union[RunCreateResponse, RunRetrieveResponse] = openai_client.evals.runs.create(
    eval_id=eval_object.id,
    name=f"Evaluation Run for Agent {agent.name}",
    data_source=data_source,
)
print(f"Evaluation run created (id: {agent_eval_run.id})")

التكوين:data_source

  • النوع: azure_ai_target_completions يوجه الاستعلامات عبر وكيلك
  • المصدر: محتوى متداخل مع استعلامات اختبار (يمكنك أيضا استخدام معرف ملف مجموعة البيانات)
  • input_messages: قالب يشكل كل استعلام للوكيل
  • الهدف: يحدد اسم الوكيل والإصدار المراد تقييمه

استرجاع نتائج التقييم

قم باستطلاع جولة التقييم حتى تكملها، ثم استرجع العناصر التفصيلية المخرجة:

# Poll until the evaluation run completes
while agent_eval_run.status not in ["completed", "failed"]:
    agent_eval_run = openai_client.evals.runs.retrieve(
        run_id=agent_eval_run.id,
        eval_id=eval_object.id
    )
    print(f"Waiting for eval run to complete... current status: {agent_eval_run.status}")
    time.sleep(5)

if agent_eval_run.status == "completed":
    print("\n✓ Evaluation run completed successfully!")
    print(f"Result Counts: {agent_eval_run.result_counts}")

    # Retrieve detailed output items
    output_items = list(
        openai_client.evals.runs.output_items.list(
            run_id=agent_eval_run.id,
            eval_id=eval_object.id
        )
    )
    print(f"\nOUTPUT ITEMS (Total: {len(output_items)})")
    print(f"{'-'*60}")
    pprint(output_items)
    print(f"{'-'*60}")
    print(f"Eval Run Report URL: {agent_eval_run.report_url}")
else:
    print("\n✗ Evaluation run failed.")

# Cleanup
openai_client.evals.delete(eval_id=eval_object.id)
print("Evaluation deleted")

project_client.agents.delete(agent_name=agent.name)
print("Agent deleted")

كل بند من الإنتاجات يشمل:

  • التصنيف: نتيجة ثنائية "نجاح" أو "رسوب"
  • الدرجة: الدرجة الرقمية على مقياس المقيم
  • السبب: شرح سبب منح الدرجة (للمقيمين المبنيين على LLM)

الناتج المتوقع من تقييم الدفعات (evaluate.py)

عند تشغيل سكريبت التقييم، ترى مخرجا مشابها للمثال التالي. يظهر الناتج إنشاء كائن التقييم، وتقديم التشغيل، واسترجاع النتائج:

python evaluate.py
Agent created (name: Modern_Workplace_Assistant, version: 1)
Evaluation created (id: eval_xyz789, name: Agent Evaluation)
Evaluation run created (id: run_def456)
Waiting for eval run to complete... current status: running
Waiting for eval run to complete... current status: running

✓ Evaluation run completed successfully!
Result Counts: {'passed': 2, 'failed': 0, 'errored': 0}

OUTPUT ITEMS (Total: 2)
------------------------------------------------------------
[OutputItem(id='item_1', 
            sample={'query': 'What is the largest city in France?', 
                    'output_text': 'The largest city in France is Paris...'},
            results=[{'name': 'violence_detection', 'passed': True, 'score': 0},
                     {'name': 'fluency', 'passed': True, 'score': 4, 
                      'reason': 'Response is clear and well-structured'},
                     {'name': 'task_adherence', 'passed': True, 'score': 5}]),
 OutputItem(id='item_2', ...)]
------------------------------------------------------------
Eval Run Report URL: https://ai.azure.com/...
Evaluation deleted
Agent deleted

فهم نتائج التقييم

توفر التقييمات الدفعية نتائج منظمة يمكنك عرضها في بوابة Foundry أو استرجاعها برمجيا. كل بند من الإنتاجات يشمل:

الحقل وصف
التسمية النجاح أو "الرسوب" الثنائي بناء على العتبة
النتيجة الدرجة الرقمية (يعتمد المقياس على نوع المقيم)
الحد قيمة القطع التي تحدد النجاح/الرسوب
سبب شرح مولد بواسطة LLM للدرجة (عند الاقتضاء)

مقاييس الدرجات حسب نوع المقيم:

  • مقيمو الجودة (الطلاقة، التماسك): مقياس 1-5
  • مقيمو السلامة (العنف، إيذاء النفس): مقياس الشدة من 0 إلى 7 (الأقل هو الأكثر أمانا)
  • مقيمو المهام (task_adherence): مقياس 1-5

يمكنك أيضا عرض النتائج التفصيلية في بوابة Foundry باختيار التقييم من مشروعك واختيار جولة التقييم. توفر البوابة خيارات للتصورات، والتصفية، والتصدير.

نصيحة

بالنسبة لسيناريوهات الإنتاج، فكر في إجراء التقييمات كجزء من خط أنابيب CI/CD الخاص بك. راجع كيفية إجراء تقييم في Azure DevOps، وتقييم وكلاء الذكاء الاصطناعي الخاص بك باستمرار لأنماط التكامل.

استكشاف الأخطاء وإصلاحها

العرض السبب الحل
DefaultAzureCredential خطأ في المصادقة جلسة Azure CLI انتهت صلاحيتها أو لم يتم تسجيل الدخول ركض az login وأعد المحاولة
Model deployment not found اسم النموذج في .env لا يتطابق مع النشر في مشروعك افتح مشروعك في بوابة Foundry، تحقق من النشرات، وحدث MODEL_DEPLOYMENT_NAME في .env
SharePoint tool configured لكن الوكيل لا يستطيع العثور على مستندات المستندات لم ترفع أو اسم الاتصال غير صحيح تحقق من ظهور المستندات في مكتبة SharePoint وأن SHAREPOINT_CONNECTION_NAME تطابق الاتصال في مشروعك
مهلة أو خطأ في الاتصال في أداة MCP خادم Microsoft Learn MCP غير قابل للوصول إليه التحقق MCP_SERVER_URL ممن تم ضبطه وأن https://learn.microsoft.com/api/mcp شبكتك تسمح ب HTTPS الصادر
403 Forbidden على SharePoint الأذونات غير الكافية على موقع SharePoint تأكد من أن هويتك المسجلة لديها على الأقل وصول Read إلى مكتبة المستندات SharePoint

الملخص

لديك الآن:

  • نموذج أولي عامل واحد قائم على المعرفة الداخلية والخارجية.
  • برنامج نصي للتقييم قابل للتكرار يوضح أنماط التحقق من صحة المؤسسة.
  • مسار ترقية واضح: المزيد من الأدوات، تنسيق متعدد الوكلاء، تقييم أغنى، نشر.

تقلل هذه الأنماط من الاحتكاك بين النموذج الأولي والإنتاج: يمكنك إضافة مصادر البيانات وفرض الحوكمة ودمج المراقبة دون إعادة كتابة المنطق الأساسي.

الخطوات التالية

يوضح هذا الدرس المرحلة الأولى من رحلة المطور - من الفكرة إلى النموذج الأولي. توفر هذه العينة البسيطة الأساس لتطوير الذكاء الاصطناعي المؤسسي. لمواصلة رحلتك ، استكشف المراحل التالية:

التحسينات الإضافية المقترحة

المرحلة 2: النموذج الأولي للإنتاج

المرحلة 3: الإنتاج إلى التبني

تنظيف الموارد

عندما لا تعود بحاجة إليها، احذف الموارد التي أنشأتها في هذا الدرس:

  1. حذف الوكيل: يتم حذف الوكيل تلقائيا في نهاية main.py (Python) أو Program.cs (C#). إذا أوقفت التشغيل، قم بحذفه يدويا من صفحة الوكلاء في بوابة Foundry.
  2. حذف تشغيل التقييم: في بوابة Foundry، اذهب إلى التقييم، اختر تشغيل التقييم، ثم احذفه.
  3. إزالة SharePoint المستندات النموذجية: إذا قمت برفع ملفات .docx النموذجية إلى موقع SharePoint الإنتاج، قم بإزالتها من مكتبة المستندات.
  4. (اختياري) حذف مشروع Foundry: إذا أنشأت مشروعا فقط لهذا الدرس، قم بحذفه من بوابة Foundry لإزالة جميع الموارد المرتبطة.