إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق فقط على:بوابة Foundry (كلاسيكية). هذه المقالة غير متاحة لبوابة Foundry الجديدة.
تعرف على المزيد حول البوابة الجديدة.
ملحوظة
بعض الروابط في هذا المقال قد تفتح محتوى في وثائق Microsoft Foundry الجديدة بدلا من وثائق Foundry (الكلاسيكية) التي تشاهدها الآن.
تعرف على كيفية عرض نتائج التتبع التي توفر رؤية لتنفيذ تطبيق الذكاء الاصطناعي. استخدم التتبعات لتشخيص استدعاءات الأدوات غير الدقيقة والمطالبات المضللة واختناقات زمن الوصول ودرجات التقييم منخفضة الجودة.
في هذه المقالة، ستتعرف على كيفية:
- تفعيل التتبع لمشروع project.
- أداة OpenAI SDK.
- التقاط محتوى الرسالة (اختياري).
- عرض الجداول الزمنية للتتبع والامتدادات.
- قم بتوصيل التتبع بحلقات التقييم.
تشرح هذه المقالة كيفية عرض نتائج التتبع لتطبيقات الذكاء الاصطناعي باستخدام OpenAI SDK مع OpenTelemetry في Microsoft Foundry.
المتطلبات المسبقه
تحتاج إلى ما يلي لإكمال هذا البرنامج التعليمي:
تم إنشاء project Foundry.
تطبيق الذكاء الاصطناعي يستخدم OpenAI SDK لإجراء استدعاءات إلى نماذج مستضافة في Foundry.
تفعيل التتبع في project الخاص بك
Foundry يخزن traces في Azure Application Insights باستخدام OpenTelemetry. لا تقوم الموارد الجديدة بتوفير Application Insights تلقائيا. قم بربط (أو إنشاء) مورد مرة واحدة لكل مورد في Foundry.
توضح الخطوات التالية كيفية تكوين المورد الخاص بك:
اذهب إلى Foundry portal وانتقل إلى project الخاص بك.
في شريط التنقل الجانبي، حدد التتبع.
إذا لم يكن مورد Azure Application Insights مرتبطا بمورد Foundry الخاص بك، قم بإرفاقه. إذا كان لديك بالفعل مورد Application Insights مقترن، فلن ترى صفحة التمكين أدناه ويمكنك تخطي هذه الخطوة.
لإعادة استخدام Azure Application Insights موجود، استخدم القائمة المنسدلة Application Insights اسم المورد لتحديد موقع المورد واختيار Connect.
نصيحة
للاتصال ب Azure Application Insights الحالي، تحتاج على الأقل إلى access contributor إلى مورد Foundry (أو Hub).
للاتصال بمورد جديد من Azure Application Insights ، اختر الخيار إنشاء جديد.
استخدم معالج التكوين لتكوين اسم المورد الجديد.
افتراضيا، يتم إنشاء المورد الجديد في نفس مجموعة الموارد التي تم إنشاء مورد Foundry فيها. استخدم خيار الإعدادات المتقدمة لتكوين مجموعة موارد أو اشتراك مختلف.
نصيحة
لإنشاء مورد جديد لرؤى Azure Application، تحتاج أيضا إلى دور المساهم في مجموعة الموارد التي اخترتها (أو المجموعة الافتراضية).
اختر إنشاء لإنشاء المورد وربطه بمورد Foundry.
بمجرد تكوين الاتصال، ستكون جاهزا لاستخدام التتبع في أي project ضمن المصدر.
نصيحة
تأكد من تعيين دور قارئ تحليلات Log في مورد Application Insights الخاص بك. لمعرفة المزيد حول كيفية تعيين الأدوار، راجع تعيين أدوار Azure باستخدام Azure portal. استخدم Microsoft Entra groups لإدارة access بسهولة أكبر للمستخدمين.
اذهب إلى صفحة الهبوط في project ونسخ رابط النقطة النهائية الخاص ب project. أنت بحاجة إليه لاحقا.
مهم
استخدام نقطة نهاية project يتطلب تكوين Microsoft Entra ID في تطبيقك. إذا لم يكن لديك معرف Entra مضبوطا، استخدم Azure Application Insights connection string كما هو موضح في الخطوة 3 من الشرح.
عرض نتائج التتبع في بوابة Foundry
بمجرد إعداد التتبع وتجهيز تطبيقك، يمكنك عرض نتائج التتبع في بوابة Foundry:
اذهب إلى Foundry portal وانتقل إلى project الخاص بك.
في شريط التنقل الجانبي، حدد التتبع.
سترى قائمة بنتائج التتبع من تطبيقاتك الآلية. يظهر كل تتبع:
- معرف التتبع: معرف فريد للتتبع
- وقت البدء: عندما بدأ التتبع
- المدة: كم من الوقت استغرقت العملية
- الحالة: حالة النجاح أو الفشل
- العمليات: عدد الامتدادات في التتبع
حدد أي تتبع لعرض نتائج التتبع التفصيلية بما في ذلك:
- الجدول الزمني الكامل للتنفيذ
- بيانات الإدخال والإخراج لكل عملية
- مقاييس الأداء والتوقيت
- تفاصيل الخطأ إن وجدت
- السمات والبيانات الوصفية المخصصة
أداة OpenAI SDK
عند التطوير باستخدام OpenAI SDK، يمكنك تجهيز كودك بحيث يتم إرسال الآثار إلى Foundry. اتبع هذه الخطوات لوضع علامة على التعليمات البرمجية الخاصة بك:
تثبيت الحزم:
pip install azure-ai-projects azure-monitor-opentelemetry opentelemetry-instrumentation-openai-v2(اختياري) التقاط محتوى الرسالة:
- Powershell:
setx OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT true - باش:
export OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true
- Powershell:
احصل على connection string لمصدر رؤى التطبيقات المرتبط (Project > Tracing > Manage Data source > Connection string):
from azure.ai.projects import AIProjectClient from azure.identity import DefaultAzureCredential project_client = AIProjectClient( credential=DefaultAzureCredential(), endpoint="https://<your-resource>.services.ai.azure.com/api/projects/<your-project>", ) connection_string = project_client.telemetry.get_application_insights_connection_string()تكوين Azure Monitor and instrument OpenAI SDK:
from azure.monitor.opentelemetry import configure_azure_monitor from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor configure_azure_monitor(connection_string=connection_string) OpenAIInstrumentor().instrument()أرسل طلبا:
client = project_client.get_openai_client() response = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": "Write a short poem on open telemetry."}], ) print(response.choices[0].message.content)ارجع إلى التتبع في المدخل لعرض التتبعات الجديدة.
قد يكون من المفيد التقاط أقسام من التعليمات البرمجية الخاصة بك التي تمزج بين منطق الأعمال والنماذج عند تطوير التطبيقات المعقدة. يستخدم OpenTelemetry مفهوم النطاقات لالتقاط المقاطع التي تهتم بها. لبدء إنشاء الامتدادات الخاصة بك ، احصل على مثيل لكائن التتبع الحالي.
from opentelemetry import trace tracer = trace.get_tracer(__name__)بعد ذلك ، استخدم المصممين في طريقتك لالتقاط سيناريوهات محددة في التعليمات البرمجية التي تهتم بها. يولد هؤلاء المصممون امتدادات تلقائيا. يستخدم مثال التعليمات البرمجية التالي طريقة تسمى
assess_claims_with_contextالتكرار عبر قائمة المطالبات وتتحقق مما إذا كانت المطالبة مدعومة بالسياق باستخدام LLM. يتم التقاط جميع الاستدعاءات التي تم إجراؤها في هذا الأسلوب ضمن نفس النطاق:def build_prompt_with_context(claim: str, context: str) -> str: return [{'role': 'system', 'content': "I will ask you to assess whether a particular scientific claim, based on evidence provided. Output only the text 'True' if the claim is true, 'False' if the claim is false, or 'NEE' if there's not enough evidence."}, {'role': 'user', 'content': f""" The evidence is the following: {context} Assess the following claim on the basis of the evidence. Output only the text 'True' if the claim is true, 'False' if the claim is false, or 'NEE' if there's not enough evidence. Do not output any other text. Claim: {claim} Assessment: """}] @tracer.start_as_current_span("assess_claims_with_context") def assess_claims_with_context(claims, contexts): responses = [] for claim, context in zip(claims, contexts): response = client.chat.completions.create( model="gpt-4.1", messages=build_prompt_with_context(claim=claim, context=context), ) responses.append(response.choices[0].message.content.strip('., ')) return responsesتبدو نتائج التتبع كما يلي:
قد ترغب أيضا في إضافة معلومات إضافية إلى الفترة الحالية. يستخدم OpenTelemetry مفهوم السمات لذلك. استخدم كائن
traceaccess وإضافة معلومات إضافية. راجع كيفيةassess_claims_with_contextتعديل الأسلوب لتضمين سمة:@tracer.start_as_current_span("assess_claims_with_context") def assess_claims_with_context(claims, contexts): responses = [] current_span = trace.get_current_span() current_span.set_attribute("operation.claims_count", len(claims)) for claim, context in zip(claims, contexts): response = client.chat.completions.create( model="gpt-4.1", messages=build_prompt_with_context(claim=claim, context=context), ) responses.append(response.choices[0].message.content.strip('., ')) return responses
التتبع إلى وحدة التحكم
قد يكون من المفيد أيضا تتبع التطبيق الخاص بك وإرسال التتبعات إلى وحدة تحكم التنفيذ المحلية. قد يكون هذا الأسلوب مفيدا عند تشغيل اختبارات الوحدة أو اختبارات التكامل في التطبيق الخاص بك باستخدام مسار CI/CD تلقائي. يمكن إرسال التتبعات إلى وحدة التحكم والتقاطها بواسطة أداة CI / CD لمزيد من التحليل.
تكوين التتبع كما يلي:
أداة OpenAI SDK كالمعتاد:
from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor OpenAIInstrumentor().instrument()تكوين OpenTelemetry لإرسال آثار إلى وحدة التحكم:
from opentelemetry import trace from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import SimpleSpanProcessor, ConsoleSpanExporter span_exporter = ConsoleSpanExporter() tracer_provider = TracerProvider() tracer_provider.add_span_processor(SimpleSpanProcessor(span_exporter)) trace.set_tracer_provider(tracer_provider)استخدم OpenAI SDK كالمعتاد:
response = client.chat.completions.create( model="deepseek-v3-0324", messages=[ {"role": "user", "content": "Write a short poem on open telemetry."}, ], ){ "name": "chat deepseek-v3-0324", "context": { "trace_id": "0xaaaa0a0abb1bcc2cdd3d", "span_id": "0xaaaa0a0abb1bcc2cdd3d", "trace_state": "[]" }, "kind": "SpanKind.CLIENT", "parent_id": null, "start_time": "2025-06-13T00:02:04.271337Z", "end_time": "2025-06-13T00:02:06.537220Z", "status": { "status_code": "UNSET" }, "attributes": { "gen_ai.operation.name": "chat", "gen_ai.system": "openai", "gen_ai.request.model": "deepseek-v3-0324", "server.address": "my-project.services.ai.azure.com", "gen_ai.response.model": "DeepSeek-V3-0324", "gen_ai.response.finish_reasons": [ "stop" ], "gen_ai.response.id": "aaaa0a0abb1bcc2cdd3d", "gen_ai.usage.input_tokens": 14, "gen_ai.usage.output_tokens": 91 }, "events": [], "links": [], "resource": { "attributes": { "telemetry.sdk.language": "python", "telemetry.sdk.name": "opentelemetry", "telemetry.sdk.version": "1.31.1", "service.name": "unknown_service" }, "schema_url": "" } }
التتبع محليا باستخدام مجموعة أدوات الذكاء الاصطناعي
توفر مجموعة أدوات الذكاء الاصطناعي طريقة بسيطة للتتبع محليا في VS Code. يستخدم جامع محلي متوافق مع OTLP، مما يجعله مثاليا للتطوير والتصحيح دون الحاجة إلى access سحابي.
تدعم مجموعة الأدوات OpenAI SDK وأطر عمل الذكاء الاصطناعي الأخرى من خلال OpenTelemetry. يمكنك رؤية الآثار على الفور في بيئة التطوير الخاصة بك.
للحصول على إرشادات الإعداد التفصيلية وأمثلة التعليمات البرمجية الخاصة ب SDK، راجع التتبع في مجموعة أدوات الذكاء الاصطناعي.