菜单

异步客户端

相关源文件

AsyncClient通过g4f系统提供了一个异步接口,用于与AI提供商进行交互。该客户端使用Python的async/await语法,支持聊天补全、图像生成和响应处理的非阻塞操作。

对于同步操作,请参阅同步客户端。对于REST API接口,请参阅FastAPI端点

架构概述

AsyncClient遵循与同步客户端相同的结构模式,但将所有操作实现为协程。该客户端为不同类型的AI操作维护独立的异步处理器。

来源: g4f/client/__init__.py617-632

AsyncClient 初始化

AsyncClient接受与同步客户端相同的配置参数,但会初始化异步专用组件

组件类型目的
聊天AsyncChat异步处理聊天补全
图像AsyncImages管理图像生成和变体
响应AsyncResponses处理响应类型操作
模型ClientModels共享模型管理(同步)

来源: g4f/client/__init__.py617-632

异步聊天补全

AsyncCompletions.create()方法对于非流式请求返回Awaitable[ChatCompletion],对于流式请求返回AsyncIterator[ChatCompletionChunk]。该方法签名与同步版本相似,但使用异步处理。

核心处理流程

来源: g4f/client/__init__.py644-696

异步响应处理

async_iter_response()函数异步处理提供商响应,包括内容块、元数据和完成信号

来源: g4f/client/__init__.py165-259

异步图像生成

AsyncImages类继承自基础的Images类,但实现了仅限异步的生成和变体操作方法。主要区别在于直接的异步实现,而没有同步版本中存在的asyncio.run()包装器。

图像生成流程

来源: g4f/client/__init__.py705-718 g4f/client/__init__.py444-484

响应格式处理

异步图像处理支持三种具有不同异步处理方式的响应格式

格式异步行为实现
"url"返回原始URL直接URL构建
"b64_json"转换为Base64使用aiohttp.ClientSession获取URL
None (默认)本地保存使用异步文件操作的copy_media()

来源: g4f/client/__init__.py580-615

异步响应系统

AsyncResponses类提供了一个专用的异步接口,用于响应类型操作,与聊天补全不同。该系统处理输入消息并返回ClientResponse对象。

来源: g4f/client/__init__.py737-778

在FastAPI集成中的用法

AsyncClient在FastAPI服务器实现中用于高效处理并发请求

来源: g4f/api/__init__.py152-155 g4f/api/__init__.py351-365 g4f/api/__init__.py491-493 g4f/api/__init__.py430-440

错误处理与资源管理

异步客户端通过safe_aclose()辅助函数实现适当的资源清理,确保即使在错误条件下也能正确关闭异步生成器

来源: g4f/client/__init__.py257-258 g4f/client/__init__.py323-324 g4f/client/helper.py70-73

测试框架

异步客户端使用unittest.IsolatedAsyncioTestCase提供了全面的测试覆盖,以确保适当的异步测试隔离

测试类别异步方法目的
响应测试test_response()验证ChatCompletion对象创建
模型传递test_pass_model()验证模型参数处理
令牌限制test_max_tokens()测试令牌限制执行
流式传输test_max_stream()验证异步流行为
停止序列test_stop()测试停止条件处理

来源: etc/unittest/client.py14-56