获取模型列表失败: Invalid `http_client` argument; Expected an instance of `httpx.AsyncCl...

2026年04月30日 19:25 processing

错误信息

获取模型列表失败: Invalid `http_client` argument; Expected an instance of `httpx.AsyncClient` but got <class 'httpx.AsyncClient'>

AI 解决方案

报错分析报告

1.错误翻译


原文:Invalid `http_client` argument; Expected an instance of `httpx.AsyncClient` but got <class 'httpx.AsyncClient'>
译文:无效的`http_client`参数;期望得到`httpx.AsyncClient`的实例,但实际得到的是<class 'httpx.AsyncClient'>

2. 原因分析


  • 根本原因:传入的http_client实例类型与预期不匹配(类名相同但类对象身份或检查逻辑导致不匹配)

  • 发生位置:调用需httpx.AsyncClient实例的函数/方法时,传入了未通过类型检查的实例
  • 3. 解决方案


    import httpx
    
    # 1. 正确创建AsyncClient实例(统一导入路径)
    http_client = httpx.AsyncClient()
    
    # 2. 若涉及类型检查,用isinstance替代严格类匹配
    def validate_http_client(client):
        if not isinstance(client, httpx.AsyncClient):  # ✅ 正确检查方式
            raise ValueError("Invalid http_client argument")
        return client
    
    # 使用示例
    async def get_models():
        async with http_client as client:
            validated_client = validate_http_client(client)
            # 后续调用逻辑
    

    4. 预防措施


  • 统一导入规范:始终通过import httpx后使用httpx.AsyncClient,避免多路径导入导致的类对象差异

  • -类型检查最佳实践:用isinstance(obj, httpx.AsyncClient)替代type(obj) is httpx.AsyncClient,支持子类实例
  • 工具推荐:用mypy做静态类型检查,提前发现类型不匹配问题
  • ---
    请提供您的报错信息: