菜单

网页界面

相关源文件

网页界面提供了一个基于 Flask 的 Web 应用程序,作为 g4f 系统的主要图形用户界面。它包括前端的静态文件服务以及用于聊天功能、文件管理和系统配置的全面 REST API 后端。

有关 FastAPI 服务器端点的信息,请参阅FastAPI 端点。有关媒体处理和文件处理的详细信息,请参阅媒体处理

Flask 应用程序架构

该网页界面围绕两个主要的 Flask 应用程序组件构建,它们协同工作以提供静态内容交付和动态 API 功能。

Flask 应用程序结构

Backend_Api 类扩展了基础 Api 类,并与 Flask 集成,提供 Web 特定功能。Website 类处理静态内容交付和前端路由。

来源:g4f/gui/server/backend_api.py47-84 g4f/gui/server/website.py36-68 g4f/gui/server/api.py24-39

对话和流式传输系统

该网页界面使用服务器发送事件(SSE)实现了实时对话流式传输,以提供响应式聊天功能。

流式响应处理

对话系统通过多个阶段处理传入请求

  1. 请求准备_prepare_conversation_kwargs() 方法从请求中提取模型、提供者、消息和其他参数
  2. 流创建_create_response_stream() 协调对话生成过程
  3. 响应格式化:每个响应块都格式化为 JSON 并通过 SSE 流式传输

处理的主要响应类型

响应类型描述源类
内容来自 AI 响应的文本内容str, MediaResponse
提供者提供者信息和模型详情ProviderInfo
对话对话状态和元数据JsonConversation
错误错误消息和异常处理异常
推理推理步骤和思考过程推理
完成完成状态和完成原因FinishReason
用量令牌用量和计费信息用途

来源:g4f/gui/server/backend_api.py98-138 g4f/gui/server/api.py149-233 g4f/gui/server/api.py247-257

文件管理系统

网页界面提供了全面的文件管理功能,包括上传、处理和基于存储桶的组织。

文件处理管道

文件管理系统支持多种文件类型和处理方法

  1. 上传处理:文件经过验证、安全处理并临时存储
  2. 内容提取:使用 MarkItDown 提取支持格式的文本内容
  3. 存储组织:文件组织在基于存储桶的目录结构中
  4. 媒体处理:图像和媒体文件与元数据分开存储

支持的文件操作

操作端点方法描述
上传文件/backend-api/v2/files/<bucket_id>POST上传多个文件到存储桶
获取存储桶内容/backend-api/v2/files/<bucket_id>GET流式传输存储桶内容和元数据
删除存储桶/backend-api/v2/files/<bucket_id>DELETE删除整个存储桶及其内容
提供媒体/files/<bucket_id>/media/<filename>GET从存储桶提供媒体文件

来源:g4f/gui/server/backend_api.py302-382 g4f/gui/server/backend_api.py383-393 g4f/tools/files.py

模型和提供者信息 API

该网页界面通过专门的 API 端点公开了有关可用模型和提供者的全面信息。

模型信息结构

每个模型条目包含以下信息

字段类型描述
名称字符串模型标识符
图像布尔值支持图像生成
视觉布尔值支持图像输入/视觉
音频布尔值支持音频处理
视频布尔值支持视频处理
提供者数组兼容的提供者名称列表

提供者信息结构

提供者信息包括功能和身份验证要求

字段类型描述
名称字符串提供者类名
标签字符串人类可读的提供者名称
认证布尔值需要身份验证
login_url字符串如果可用,提供身份验证 URL
图像数字支持的图像模型数量
音频数字支持的音频模型数量
视频数字支持的视频模型数量
视觉布尔值支持视觉/图像输入
nodriver布尔值使用浏览器自动化

来源:g4f/gui/server/api.py25-39 g4f/gui/server/api.py77-98 g4f/gui/server/backend_api.py68-81 g4f/gui/server/backend_api.py83-96

身份验证和配置

该网页界面提供用于管理身份验证凭据和系统配置的端点。

身份验证功能

该网页界面支持多种身份验证机制

  1. Cookie/HAR 上传:用户可以上传包含身份验证凭据的 .json.har 文件
  2. API 密钥管理:特定于提供者的 API 密钥通过请求头处理
  3. 会话管理:聊天会话使用唯一标识符进行缓存和共享

配置管理

功能端点描述
Cookie 上传/backend-api/v2/upload_cookies上传身份验证文件
内存管理/backend-api/v2/memory/<user_id>添加/检索对话记忆
聊天共享/backend-api/v2/chat/<share_id>共享和检索聊天会话
用量日志记录/backend-api/v2/usage记录用量统计数据
错误日志记录/backend-api/v2/log记录错误信息

来源:g4f/gui/server/backend_api.py425-436 g4f/gui/server/backend_api.py159-189 g4f/gui/server/backend_api.py438-466 g4f/gui/server/backend_api.py140-157

静态内容和缓存

该网页界面实现了一个复杂的缓存系统,用于静态内容交付和性能优化。

缓存策略

静态内容系统实现了多个缓存层

  1. 本地分发:如果 DIST_DIR 在本地存在,则直接提供文件
  2. 远程缓存:远程内容在本地缓存,并基于版本进行失效处理
  3. 内容转换:HTML 内容被修改为使用适当的资源 URL

缓存键生成

缓存文件是使用包含以下内容的复合键生成的

  • 当前日期(YYYY-MM-DD 格式)
  • 当前版本和最新版本
  • 安全文件名转换
  • 文件扩展名(.html

来源:g4f/gui/server/website.py16-34 g4f/gui/server/website.py70-81 g4f/gui/server/website.py83-84