برنامه نویسی

مدیریت خطای Azure OpenAI در هسته معنایی

در سیستم‌های دنیای واقعی، رسیدگی مؤثر به خطاهای HTTP، به ویژه هنگام تعامل با مدل‌های زبان بزرگ (LLM) مانند Azure OpenAI بسیار مهم است. خطاهای بیش از حد مجاز (توکن در دقیقه یا درخواست در دقیقه) همیشه در یک نقطه اتفاق می افتد و منجر به 429 خطا می شود. این پست وبلاگ رویکردهای مختلف مدیریت خطای HTTP با هسته معنایی و Azure OpenAI را بررسی می‌کند.

پیش فرض

var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
    deploymentName: "gpt-4o-2024-08-06",
    endpoint: "https://resource-name.openai.azure.com",
    apiKey: "api-key"); // Or DefaultAzureCredential
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تنظیم پیش‌فرض Semantic Kernel با Azure OpenAI توسط AddAzureOpenAIChatCompletion. این رویکرد یک خط‌مشی سعی مجدد داخلی ارائه می‌کند که به‌طور خودکار درخواست‌ها را تا سه بار با عقب‌نشینی نمایی تکرار می‌کند. علاوه بر این، می‌تواند سرصفحه‌های HTTP خاصی مانند «دوباره-پس از» را برای اجرای دوباره‌های سفارشی‌تر شناسایی کند.

HttpClient

var factory = provider.GetRequiredService<IHttpClientFactory>();
var httpClient = factory.CreateClient("auzre:gpt-4o");

var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
    deploymentName: "gpt-4o-2024-08-06",
    endpoint: "https://resource-name.openai.azure.com",
    apiKey: "api-key",  // Or DefaultAzureCredential
    httpClient: httpClient);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با پیکربندی یک نمونه HttpClient، می توانید کنترل بیشتری بر مدیریت خطاهای HTTP به دست آورید. زمانی که HttpClient ارائه می‌شود، Semantic Kernel خط‌مشی تکرار پیش‌فرض را غیرفعال می‌کند. این به شما امکان می دهد منطق تکرار سفارشی را با استفاده از کتابخانه Microsoft.Extensions.Http.Resilience پیاده سازی کنید. با این رویکرد، می‌توانید تعداد تلاش‌های مجدد، وقفه‌های زمانی و نحوه رسیدگی به کدهای خطای خاص مانند 429 را تعریف کنید (میزان نرخ بیش از حد مجاز است). اکیداً توصیه می‌شود که سیاست‌های امتحان مجدد را برای مدیریت خطاهای گذرا با HttpClient اضافه کنید

services.AddHttpClient("auzre:gpt-4o")
    // 'standard' automatically handle transient errors inlcuding '429'
    .AddStandardResilienceHandler() 
    .Configure(options =>
        {
            // Options for attempts and time out etc
            options.Retry.MaxRetryAttempts = 5;
        });
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یکی از مزایای مهم استفاده از HttpClient این است که به Azure OpenAI محدود نمی شود. این رویکرد با سایر رابط های هوش مصنوعی مانند OpenAI نیز کار می کند.

AzureOpenAIClient

var azureOpenAIClient = new AzureOpenAIClient(
    endpoint: new Uri("https://resource-name.openai.azure.com"),
    new ApiKeyCredential("api-key"), // Or DefaultAzureCredential
    new AzureOpenAIClientOptions());

var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
    deploymentName: "gpt-4o-2024-08-06",
    azureOpenAIClient);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این رویکرد عملکردی مشابه با راه‌اندازی پیش‌فرض با خط‌مشی سعی مجدد داخلی ارائه می‌دهد. علاوه بر این، AzureOpenAIClient انعطاف پذیری بیشتری را از AzureOpenAIClientOptions فراهم می کند.

var clientOptions = new AzureOpenAIClientOptions
    {
        Transport = new HttpClientPipelineTransport(httpClient),
        RetryPolicy = new ClientRetryPolicy(maxRetries: 5)
    };
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این پیکربندی به شما امکان می‌دهد تا سیاست‌های امتحان مجدد HTTP از HttpClient را با آزمایش‌های مجدد مبتنی بر خط‌مشی خط‌مشی سفارشی از Azure OpenAI SDK ترکیب کنید.

توصیه ها

تنظیم پیش‌فرض ممکن است برای سناریوهایی که اغلب با مشکلات محدودیت رمز مواجه می‌شوید مناسب نباشد.
اگر قبلاً AzureOpenAIClient را ثبت کرده‌اید و به حداکثر کنترل نیاز دارید، این رویکرد به شما امکان می‌دهد از سیاست‌های مشتری HTTP و تلاش‌های مجدد مبتنی بر خط‌مشی خط لوله OpenAI Azure استفاده کنید.

لطفا با خیال راحت در توییتر تماس بگیرید @roamingcode

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا