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

OpenAI API从0.28升级至1.2.2后出现APIConnectionError问题

问题排查与修复方案

核心问题分析

你遇到的APIConnectionError主要源于两个关键问题:

  1. 配置未正确传递:_get_completion函数直接使用常量文件的固定配置,未接收TextCompletion类初始化时传入的测试配置,导致客户端连接到错误的端点。
  2. 全局配置冗余且无效:v1.x版本的AzureOpenAI客户端是独立实例,不需要设置openai.api_type等全局变量,这些配置对客户端无作用,反而可能造成混淆。

修复步骤与代码修改

1. 传递配置到API调用函数

修改TextCompletion的predict方法,将实例持有的配置传递给_get_completion;同时更新_get_completion函数,使用传入的配置初始化客户端。

修改后的主文件代码:

ROLE_KEY = 'role'
ROLE_VALUE = 'user'
CONTENT_KEY = 'content'

@backoff.on_exception(
    backoff.expo,
    (openai.APIError, openai.Timeout, openai.RateLimitError, KeyError, openai.APIConnectionError),
    max_tries=1
)
def _get_completion(it_app: str, config: dict):
    """
    Function to make an API call to OpenAI Chat Completion endpoint and receive a response.
    """
    prompt = it_app
    messages = [{ROLE_KEY: ROLE_VALUE, CONTENT_KEY: prompt}]

    try:
        client = AzureOpenAI(
                    azure_endpoint=config[const.OPENAI_API_BASE], 
                    api_key=config[const.OPENAI_API_KEY],
                    api_version=config[const.OPENAI_API_VERSION]
                    )
        
        response = client.chat.completions.create(
            model=config.get(const.OPENAI_API_ENGINE, const.OPENAI_API_ENGINE),
            messages=messages,
            temperature=const.OPENAI_API_TEMPERATURE,
        )
        
        return response.choices[0].message.content
    except (openai.BadRequestError, openai.APIConnectionError) as e:
        print(f"请求错误: {str(e)}")
        return None


class TextCompletion():

    def __init__(self, config: dict[str, str]):
        """
        :param config: dictionary containing the required Azure OpenAI configuration keys
        """
        self.config = config

    def predict(self, model_input: str):
        openai_results = _get_completion(model_input, self.config)
        return openai_results

2. 确保Azure端点URL完整

检查配置中的OPENAI_API_BASE必须是完整的HTTPS URL,格式为:

https://<你的Azure资源名称>.openai.azure.com/

缺少协议头(https://)或域名不完整会直接导致连接失败。

3. 修正测试配置的参数匹配

确保测试代码中的OPENAI_API_ENGINE值与Azure门户中部署的模型名称完全一致,避免因模型名称错误引发的间接连接问题。

修改后的测试代码(示例):

config = {
    const.OPENAI_API_BASE : 'https://your-resource-name.openai.azure.com/',
    const.OPENAI_API_ENGINE : 'gpt-35-turbo-0613',
    const.OPENAI_API_KEY : 'your-actual-api-key',
    const.OPENAI_API_TYPE : 'azure',
    const.OPENAI_API_VERSION : '2023-05-15',
}

text_completion = TextCompletion(config)
print(text_completion.predict(model_input='which game is famous in India?'))

4. 扩展异常捕获范围

在backoff装饰器的异常列表中加入openai.APIConnectionError,确保连接类错误能被正确捕获处理;同时在try-except块中新增该异常类型,方便调试错误详情。

额外验证点

  • 确认Azure资源的网络权限:如果你的Azure OpenAI资源配置了虚拟网络限制,需确保运行代码的环境在允许访问的网络范围内。
  • 检查API密钥有效性:确保配置中的API密钥未过期,且拥有对应模型部署的调用权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:44:52