AsyncClient通过g4f系统提供了一个异步接口,用于与AI提供商进行交互。该客户端使用Python的async/await语法,支持聊天补全、图像生成和响应处理的非阻塞操作。
对于同步操作,请参阅同步客户端。对于REST API接口,请参阅FastAPI端点。
AsyncClient遵循与同步客户端相同的结构模式,但将所有操作实现为协程。该客户端为不同类型的AI操作维护独立的异步处理器。
来源: g4f/client/__init__.py617-632
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
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() | 测试停止条件处理 |