You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证Azure Open AI配置三元组(端点、密钥、部署名)的有效性?

验证Azure OpenAI配置三元组有效性的合适方法

针对仅用Endpoint、API Key、Deployment Name验证连接有效性的需求,推荐以下两种方案,均不依赖模型部署类型,适合作为健康检查接口:

方案一:调用部署模型元数据API(最优选择)

该API仅获取指定部署的模型元数据,不执行推理操作,轻量级且能精准验证配置有效性,同时兼容所有模型部署类型。

C#代码示例

[HttpGet]
[Route("/healthz/openai")]
public async Task<ActionResult> OpenAIAsync()
{
    var config = m_configuration.GetSection(nameof(AzureOpenAIServiceConfig)).Get<AzureOpenAIServiceConfig>();

    var client = new OpenAIClient(new Uri(config.OpenAIResourceEndpoint), new AzureKeyCredential(config.OpenAIResourceKey));

    try
    {
        // 获取部署模型元数据,验证配置
        var model = await client.GetDeploymentModelAsync(config.OpenAIDeploymentName);
        return Ok($"Azure OpenAI配置有效,部署模型:{model.Value.Id}");
    }
    catch (RequestFailedException ex)
    {
        // 根据错误码返回对应状态
        return ex.Status switch
        {
            401 => Unauthorized("API密钥无效"),
            404 => NotFound("Endpoint或Deployment Name无效"),
            _ => StatusCode((int)ex.Status, $"连接失败:{ex.Message}")
        };
    }
}

核心优势

  • 不依赖模型类型:无论部署的是Chat、Completion还是Embeddings模型,均可正常调用
  • 轻量级:仅获取元数据,资源消耗远低于推理请求
  • 错误定位清晰:通过状态码可直接判断是密钥、端点还是部署名的问题

方案二:多API Fallback(兼容旧版SDK或特殊场景)

如果因SDK版本限制无法调用元数据API,可依次尝试不同类型的轻量级推理请求,覆盖主流模型部署场景:

C#代码示例

[HttpGet]
[Route("/healthz/openai")]
public async Task<ActionResult> OpenAIAsync()
{
    var config = m_configuration.GetSection(nameof(AzureOpenAIServiceConfig)).Get<AzureOpenAIServiceConfig>();

    var client = new OpenAIClient(new Uri(config.OpenAIResourceEndpoint), new AzureKeyCredential(config.OpenAIResourceKey));

    // 先尝试Chat模型请求
    try
    {
        var chatOptions = new ChatCompletionsOptions
        {
            Messages = { new ChatMessage(ChatRole.User, "ping") },
            MaxTokens = 1 // 最小化输出,降低资源消耗
        };
        await client.GetChatCompletionsAsync(config.OpenAIDeploymentName, chatOptions);
        return Ok("Azure OpenAI配置有效(Chat模型)");
    }
    catch (RequestFailedException ex) when (ex.Status == 400 && ex.Message.Contains("does not support chat completions"))
    {
        // Chat模型不支持,尝试Completion模型
        try
        {
            var completionOptions = new CompletionsOptions
            {
                Prompt = "ping",
                MaxTokens = 1
            };
            await client.GetCompletionsAsync(config.OpenAIDeploymentName, completionOptions);
            return Ok("Azure OpenAI配置有效(Completion模型)");
        }
        catch (RequestFailedException ex2) when (ex2.Status == 400 && ex2.Message.Contains("does not support completions"))
        {
            // Completion模型不支持,尝试Embeddings模型
            try
            {
                var embeddingOptions = new EmbeddingsOptions
                {
                    Input = new[] { "ping" }
                };
                await client.GetEmbeddingsAsync(config.OpenAIDeploymentName, embeddingOptions);
                return Ok("Azure OpenAI配置有效(Embeddings模型)");
            }
            catch (RequestFailedException ex3)
            {
                return HandleOpenAIError(ex3);
            }
        }
        catch (RequestFailedException ex2)
        {
            return HandleOpenAIError(ex2);
        }
    }
    catch (RequestFailedException ex)
    {
        return HandleOpenAIError(ex);
    }
}

private ActionResult HandleOpenAIError(RequestFailedException ex)
{
    return ex.Status switch
    {
        401 => Unauthorized("API密钥无效"),
        404 => NotFound("Endpoint或Deployment Name无效"),
        _ => StatusCode((int)ex.Status, $"连接失败:{ex.Message}")
    };
}

核心优势

  • 兼容多种模型部署类型,覆盖绝大多数场景
  • 轻量级推理请求,资源消耗极低

内容的提问来源于stack exchange,提问作者mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:56:38