ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Data Formulator 本地开发环境搭建与生产部署完全指南

Data Formulator 本地开发环境搭建与生产部署完全指南 Data Formulator 本地开发环境搭建与生产部署完全指南【免费下载链接】data-formulator Data Formulator is an interactive AI-powered data analysis system makes it easy to connect, explore and visualize data.项目地址: https://gitcode.com/GitHub_Trending/da/data-formulatorData Formulator 是一个交互式 AI 数据分析系统支持自然语言连接、探索与可视化数据。本文以仓库根目录的 DEVELOPMENT.md 为主体系统讲解从零搭建本地开发环境后端 Python 前端 TypeScript、生产构建与 Docker 部署、沙箱执行隔离、Azure Blob 工作区存储以及面向多用户场景的三套部署画像与身份安全模型。读完本文你将能独立完成本地开发、构建分发、云端部署与安全加固的全流程。环境前置要求在开始之前请确认本机已具备以下工具链依赖版本要求用途Python 3.11后端服务Flask与 AI Agent 运行时Node.js当前 LTS 即可前端 Vite 构建与开发服务器Yarn1.x经典版前端依赖管理与脚本执行uv推荐或 pip最新稳定版Python 依赖管理与虚拟环境其中 uv 是官方推荐的工具它更快并且通过uv.lock提供可复现构建。仓库根目录已包含requirements.txt、uv.lock、pyproject.toml等依赖清单文件。后端Python环境搭建方式一使用 uv推荐uv 通过 lockfile 保证依赖版本可复现一条命令即可完成环境创建与依赖安装uv sync # 创建 .venv 并安装全部依赖 uv run data_formulator # 运行应用自动打开浏览器 uv run data_formulator --dev # 仅启动后端供前端开发使用两种启动方式的适用场景普通用户 / 测试完整应用使用uv run data_formulator服务启动后自动打开浏览器访问 http://localhost:5567前端开发使用uv run data_formulator --dev只启动后端随后单独执行yarn start启动 Vite 开发服务器地址为 http://localhost:5173。--dev模式的关键行为可以在 app.py 中找到实现依据当args.dev为真时不会调用webbrowser.open且 Flask 会以debugTrue模式运行带 debugger 与 reloader。方式二使用 pip备选1. 创建虚拟环境python -m venv venv source venv/bin/activate # Unix # 或 .\venv\Scripts\activate # Windows2. 安装依赖pip install -r requirements.txt3. 配置环境变量可选将.env.template复制为.env并填入你的取值API Keys为每个要使用的 LLM 供应商设置{PROVIDER}_ENABLEDtrue、{PROVIDER}_API_KEY...和{PROVIDER}_MODELS...。例如.env.template中预置了 OpenAI、Azure OpenAI、Anthropic、Ollama 四组模板含OPENAI_MODELSgpt-5.5、ANTHROPIC_MODELSclaude-sonnet-4-20250514、OLLAMA_API_BASEhttp://localhost:11434等示例其余 LiteLLM 支持的供应商均可按PROVIDER_API_KEY、PROVIDER_MODELS的规律追加服务器设置DISABLE_DISPLAY_KEYS、SANDBOX等详见下文 CLI 参数参考表Azure Blob workspace可选见下文Azure Blob Storage 工作区一节。这样 Data Formulator 会在启动时自动加载 API Keys无需在 UI 中再手动输入。环境变量的加载逻辑位于 app.py启动早期即通过load_dotenv读取项目根目录与包目录下的.env。4. 运行应用# Unix ./local_server.sh # Windows .\local_server.bat # 或直接执行 data_formulator # 自动打开浏览器 data_formulator --dev # 仅后端供前端开发仓库中的 local_server.sh 脚本展示了自动探测逻辑优先使用uv run data_formulator --port 5567 --dev若系统没有 uv 则回退到python -m data_formulator.app。前端TypeScript开发环境1. 安装 NPM 包yarn2. 开发模式先在另一个终端启动后端uv run data_formulator --dev # 或 ./local_server.sh然后启动前端开发服务器带热更新yarn start打开 http://localhost:5173 查看页面。Vite 已配置热模块替换HMR修改代码后页面自动刷新ESLint 错误也会实时显示在控制台。API 请求的转发在 vite.config.ts 中定义/api与/auth/callback前缀会被代理到http://localhost:${API_PORT}默认 5567因此前后端分离开发时无需处理跨域。进阶针对本地flint-chart联合开发Data Formulator 依赖已发布的 npm 包flint-chart前端图表渲染引擎见 package.json 中的flint-chart: ^0.2.1。默认情况下FLINT_CHART_LOCAL未设置flint-chart的裸导入会解析到该 npm 包。如需与本地 Flint 代码库联合开发共享热更新可将FLINT_CHART_LOCAL指向其源码FLINT_CHART_LOCAL../flint-chart/packages/flint-js/src yarn start # 测试 FLINT_CHART_LOCAL../flint-chart/packages/flint-js/src yarn test这是一个可选的进阶开发者选项——常规开发与 CI 应保持未设置状态使用已安装的 npm 包。该别名在 vite.config.ts 与vitest.config.ts中接线通过resolve.alias动态注入同时对vega、vega-lite、echarts、chart.js等可选 peer 依赖做 dedupe 以保持单一副本。生产构建1. 先构建前端再构建后端编译 TypeScript 并打包前端yarn build前端产物输出到py-src/data_formulator/dist目录。Vite 构建配置vite.config.ts将主入口命名为DataFormulator.js并按vendor-react、vendor-mui、vendor-vega、vendor-d3等分组拆分 vendor chunk以改善缓存与并行加载。然后构建 Python 包# 使用 uv uv build # 或使用 pip pip install build python -m build这会生成位于dist/目录的 wheel 文件命名为data_formulator-version-py3-none-any.whl。2. 验证构建产物在虚拟环境中安装 wheel推荐# 将 version 替换为实际构建版本 pip install dist/data_formulator-version-py3-none-any.whl安装完成后即可运行data_formulator # 或 python -m data_formulator打开 http://localhost:5567 查看。入口逻辑见main.py它调用app.run_app()完成参数解析、蓝图注册与服务器启动。Docker 部署Docker 是无需本地安装 Python 或 Node.js 即可运行 Data Formulator 的最简方式。快速开始复制环境模板并添加 API Keyscp .env.template .env # 编辑 .env设置 OPENAI_API_KEY、ANTHROPIC_API_KEY 等构建并启动容器docker compose up --build在浏览器打开 http://localhost:5567。停止容器使用docker compose down。工作区数据上传的文件、会话持久化在 Docker 卷data_formulator_home中容器重启后依然保留——这一配置定义在 docker-compose.yml将命名卷挂载到/home/appuser/.data_formulator。手动构建镜像docker build -t># 使用默认 local 沙箱 python -m data_formulator # 使用 Docker 沙箱需要 Docker daemon python -m data_formulator --sandbox dockerDocker 沙箱镜像由 py-src/data_formulator/sandbox/Dockerfile.sandbox 构建docker build -t>pip install azure-storage-blob # 或使用 uv uv pip install azure-storage-blob2. 创建存储账户与容器一次性设置az storage account create -n account -g resource-group -l eastus --sku Standard_LRS az storage container create -n>az storage account show-connection-string -n account -g resource-group -o tsv4. 写入.envWORKSPACE_BACKENDazure_blob AZURE_BLOB_CONNECTION_STRINGDefaultEndpointsProtocolhttps;AccountName... # AZURE_BLOB_CONTAINERdata-formulator # 默认值按需修改5. 正常运行uv run data_formulator --dev或以 CLI 参数形式传入data_formulator --workspace-backend azure_blob \ --azure-blob-connection-string DefaultEndpointsProtocolhttps;AccountName...生产环境Entra ID无需密钥在生产环境Azure App Service、AKS 等中可以通过Managed Identity让应用免密访问 blob 存储彻底消除连接字符串这类明文密钥。1. 安装额外依赖pip install azure-storage-blob azure-identity2. 为应用的 Managed Identity 分配角色# 获取 App Service 的 principal ID PRINCIPAL_ID$(az webapp identity show -n app-name -g rg --query principalId -o tsv) # 授予存储账户 Storage Blob Data Contributor 角色 az role assignment create \ --assignee $PRINCIPAL_ID \ --role Storage Blob Data Contributor \ --scope /subscriptions/sub/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/account3. 设置环境变量无需任何密钥WORKSPACE_BACKENDazure_blob AZURE_BLOB_ACCOUNT_URLhttps://account.blob.core.windows.net # AZURE_BLOB_CONTAINERdata-formulator应用使用DefaultAzureCredential它会自动拾取 Managed Identity。4. 本地开发走同一 Entra ID 路径先用 Azure CLI 登录az login # 为你的账号授予相同的 Storage Blob Data Contributor 角色 az role assignment create \ --assignee your-emailexample.com \ --role Storage Blob Data Contributor \ --scope /subscriptions/sub/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/account然后设置WORKSPACE_BACKENDazure_blob AZURE_BLOB_ACCOUNT_URLhttps://account.blob.core.windows.net此时DefaultAzureCredential会使用你的az login会话。认证方式汇总方式环境变量适用场景连接字符串AZURE_BLOB_CONNECTION_STRING本地开发、快速测试Entra IDManaged IdentityAZURE_BLOB_ACCOUNT_URLAzure App Service、AKS —— 无密钥Entra IDaz loginAZURE_BLOB_ACCOUNT_URL本地开发免密钥Entra IDservice principalAZURE_BLOB_ACCOUNT_URLAZURE_CLIENT_ID/AZURE_TENANT_ID/AZURE_CLIENT_SECRETCI/CD 流水线注意如果同时设置了AZURE_BLOB_CONNECTION_STRING与AZURE_BLOB_ACCOUNT_URL连接字符串优先。该优先级逻辑与 CLI 参数解析见 app.py。Blob 目录布局所有工作区数据存储在容器内datalake_root/sanitized_identity_id/之下data-formulator/ ← 容器 workspaces/ ← datalake_root默认 browser_550e8400.../ ← 匿名用户工作区 workspace.yaml sales_data.parquet user_alice_example_com/ ← 已认证用户工作区 workspace.yaml quarterly_report.parquetCLI 参数参考标志环境变量默认值说明--workspace-backendWORKSPACE_BACKENDlocallocal、azure_blob或ephemeral--azure-blob-connection-stringAZURE_BLOB_CONNECTION_STRING—共享密钥连接字符串--azure-blob-account-urlAZURE_BLOB_ACCOUNT_URL—用于 Entra ID 认证的账户 URL--azure-blob-containerAZURE_BLOB_CONTAINERdata-formulatorBlob 容器名部署画像Deployment ProfilesData Formulator 支持三种部署配置。所有默认值都针对画像 1单用户本地优化——只有进行多用户部署时才需要设置相应标志。画像 1单用户本地默认运行在localhost的个人实例。无需登录全部功能可用。# 全部使用默认值 —— 直接运行 data_formulator # 或等效写法 data_formulator \ --workspace-backend local \ --sandbox local设置值原因AUTH_PROVIDER(未设置)单用户无需登录WORKSPACE_BACKENDlocal工作区持久化到~/.data_formulator/DISABLE_DATA_CONNECTORSfalse完整访问 MySQL、PostgreSQL 等DISABLE_CUSTOM_MODELSfalse用户可添加任意 LLM 端点DISABLE_DISPLAY_KEYSfalse用户可查看/管理自己的 API Keys凭据保险库自动启用跨重启记住数据库凭据身份local:os_username固定、由操作系统派生 —— 清除 localStorage 不会孤立数据安全说明在单用户 localhost 模式下服务端完全忽略X-Identity-Id请求头改用由操作系统用户名派生的固定身份如local:alice。这意味着保险库凭据与工作区绑定在你的 OS 账号上而非随机的浏览器 UUID——清除 localStorage 不会让你的数据失联。该判定逻辑位于 identity.py当未配置AUTH_PROVIDER且监听地址为127.0.0.1/localhost/::1时通过getpass.getuser()取得 OS 用户名并构造local:username。画像 2多用户匿名演示 / 公开托管共享服务器例如用于演示、工作坊、公开访问。无登录、无服务端状态、无敏感功能。data_formulator \ --workspace-backend ephemeral \ --disable-data-connectors \ --disable-custom-models \ --disable-display-keys快捷方式--disable-database或DISABLE_DATABASEtrue用一个标志打包上述全部选项。或通过环境变量配置WORKSPACE_BACKENDephemeral DISABLE_DATA_CONNECTORStrue DISABLE_CUSTOM_MODELStrue DISABLE_DISPLAY_KEYStrue # 预配置用户可访问的 LLM 模型 OPENAI_ENABLEDtrue OPENAI_API_KEYsk-... OPENAI_MODELSgpt-4.1设置值原因AUTH_PROVIDER(未设置)匿名访问用于演示WORKSPACE_BACKENDephemeral无服务端持久化 —— 数据仅存于浏览器 IndexedDBDISABLE_DATA_CONNECTORStrue关键—— 防止通过身份伪造暴露数据库凭据DISABLE_CUSTOM_MODELStrue防止用户添加任意 LLM 端点SSRF 风险DISABLE_DISPLAY_KEYStrue在 UI 中隐藏服务端配置的 API Keys凭据保险库N/A无连接器 → 无需存储凭据身份匿名browser:uuid可接受 —— 没有需要保护的敏感服务端状态安全说明禁用数据连接器后匿名身份伪造风险被彻底消除——服务端没有任何数据库凭据或持久化工作区可被访问。每个用户的数据完全存在于其浏览器中。服务端唯一的共享资源是 LLM 代理由DF_ALLOWED_API_BASES进行锁定。--disable-database的实现可在 app.py 中看到它会强制将工作区后端切换为ephemeral并同时置位disable_data_connectors、disable_custom_models、disable_display_keys三个开关。画像 3多用户认证企业 / 团队带 SSO 登录的共享服务器。功能完整身份隔离正确。data_formulator \ --workspace-backend azure_blob \ --disable-display-keysAUTH_PROVIDERoidc OIDC_ISSUER_URLhttps://your-idp.example.com/realms/main OIDC_CLIENT_IDdata-formulator ALLOW_ANONYMOUSfalse WORKSPACE_BACKENDazure_blob AZURE_BLOB_ACCOUNT_URLhttps://account.blob.core.windows.net DISABLE_DISPLAY_KEYStrue DISABLE_CUSTOM_MODELStrue FLASK_SECRET_KEYgenerate-with-secrets-token-hex-32设置值原因AUTH_PROVIDERoidc/github/azure_easyauth来自 SSO 的已验证身份ALLOW_ANONYMOUSfalse必须登录 —— 无匿名回退WORKSPACE_BACKENDazure_blob或local按用户持久化工作区DISABLE_DATA_CONNECTORSfalse安全 —— 身份来自认证提供方不可伪造DISABLE_CUSTOM_MODELStrue用户仅使用服务端配置的模型DISABLE_DISPLAY_KEYStrue隐藏服务端密钥用户自行添加自己的FLASK_SECRET_KEY显式设置服务器重启后会话保持稳定所必需凭据保险库自动启用数据库凭据限定在已验证的user:id作用域身份来自认证提供方的user:sub服务端验证不可伪造安全说明配置认证提供方后get_identity_id()从 IdP token 返回user:verified_id——X-Identity-Id请求头被完全忽略。工作区、保险库凭据与数据库连接都限定在已验证身份的作用域内。设置ALLOW_ANONYMOUSfalse可阻止未认证访问。三画像对比特性画像 1本地画像 2演示画像 3企业需要登录否否是数据连接器数据库是否是自定义 LLM 端点是否运营者决定凭据保险库是N/A是工作区持久化本地磁盘仅浏览器云端 / 磁盘身份local:os_user固定browser:uuid客户端user:subSSO完整 CLI 参数参考标志环境变量默认值说明--workspace-backendWORKSPACE_BACKENDlocallocal、azure_blob或ephemeral--sandboxSANDBOXlocal代码执行后端local或docker--disable-databaseDISABLE_DATABASEfalse多用户匿名预设打包 ephemeral 无连接器 无自定义模型 隐藏密钥--disable-display-keysDISABLE_DISPLAY_KEYSfalse在前端 UI 中隐藏 API Keys--disable-data-connectorsDISABLE_DATA_CONNECTORSfalse禁用外部数据库连接器--disable-custom-modelsDISABLE_CUSTOM_MODELSfalse阻止用户添加自定义 LLM 端点--max-display-rowsMAX_DISPLAY_ROWS10000发送到前端显示的最大行数--data-dirDATA_FORMULATOR_HOME~/.data_formulator数据目录--hostHOST127.0.0.1绑定的网络接口-p,--port—5567端口号--devDEV_MODEfalse开发模式不自动打开浏览器—AUTH_PROVIDER(未设置)oidc、github、azure_easyauth或未设置表示匿名—ALLOW_ANONYMOUStrue配置认证提供方时是否允许未认证访问—DF_ALLOWED_API_BASES(未设置全部允许)LLM 端点白名单的逗号分隔 URL glob 列表—FLASK_SECRET_KEY自动生成会话签名密钥生产环境请显式设置--azure-blob-connection-stringAZURE_BLOB_CONNECTION_STRING—Azure Blob 共享密钥连接字符串--azure-blob-account-urlAZURE_BLOB_ACCOUNT_URL—用于 Entra ID 认证的 Azure Blob 账户 URL--azure-blob-containerAZURE_BLOB_CONTAINERdata-formulatorAzure Blob 容器名上述参数在 app.py 的parse_args()中逐一实现环境变量在 .env.template 中均有带注释的模板说明。此外.env.template还记录了SCRATCH_MAX_SIZE_MB工作区 agent 临时目录上限默认 1024 MB与SCRATCH_MAX_FILE_SIZE_MB单个 agent 写入文件上限默认 20 MB等扩展项。生产部署的安全考量⚠️生产部署的重要安全警告身份系统Identity SystemData Formulator 使用带命名空间的身份系统分为三层本地模式127.0.0.1无认证提供方身份为local:os_username由服务端决定。X-Identity-Id请求头被忽略。保险库与工作区绑定 OS 用户。匿名模式多用户无认证提供方身份为browser:uuidUUID 在浏览器localStorage中生成。服务端信任客户端提供的X-Identity-Id请求头但始终强制browser:前缀。认证模式已配置认证提供方身份为来自认证提供方的user:verified_id。X-Identity-Id请求头被完全忽略。关键安全原则攻击者发送X-Identity-Id: user:alice...只会得到browser:alice...——与真正的user:alice...仅已认证的 Alice 可访问完全隔离。这一命名空间强制逻辑在 identity.py 的get_identity_id()中实现客户端身份被拆掉自带前缀后强制重写为browser:前缀从而杜绝身份混淆。匿名伪造风险在匿名模式下如果攻击者得知其他用户的浏览器 UUID就能通过X-Identity-Id请求头冒充对方。这正是画像 2 禁用数据连接器无数据库凭据可窃取、画像 3 要求认证请求头被忽略的原因。数据存储后端标志存储位置持久性local默认--workspace-backend local~/.data_formulator/users/identity/workspaces/服务器文件系统azure_blob--workspace-backend azure_blobAzure Blob 容器云端ephemeral--workspace-backend ephemeral浏览器 IndexedDB前端 临时目录后端仅浏览器会话其中DATA_FORMULATOR_HOME的解析顺序--data-dirCLI 标志 DATA_FORMULATOR_HOME环境变量 ~/.data_formulator可在 workspace.py 的get_data_formulator_home()中确认与 .env.template 中注释的目录结构说明一致。推荐的安全措施多用户匿名演示使用画像 2 ——--workspace-backend ephemeral --disable-data-connectors --disable-custom-models --disable-display-keys或用--disable-database快捷方式多用户认证使用画像 3 —— 设置AUTH_PROVIDER、ALLOW_ANONYMOUSfalse、DISABLE_CUSTOM_MODELStrueHTTPS使用反向代理nginx、Azure App Gateway做 TLS 终结FLASK_SECRET_KEY生产环境显式设置自动生成的密钥重启后变化服务器迁移清单将 Data Formulator 迁移到新服务器或重建 Docker 容器时以下密钥与数据文件必须随迁。丢失任意一项都会破坏对应功能项目位置丢失后果FLASK_SECRET_KEY.env环境变量所有用户会话失效SSO 登录、插件 tokenAgent 代码签名验证失败 —— 已保存图表无法刷新需重新执行.vault_keyDATA_FORMULATOR_HOME/.vault_keycredentials.db无法解密 —— 所有已存数据库密码 / 服务凭据丢失credentials.dbDATA_FORMULATOR_HOME/credentials.db同上 —— 加密凭据存储本身DF_CODE_SIGNING_SECRET.env环境变量可选若设置会覆盖 Flask 派生的签名密钥。必须与原值一致否则所有代码签名失效CREDENTIAL_VAULT_KEY.env环境变量可选若设置会覆盖.vault_key文件。必须一致否则保险库数据不可读users/与workspaces/DATA_FORMULATOR_HOME/用户工作区数据parquet 文件、会话元数据最小迁移步骤# 在旧服务器上 —— 备份密钥与数据 cp .env /backup/.env cp $DATA_FORMULATOR_HOME/.vault_key /backup/.vault_key cp $DATA_FORMULATOR_HOME/credentials.db /backup/credentials.db # 若使用 local 后端复制工作区数据 cp -r $DATA_FORMULATOR_HOME/users /backup/users cp -r $DATA_FORMULATOR_HOME/workspaces /backup/workspaces # 在新服务器上 —— 首次启动前恢复 cp /backup/.env .env cp /backup/.vault_key $DATA_FORMULATOR_HOME/.vault_key cp /backup/credentials.db $DATA_FORMULATOR_HOME/credentials.db cp -r /backup/users $DATA_FORMULATOR_HOME/users cp -r /backup/workspaces $DATA_FORMULATOR_HOME/workspaces提示如果忘记备份FLASK_SECRET_KEY且它是自动生成的则无法恢复。用户需要重新登录任何带有缓存代码签名的图表都需要 Agent 重新执行。中文版详细的迁移操作指南见 docs/docs-cn/7-server-migration-guide.md。认证架构Data Formulator 支持混合身份系统同时具备匿名与认证两种模式。各场景应选用哪种模式参见上文部署画像。身份流转流程┌─────────────────────────────────────────────────────────────────────┐ │ 前端请求 │ ├─────────────────────────────────────────────────────────────────────┤ │ 请求头: │ │ X-Identity-Id: local:alice / browser:550e8400-... / ... │ │ Authorization: Bearer jwt (若配置了认证提供方) │ └─────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ 后端身份解析 │ │ (identity.py: get_identity_id) │ ├─────────────────────────────────────────────────────────────────────┤ │ 优先级 1: 认证提供方 (OIDC/GitHub/EasyAuth) → user:id │ │ 优先级 2: 本地模式 (127.0.0.1) → local:user │ │ (忽略 X-Identity-Id 请求头) │ │ 优先级 3: X-Identity-Id 请求头 → browser:id │ │ (客户端自带的前缀命名空间被忽略) │ └─────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ 存储隔离 │ ├─────────────────────────────────────────────────────────────────────┤ │ user:aliceexample.com → alice 的工作区 (仅通过认证) │ │ local:alice → 本地用户的工作区 (固定) │ │ browser:550e8400-... → 匿名用户的工作区 │ └─────────────────────────────────────────────────────────────────────┘这一流程与 identity.py 的get_identity_id()实现完全对应先尝试认证提供方_provider.authenticate再检查本地模式_localhost_identity最后回退到X-Identity-Id请求头并强制加browser:前缀。同时身份值还会经过严格校验_validate_identity_value长度上限 256 字符且只允许[\w.\-:|]字符集从字符层面排除路径穿越与 shell 元字符。认证提供方配置配置细节见 .env.template 中的AUTH_PROVIDER段落含 OIDC 自动发现、手动端点、Public/Confidential Client 模式、HTTPS 要求等完整说明。提供方AUTH_PROVIDER配置OIDC / OAuth2oidc设置OIDC_ISSUER_URLOIDC_CLIENT_IDGitHubgithub设置GITHUB_CLIENT_IDGITHUB_CLIENT_SECRETAzure EasyAuthazure_easyauth在 Azure App Service 中启用无需额外环境变量仅匿名(未设置)默认 —— 无需登录browser:uuid身份使用说明应用的具体使用方式见 README.md 的 Usage 段落。结合本文内容你可以按需选择组合本地单用户直接运行data_formulator即可要参与前端开发则用uv run data_formulator --devyarn start要发布到公开服务器则根据是否引入 SSO 选择画像 2匿名演示或画像 3企业认证并配合 Docker 或 Azure Blob 工作区实现持久化与隔离。始终牢记生产环境的四要素显式FLASK_SECRET_KEY、正确的工作区后端、合适的沙箱级别以及迁移时的密钥清单。【免费下载链接】data-formulator Data Formulator is an interactive AI-powered data analysis system makes it easy to connect, explore and visualize data.项目地址: https://gitcode.com/GitHub_Trending/da/data-formulator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表