Flask API 参考详解:从应用对象、上下文代理、会话与路由到信号和 CLI 的核心接口全解析
本文基于 Flask 官方 API 参考文档(docs/api.rst)编写,系统讲解 flask 包对外暴露的全部核心接口:Flask 应用对象、Blueprint、请求/响应对象、session/g/current_app 上下文代理、JSON 与模板渲染、路由注册规则、信号、类视图以及命令行接口。读完后你可以脱离速查手册,直接依据仓库源码理解每个 API 的行为边界、默认值与底层实现位置,快速定位问题并正确使用这些接口。本文对应仓库中 3.2.0 开发版本(见 pyproject.toml 与 CHANGES.rst)。
API 总体结构:flask/__init__.py 导出了什么
Flask 的公开 API 集中在 src/flask/init.py 中统一导出,它把分散在各子模块的实现聚合为 from flask import ... 可用的一级命名空间:
| 导出对象 | 来源模块 | 职责 |
|---|---|---|
Flask、Blueprint、Config |
src/flask/app.py、src/flask/sansio/blueprints.py、src/flask/config.py | 应用对象、蓝图、配置对象 |
request、session、g、current_app |
src/flask/globals.py | 上下文局部代理 |
url_for、abort、redirect、make_response、send_file、send_from_directory、flash、get_flashed_messages、stream_with_context 等 |
src/flask/helpers.py | 实用函数 |
after_this_request、has_app_context、has_request_context、copy_current_request_context |
src/flask/ctx.py | 上下文工具 |
jsonify、dumps、loads |
src/flask/json/init.py | JSON 支持 |
render_template、render_template_string、stream_template、stream_template_string |
src/flask/templating.py | 模板渲染 |
Request、Response |
src/flask/wrappers.py | WSGI 请求/响应包装器 |
10 个核心信号(request_started 等) |
src/flask/signals.py | 事件通知(基于 Blinker) |
官方文档说明:对于 Flask 依赖外部库的部分(如 Blinker、Werkzeug 路由),文档只在关键处给出说明并指向规范文档;本文在相应章节中补充了这些依赖点在仓库中的位置。
应用对象:Flask
Flask 是整个框架的中心对象,它实现了一个 WSGI 应用,并作为视图函数、URL 规则、模板配置等的注册中心,定义位于 src/flask/app.py。
构造参数
from flask import Flask
app = Flask(__name__)
__init__ 接受的参数(见 src/flask/app.py):
| 参数 | 说明 |
|---|---|
import_name |
应用包名。单模块用 __name__;包形式推荐硬编码包名(如 Flask('yourapplication')),否则扩展的调试信息可能不完整 |
static_url_path |
静态文件的 Web 路径,默认与 static_folder 同名 |
static_folder |
静态文件目录,默认 'static',相对 root_path 或绝对路径 |
static_host |
静态路由使用的 host,使用 host_matching=True 且配置了 static_folder 时必需 |
host_matching |
设置 url_map.host_matching,默认 False |
subdomain_matching |
相对 SERVER_NAME 匹配子域,默认 False |
template_folder |
模板目录,默认应用根路径下的 'templates' |
instance_path |
实例目录,默认为包/模块旁的 instance 文件夹 |
instance_relative_config |
True 时相对配置文件名相对实例路径解析 |
root_path |
仅在无法自动检测时(如命名空间包)手动设置 |
构造函数还会做两件值得注意的事:创建 Click 命令组 self.cli(供 flask 命令在发现应用后注册 CLI 命令),并在 static_folder 存在时自动注册 {static_url_path}/<path:filename> 的静态路由(用 weakref 避免应用与视图函数间的引用环,见 src/flask/app.py)。
关键类属性与默认配置
request_class/response_class:默认请求/响应类,替换它们即可全局定制 WSGI 对象(见 src/flask/app.py)。session_interface:默认是SecureCookieSessionInterface()实例,用于替换会话实现(0.8 引入)。Flask.default_config:内置默认配置字典,包括DEBUG: None、TESTING: False、SECRET_KEY: None、PERMANENT_SESSION_LIFETIME: timedelta(days=31)、SESSION_COOKIE_NAME: "session"、SESSION_COOKIE_HTTPONLY: True、MAX_FORM_MEMORY_SIZE: 500_000、MAX_FORM_PARTS: 1_000、MAX_COOKIE_SIZE: 4093、PROVIDE_AUTOMATIC_OPTIONS: True等,完整定义见 src/flask/app.py。
蓝图注册
register_blueprint(blueprint, **options)(src/flask/sansio/app.py)在把蓝图记入 app.blueprints 后调用其 register 方法,支持的选项:
url_prefix:为蓝图路由加前缀;subdomain:蓝图路由匹配的子域;url_defaults:视图参数默认值;name(2.0.1 起):改变蓝图注册名,允许同一蓝图以不同名注册多次,从而在url_for中区分;- 其余关键字参数传给
BlueprintSetupState,可在Blueprint.record回调中读取。
请求入口与工具方法
wsgi_app:WSGI 入口(src/flask/app.py 附近),内部走full_dispatch_request(src/flask/app.py)。test_client(use_cookies=True, **kwargs):返回 FlaskClient 实例,供单元测试发起请求。url_for(...)(src/flask/app.py):生成 URL。参数包括endpoint(以.开头时相对当前蓝图解析)、_anchor(追加#anchor)、_method、_scheme、_external(强制内部/外部 URL),其余关键字作为 URL 变量值,未知键会拼成查询串。请求外调用默认生成外部 URL,此时必须配置SERVER_NAME(以及按需配置APPLICATION_ROOT、PREFERRED_URL_SCHEME),否则抛出RuntimeError;构建失败会先交给handle_url_build_error。make_response(rv)(src/flask/app.py):把视图返回值转换为response_class实例,支持str、bytes、dict(自动 jsonify)等返回形态,禁止返回None。
Blueprint 对象
Blueprint 定义于 src/flask/sansio/blueprints.py,是路由、模板、静态资源与事件回调的分组载体。它本身不直接处理请求,而是被 register_blueprint 挂载到应用时展开;挂载期间的状态由 BlueprintSetupState 承载,Blueprint.record 注册的回调会收到该对象,从而读取 register_blueprint 传入的 options。官方 API 文档为 Blueprint 生成全部成员(含继承成员)的参考页,仓库中可通过 tests/test_blueprints.py 验证嵌套蓝图、name 选项等注册行为。
传入请求数据:Request 与 request 代理
Request 类
Flask 默认的请求对象是 src/flask/wrappers.py 中的 Request,它是 Werkzeug Request 的子类,在 Werkzeug 全部属性之外增加了 Flask 特有的路由状态:
url_rule:匹配到的内部 URL 规则(0.6 起提供),可检查该 URL 允许的方法;view_args:匹配到的视图参数字典,匹配失败时为None;routing_exception:URL 匹配失败时的异常(通常是NotFound类);endpoint/blueprint/blueprints属性:分别返回匹配的端点名、当前蓝图注册名及其祖先链(blueprints2.0.1 起提供)。
从源码结构看,3.1 起还新增了三个可按请求覆盖的限额属性(src/flask/wrappers.py):max_content_length(超限抛 413)、max_form_memory_size(非文件表单字段上限,默认 500 KB)、max_form_parts(multipart 字段数上限,默认 1000)。每个请求默认取应用配置值,也可以对单个 request 设置以仅约束特定视图。
request 全局代理
from flask import request
request 是当前请求的代理,类型为 Request 实例,仅在请求上下文激活时可用(上下文机制见 应用上下文)。在 src/flask/globals.py 中它被实现为基于 ContextVar("flask.app_ctx") 的 LocalProxy,未绑定时访问会抛出带有 "Working outside of request context" 提示的错误,直接告诉你缺少请求上下文。
响应对象:Response
Flask.Response 定义于 src/flask/wrappers.py,是 Werkzeug Response 的子类,两点定制:
- 默认 MIME 类型为
text/html(default_mimetype = "text/html"); - 从 1.0 起内置 JSON 支持(
json_module = json),测试时可用response.json取 JSON 数据;max_cookie_size属性只读地转发MAX_COOKIE_SIZE配置,无应用上下文时回退到 Werkzeug 默认。
通常无需手动创建它:make_response 会替视图返回值转换。要全局替换响应对象,子类化后赋给 Flask.response_class 即可。
会话:session、SessionInterface 与 Cookie 实现
基本用法与安全性前提
设置 app.secret_key(或配置 SECRET_KEY)后即可使用会话。Flask 用签名 Cookie 保存数据:用户能看到内容,但不知道密钥就无法篡改,因此密钥必须是复杂且不可猜测的值。访问当前会话使用 session 代理(src/flask/globals.py),它同样是 ContextVar 上的 LocalProxy,仅在请求上下文内可用。
session 像 dict 但会追踪键的赋值与访问;注意它无法追踪可变值内部的变化,修改列表、字典等必须手动置位:
# 追加到列表不会被检测到
session["numbers"].append(42)
# 需要手动标记为已修改
session.modified = True
实现上,SecureCookieSession 继承 Werkzeug 的 CallbackDict,每次字典更新触发 on_update 回调将 modified 置为 True,这正是“追踪赋值”的底层机制。会话通过 Cookie 跨请求持久化;默认浏览器关闭即清除 Cookie,设置 session.permanent = True 后,Cookie 的有效期为 PERMANENT_SESSION_LIFETIME(默认 31 天,见 default_config)。
SessionMixin 属性
SessionMixin 为会话字典扩展了四个属性:
permanent:映射字典中的_permanent键;new:是否为新会话。实现不保证能检测,混入类默认硬编码False;modified:是否被修改,混入类默认True;accessed:是否被访问过(包括只查键不改值的操作,如in、len,3.1.3 起补齐),为True时响应会带Vary: cookie头。
会话接口体系
替换默认会话实现只需实现 open_session 和 save_session 两个方法,其余有可用默认值(SessionInterface)。官方建议会话对象直接继承 dict 并混入 SessionMixin:
class Session(dict, SessionMixin):
pass
- 若
open_session返回None,Flask 调用make_null_session生成兜底会话;默认的 NullSession 允许只读访问空会话,但任何写入都会抛出RuntimeError("The session is unavailable because no secret key was set...")——这就是未设置secret_key时写会话会报错的来源。 - SecureCookieSessionInterface 是默认实现,其
open_session(src/flask/sessions.py)用itsdangerous.URLSafeTimedSerializer反序列化签名 Cookie,save_session(src/flask/sessions.py)把序列化结果写回响应 Cookie。
注意:
PERMANENT_SESSION_LIFETIME配置可以是整数(秒)或timedelta,而app.permanent_session_lifetime属性始终是timedelta(源码中由_make_timedelta转换,见 src/flask/app.py)。
相关测试见 tests/test_session_interface.py。
测试客户端与测试 CLI
FlaskClient(继承 Werkzeug Client)由 app.test_client() 创建,支持 use_cookies=True 等参数,是单元测试发起请求的标准入口;FlaskCliRunner 用于在测试中执行应用的 Click 命令。两者均在 src/flask/testing.py 中定义,配套测试见 tests/test_testing.py 与 tests/test_cli.py。
应用全局变量:g、current_app 与上下文检查
在函数间共享“仅当前请求有效”的数据不能依赖普通全局变量(线程环境下会串),Flask 提供的 g 正是这种上下文局部对象。g 是一个命名空间代理,指向 _AppCtxGlobals 实例(src/flask/ctx.py,即 Flask.app_ctx_globals_class 的默认值),典型用法是在 before_request 中按会话 ID 加载用户后写入 g.user 供视图使用。0.10 起它绑定到应用上下文而非请求上下文,因此仅在应用上下文激活时可用。
current_app 是当前处理请求的 Flask 应用代理,适合在无法导入应用的地方(应用工厂模式、蓝图、扩展内)访问应用。同样仅在应用上下文内可用。
上下文工具函数(src/flask/ctx.py):
has_request_context()(src/flask/ctx.py):是否存在活动请求上下文;has_app_context()(src/flask/ctx.py):是否存在活动应用上下文;copy_current_request_context(f)(src/flask/ctx.py):装饰器,把当前请求上下文复制到被装饰函数(例如启动独立线程处理请求数据时);after_this_request(f)(src/flask/ctx.py):注册请求结束回调,回调接收response并可返回新响应。
这些代理的共同实现见 src/flask/globals.py:一个名为 flask.app_ctx 的 ContextVar 存当前 AppContext,app_ctx、current_app、g 从它取 .app/.g,request、session 取 .request/.session。未绑定上下文时的报错文案("Working outside of application/request context...")也定义在此文件,遇到此类报错可直接对照 应用上下文文档。
实用函数
以下函数从 src/flask/helpers.py 导出(url_for 除外,见上文应用对象一节):
url_for(endpoint, **values):模板与代码中生成 URL,委托给app.url_for;abort(code_or_response):中止当前请求并抛出对应 HTTP 异常(或重定向响应);redirect(location, code=302, ...):返回重定向响应。注意 3.2 起默认状态码从302改为303,提示客户端一律切换为GET(见 CHANGES.rst);make_response(rv):把视图返回值转为响应对象,可传status、headers;after_this_request(f):请求结束回调;send_file(path_or_file, ...)/send_from_directory(directory, filename, ...):发送文件/目录内文件,支持条件请求、conditional、max_age等参数;get_template_attribute(template_name, attribute)(src/flask/helpers.py):从模板读取 Jinja 变量/函数。
消息闪现:flash 与 get_flashed_messages
flash(message, category="message")(src/flask/helpers.py)把消息存入会话,下一次请求时由 get_flashed_messages(with_categories=False, category_filter=(), latest_only=False)(src/flask/helpers.py)取出,并在模板侧配合 get_flashed_messages 全局函数使用。每次 flash 会发出 message_flashed 信号(后文信号章节有示例),该模式详见 patterns/flashing.rst。
JSON 支持
Flask 默认使用 Python 内置 json 模块处理 JSON,但 JSON 行为由应用级 JSON provider 驱动:通过 app.json_provider_class 或 app.json 属性可以整体替换实现。flask.json 中的函数在应用上下文激活时会使用 app.json 的方法。模块位置:src/flask/json/init.py、src/flask/json/provider.py、src/flask/json/tag.py。
核心接口:
jsonify(*args, **kwargs)(src/flask/json/init.py):返回 JSON 响应,支持字典、列表或成对参数;dumps(obj, **kwargs)/loads(s, **kwargs):序列化/反序列化,dump/load为其历史别名;- JSONProvider:抽象基类,定义
dumps/loads、response、default钩子等扩展点; - DefaultJSONProvider:默认实现,可序列化
datetime、uuid、dataclasses等; - src/flask/json/tag.py:
TaggedJSONSerializer提供带类型标签的 JSON(用于会话等需要保真的场景)。
Jinja 的 |tojson 过滤器已配置为使用应用的 JSON provider,并自动追加 |safe,因此可安全地把数据渲染进 HTML <script> 标签:
<script></script>
JSON 行为的完整测试见 tests/test_json.py 与 tests/test_json_tag.py。
模板渲染
src/flask/templating.py 提供四个渲染入口(上下文规则与自动转义见 templating 文档):
render_template(template_name_or_endpoint, **context)(src/flask/templating.py):按名字/端点渲染模板为字符串;render_template_string(source, **context)(src/flask/templating.py):直接渲染模板源码字符串;stream_template/stream_template_string(src/flask/templating.py / #L200):生成器版本,逐块产出模板输出,适合大型模板流式响应;get_template_attribute:读取模板中的变量或函数。
配置:Config
Config 是 dict 的子类,提供三种填充方式(见类文档与 config 文档):
# 从 Python 文件加载(只收集大写键)
app.config.from_pyfile('yourconfig.cfg')
# 从对象/模块加载
DEBUG = True
SECRET_KEY = 'development key'
app.config.from_object(__name__)
# 从环境变量指向的文件加载
app.config.from_envvar('YOURAPPLICATION_SETTINGS')
from_pyfile 时文件路径相对应用的 root_path 解析;ConfigAttribute 描述符(src/flask/config.py)让 app.secret_key、app.debug 等属性透明地读写 config 字典,并支持 get_converter 做值转换(例如把 PERMANENT_SESSION_LIFETIME 整数转为 timedelta)。
流辅助:stream_with_context
stream_with_context(generator)(src/flask/helpers.py)包装生成器响应:默认情况下生成器在请求上下文之外执行,使用该函数可让生成器逐块读取 request 等上下文对象,适合边读请求边流式产出的场景。
核心内部对象
- AppContext:应用上下文,持有当前应用、
g实例与 URL adapter,是 Flask 处理请求的基础设施;3.2 起与请求上下文合并为单一上下文(RequestContext仅为弃用别名,4.0 移除,见 CHANGES.rst)。 flask.globals.app_ctx:活动AppContext的代理,内部对象,多数情况下你更需要current_app、g、request、session;request_ctx是 3.2 弃用的旧别名。- BlueprintSetupState:蓝图注册时的状态对象,供
record回调使用。
信号(Blinker)
信号由 Blinker 库提供,Flask 核心信号全部定义在 src/flask/signals.py,是同一 Namespace 下的具名信号,介绍见 signals 文档。核心信号列表:
| 信号 | 触发时机 |
|---|---|
template_rendered |
模板渲染成功后,传 template 与 context |
before_render_template |
模板渲染前,传 template 与 context |
request_started |
请求上下文建立后、任何请求处理之前 |
request_finished |
响应发回客户端之前,传 response |
got_request_exception |
请求处理中出现未处理异常(包括调试期),传 exception;已注册错误处理器的 HTTPException 不触发 |
request_tearing_down |
请求拆卸时,异常发生时也一定调用;0.9 起传 exc 关键字 |
appcontext_tearing_down |
应用上下文拆卸时,同样保证调用,传 exc |
appcontext_pushed |
应用上下文入栈时(0.10 起),sender 为应用 |
appcontext_popped |
应用上下文出栈时(0.10 起) |
message_flashed |
flash 调用时,传 message 与 category(0.10 起) |
典型订阅示例(来自官方文档):
def log_template_renders(sender, template, context, **extra):
sender.logger.debug('Rendering template "%s" with context %s',
template.name or 'string template', context)
from flask import template_rendered
template_rendered.connect(log_template_renders, app)
request_started 的订阅者此时已可访问 request 代理;request_finished 的订阅者收到待发送的 response。对于 got_request_exception,官方示例展示了如何只对特定异常类型做额外日志(如 SecurityException)。appcontext_pushed 常用于测试中临时注入 g 数据,文档给出的完整模式是用 contextmanager 包裹 appcontext_pushed.connected_to(handler, app),在测试客户端请求期间临时设置 g.user。request_tearing_down / appcontext_tearing_down 适合关闭数据库会话等资源,且即使请求抛异常也会被调用(当前在常规 teardown 处理器之后触发,但不保证该顺序)。
类视图:View 与 MethodView
0.7 起提供类视图。View 通过 as_view() 把类实例化为可调用的视图对象;MethodView 按 HTTP 方法分发到 get、post、put、delete、patch 等同名方法,是 REST 风格端点的常见写法。使用见 views 文档 与 tests/test_views.py。
URL 路由注册
定义路由规则有三种方式:
Flask.route装饰器(src/flask/sansio/scaffold.py);Flask.add_url_rule(src/flask/sansio/app.py);- 直接操作暴露为
Flask.url_map的 Werkzeug 路由系统。
变量转换器
路由变量用尖括号表示(/user/<username>)。默认 string 接受不含斜杠的任意文本,可用 <converter:name> 指定其他转换器。内置转换器:
| 转换器 | 说明 |
|---|---|
string |
接受不含斜杠的任意文本(默认) |
int |
接受整数 |
float |
类似 int,针对浮点数 |
path |
类似默认,但接受斜杠 |
any |
匹配给定项之一 |
uuid |
接受 UUID 字符串 |
自定义转换器通过 Flask.url_map 定义,测试见 tests/test_converters.py。变量会以关键字参数传给视图函数:
@app.route('/')
def index():
pass
@app.route('/<username>')
def show_user(username):
pass
@app.route('/post/<int:post_id>')
def show_post(post_id):
pass
尾斜杠规则
为使每个 URL 唯一,规则如下:
- 规则以斜杠结尾而请求不带斜杠时,自动 308 重定向到带斜杠的页面;
- 规则不以斜杠结尾而请求带斜杠时,抛 404。
这与 Web 服务器处理静态文件的方式一致,也使相对链接目标可以安全使用。
多规则与默认值
同一视图可以注册多条唯一规则,并可指定默认值:
@app.route('/users/', defaults={'page': 1})
@app.route('/users/page/<int:page>')
def show_users(page):
pass
即 /users/ 是第 1 页,/users/page/N 是第 N 页。若 URL 含默认值,访问完整形式会被 308 重定向到更简单的形式(/users/page/1 → /users/)。注意:如果路由同时处理 GET 和 POST,默认值路由应只处理 GET,因为重定向无法保留表单数据:
@app.route('/region/', defaults={'id': 1})
@app.route('/region/<int:id>', methods=['GET', 'POST'])
def region(id):
pass
route / add_url_rule 参数
两者参数一致,唯一区别是 route 用装饰器定义视图函数、add_url_rule 用 view_func 参数:
| 参数 | 说明 |
|---|---|
rule |
URL 规则字符串 |
endpoint |
URL 规则端点名;未显式给出时默认取视图函数名 |
view_func |
处理该端点请求的函数;不传之后可通过 app.view_functions 字典以端点为键补存 |
defaults |
该规则的参数字典 |
subdomain |
启用子域匹配时的子域规则,未指定则用默认子域 |
**options |
转发给底层 Werkzeug Rule 的选项;methods 限定规则响应的方法列表(GET、POST 等),以关键字参数传入。默认只监听 GET(隐含 HEAD);Flask 0.6 起自动加入并处理 OPTIONS |
源码层面,add_url_rule 还会:未给 methods 时读取视图函数的 methods 属性,否则默认 ("GET",);合并视图函数的 required_methods;按 PROVIDE_AUTOMATIC_OPTIONS 配置与 provide_automatic_options 属性决定是否自动加 OPTIONS;端点冲突(同一端点绑定不同函数)会直接 AssertionError。
视图函数选项
视图函数对象可以挂载若干属性以覆盖默认行为(add_url_rule 会读取它们):
__name__:默认用作端点名,显式endpoint优先;蓝图前缀默认附加在前面,无法从函数本身定制;methods:注册规则时未传methods,则从视图函数对象的methods属性读取;provide_automatic_options:强制启用或禁用 HTTPOPTIONS自动响应,适合需要按视图定制OPTIONS的装饰器(0.8 起;3.2 起可强制启用,即使全局配置禁用了它);required_methods:注册 URL 规则时总会追加这些方法,即使route()调用显式覆盖了methods。
完整示例:
def index():
if request.method == 'OPTIONS':
# 自定义 OPTIONS 处理
...
return 'Hello World!'
index.provide_automatic_options = False
index.methods = ['GET', 'OPTIONS']
app.add_url_rule('/', index)
命令行接口(CLI)
CLI 相关 API 位于 src/flask/cli.py:
- FlaskGroup:基于 Click 的命令组,
flask命令发现应用后从它和已注册蓝图中收集命令; - AppGroup:单个应用上的命令组(即
app.cli),把app注入命令上下文,支持懒加载应用; - ScriptInfo:保存如何定位应用工厂/应用实例的元数据(
create_app入口、参数等); - load_dotenv:加载
.env文件到环境变量(flask run默认行为之一); - with_appcontext:装饰器,使命令回调在应用上下文内执行;
pass_script_info:装饰器,把ScriptInfo实例作为首参传入回调;run_command/shell_command:内置的flask run(开发服务器)与flask shell命令。
配合 CLI 文档 与 tests/test_cli.py,可以验证命令发现、环境变量加载、--app 参数等实际行为。
小结
docs/api.rst 覆盖的接口可归为四类:中心对象(Flask、Blueprint、Config)、上下文体系(request、session、g、current_app 及其 LocalProxy + ContextVar 实现)、请求生命周期工具(路由注册、响应构造、JSON/模板、流式响应、信号)与工程支撑(测试客户端、CLI)。3.2 开发版的重要变化包括:RequestContext 并入 AppContext(旧别名将在 4.0 移除)、redirect 默认状态码改为 303、请求分发相关方法以 ctx 为首参(旧签名仍兼容但已弃用)。使用任一接口时,按本文给出的相对路径可直接在仓库中对照实现,确认默认值、错误路径与版本适用前提。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00