SeaTunnel AI CLI 快速入门:用自然语言生成并运行 HOCON 数据管道配置
2026/9/16 3:35:36 网站建设 项目流程

SeaTunnel AI CLI 快速入门:用自然语言生成并运行 HOCON 数据管道配置

【免费下载链接】seatunnelSeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.项目地址: https://gitcode.com/GitHub_Trending/se/seatunnel

本文是 SeaTunnel AI CLI 的实战快速入门指南。AI CLI 是内置于 SeaTunnel 仓库(seatunnel-cli模块)的命令行工具,你只需用英文或中文描述数据同步需求(例如"Sync MySQL users table to S3 Parquet"),它就会自动产出经过校验、可直接执行的 SeaTunnel HOCON 配置,并支持/check校验、/run一键运行与失败自动修复。读完本文,你将掌握:从发行版或源码安装 AI CLI、配置 AWS Bedrock / Anthropic / OpenAI / OrcaRouter 等 LLM 服务商、用单次与交互两种模式生成首个管道,以及让生成结果更可用的关键技巧。

前置条件(Prerequisites)

在开始之前,请确认环境满足以下要求:

  • Python 3.10+(推荐 3.11 或 3.12);从源码安装时,setup.sh会主动校验 Python 版本并拒绝低于 3.10 的环境(见 setup.sh);
  • 操作系统:macOS、Linux,或 Windows 上的 WSL;
  • 至少一个 LLM 服务商凭据,四选一:
    • AWS Bedrock—— AWS 凭据(profile、环境变量或 IAM role);
    • Anthropic API——ANTHROPIC_API_KEY
    • OpenAI API(或兼容接口)——OPENAI_API_KEY
    • OrcaRouter——ORCAROUTER_API_KEY
  • (可选)一个 SeaTunnel 引擎安装,用于引擎级校验(/check)和任务执行(/run)。

注意:API 密钥只从环境变量读取,永远不会写入配置文件;生成配置中的密码等敏感值默认以${ENV_VAR}占位符形式呈现。

安装 AI CLI

方式一:从 SeaTunnel 发行版安装(推荐)

bin/seatunnel-ai.sh包装脚本会在首次运行时自动安装 Python 依赖并启动交互式初始化向导,SEATUNNEL_HOME会自动指向发行版根目录,无需手动配置:

# 首次运行 —— 自动安装依赖并启动交互式初始化 bin/seatunnel-ai.sh --init # 初始化完成后,直接启动 bin/seatunnel-ai.sh

方式二:从源码安装(开发模式)

cd seatunnel-cli bash setup.sh # 安装全部 provider + 开发工具(等价于 pip install -e ".[dev]") seatunnel --init # 交互式 provider 配置

setup.sh首先检查python3是否可用且版本不低于 3.10,随后执行pip install -e ".[dev]",安装完成后即提供全局seatunnel命令。依赖分组定义在 pyproject.toml:

Extra安装内容适用场景
.[bedrock]boto3>=1.34.0AWS Bedrock
.[anthropic]anthropic>=0.42.0Anthropic API
.[openai]openai>=1.0.0OpenAI 兼容接口、OrcaRouter
.[bedrock-mantle]boto3+openai>=2.45.0+aws-bedrock-token-generatorBedrock 上的 OpenAI 系模型
.[all]/.[dev]全部依赖(dev 额外含 pytest、ruff)全部服务商 / 开发

如果你偏好手动安装某个单一 provider,也可以直接执行pip install -e ".[openai]"这类命令。另外,seatunnel-cli/env.example.sh提供了可直接复制使用的环境变量模板(cp env.example.sh env.sh && source env.sh)。

配置 LLM Provider

通过AI_PROVIDER环境变量选择服务商。以下四种方式按官方推荐顺序列出。

Option A:AWS Bedrock(默认)

export AI_PROVIDER=bedrock export AWS_REGION=us-east-1

凭据可通过 AWS CLI profile、AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY环境变量或 IAM role 提供。Bedrock provider 会保留流式 Converse 响应中的 ClaudereasoningContent块;当模型拒绝temperature参数时,provider 会自动去掉该参数重试并在本次会话内记住此行为。

Option A2:Bedrock 上的 OpenAI 系模型(bedrock-mantle)

部分 Bedrock 上的 OpenAI 模型(如openai.gpt-5.6-terraopenai.gpt-5.6-sol)不在 Bedrock foundation-model 目录中,只支持专用bedrock-mantle端点上的 OpenAIResponses API—— 普通bedrockprovider(Converse API)和openaiprovider(Chat Completions)都无法触达它们:

# 1. 安装 provider extra(openai SDK >= 2.45 + AWS token generator) pip install -e ".[bedrock-mantle]" # 2. 配置 —— 只需要 AWS 凭据,无需 OpenAI 账号或 API key export AI_PROVIDER=bedrock-mantle export AWS_REGION=us-east-1 # us-east-1 / us-east-2 / us-west-2 export OPENAI_MODEL='openai.gpt-5.6-terra' # 未设置时的默认模型 # export OPENAI_SMALL_FAST_MODEL='openai.gpt-5.6-terra' # 3. 正常生成 seatunnel "Sync MySQL users table to S3 Parquet"

该 provider 的契约要点:

  • 端点https://bedrock-mantle.{region}.api.aws/openai/v1,必须使用这些模型要求的openai/v1路径(通用v1Responses 路径会拒绝它们);
  • 鉴权:通过aws-bedrock-token-generator从 AWS 凭据(profile、环境变量或 IAM role)自动派发短期 bearer token,每 30 分钟刷新一次,不落盘任何长效密钥;
  • 数据保留:每个请求都携带store=false,因此 Bedrock 不会在服务端保留你的提示词或生成的配置(服务默认会保留 30 天);
  • 参数:这些模型拒绝temperature,provider 从不发送该参数,因此配置的 temperature 值不生效;
  • 错误处理:被截断(incomplete)、失败和被拒绝的响应会抛出显式错误,而不是当作正常回答返回。

provider 完全支持 CLI 内部的工具调用循环(规划阶段查询连接器)与多轮会话,包括在工具调用之间回放模型的推理输出。

Option B:Anthropic API

export AI_PROVIDER=anthropic export ANTHROPIC_API_KEY=sk-ant-...

Anthropic provider 会保留 assistant 历史中的 Claude thinking 块(thinkingsignatureredacted_thinking)。可通过ANTHROPIC_MODELANTHROPIC_SMALL_FAST_MODEL覆盖模型 ID。

Option C:OpenAI 或兼容接口

export AI_PROVIDER=openai export OPENAI_API_KEY=sk-... # export OPENAI_BASE_URL=https://... # Azure OpenAI、DeepSeek、本地 vLLM 等

OPENAI_BASE_URL让你接入任何 OpenAI Chat Completions 兼容端点;OPENAI_MODEL(默认gpt-4o)与OPENAI_SMALL_FAST_MODEL(默认gpt-4o-mini)可覆盖模型;对 DeepSeek、GLM 等需要回放reasoning_content的推理模型,保持OPENAI_ECHO_REASONING_CONTENT=true(默认开启)。

Option D:OrcaRouter AI Gateway

OrcaRouter 是一个 OpenAI 兼容的 AI 网关,在单一端点(https://api.orcarouter.ai/v1)背后聚合了 Claude、GPT、Gemini、DeepSeek、Qwen 等多种模型。模型 ID 采用provider/model命名空间(如deepseek/deepseek-v4-pro),特殊的orcarouter/auto模型会为每个请求自动挑选最合适的模型。作为一等 provider 配置:

# 需要 openai 包(与 ".[openai]" extra 共享) pip install -e ".[openai]" export AI_PROVIDER=orcarouter export ORCAROUTER_API_KEY=orc_... # export ORCAROUTER_MODEL=deepseek/deepseek-v4-pro # 可选覆盖 # export ORCAROUTER_SMALL_FAST_MODEL=orcarouter/auto # 可选覆盖 # export ORCAROUTER_ECHO_REASONING_CONTENT=true # 可选:回放 reasoning_content seatunnel "Sync MySQL users table to S3 Parquet"

由于该 provider 使用 OpenAI Chat Completions 协议,因此完整支持 CLI 内部的工具调用循环(规划阶段查询连接器)、流式输出、多轮会话,以及兼容推理模型的 reasoning-content 回放。

无论选择哪个 provider,都可以先运行seatunnel --init走一遍交互式向导:它会检测已配置的凭据、引导你选择 provider 并验证连通性(详见 cli.py 中的run_init)。

生成你的第一个 Pipeline

单次模式(Single-shot)

# 生成并直接展示配置 seatunnel "Sync MySQL users table to S3 Parquet" # 生成并保存到文件(支持中文) seatunnel "从 Kafka 读取订单数据写入 ClickHouse" -o my_job.conf # 临时切换 provider 与模型 seatunnel "Read CSV files and write to Elasticsearch" --provider openai --model gpt-4o

命令行参数一览(与 cli.py 的 argparse 定义一致):

seatunnel [request] [options] 位置参数: request 自然语言请求(省略则进入交互模式) 选项: -o, --output PATH 将生成的配置保存到文件 --provider PROVIDER LLM provider: bedrock | bedrock-mantle | anthropic | openai | orcarouter --model MODEL 覆盖主模型 ID --fast-model MODEL 覆盖快速模型 ID --sync-catalog PATH 从 SeaTunnel 源码重新生成连接器目录 -V, --version 显示版本 -h, --help 显示帮助

交互模式(Interactive)

直接运行seatunnel进入 REPL。它具备流式输出、命令历史、会话持久化与多轮对话能力。一个典型的"生成 → 校验 → 运行"会话如下:

🐬 SeaTunnel > Sync PostgreSQL orders to Doris 📋 Generated SeaTunnel Config Config saved to: .data/last_job.conf 🐬 SeaTunnel > Add a filter to only include orders where amount > 100 📋 Generated SeaTunnel Config (updated) 🐬 SeaTunnel > /check [1] Local validation: PASS [2] Engine --check: PASS Dry-run PASSED — Config is ready to execute. 🐬 SeaTunnel > /run Job submitted: 1234567890 (orders-sync) Status: FINISHED

可以看到每次生成后配置都会自动保存到.data/last_job.conf(位于 CLI 包同级目录)。/check依次执行本地语法校验与引擎--check两级干跑;/run优先通过 REST API(默认http://localhost:5801)提交任务并轮询状态,引擎不可用时回退到seatunnel.sh -e local。值得注意的是,/run在执行前会强制要求输入yes确认,防止误操作写入生产库(见 cli.py 的_run_config)。

常用交互命令

命令说明
/check校验最近一次生成的配置;失败时自动诊断并修复
/run通过 REST API 或seatunnel.sh执行;失败时自动修复
/connectors列出可用的 source、sink 与 transform 插件
/remember <text>保存非敏感事实(主机、端口、数据库名等)
/sessions/resume列出与恢复历史会话

完整的命令面还包括/save <path>/new/memory/forget <id|--all>/clear/help/quit等。其中/remember会拒绝包含密码、API key、token 等凭据的内容——只有主机名、端口、库名表名这类非敏感事实才会被记录(见 cli.py 的_cmd_remember_classify_memory)。

让生成结果更好的技巧

  • 在提示词中带上连接信息(主机、端口、数据库、表名):这样返回的配置可直接运行,而不是充满占位符;
  • 明确表述批处理还是实时("一次性全量拷贝" vs "持续捕获变更"):这会驱动 BATCH/STREAMING 模式与 CDC 连接器的选择;
  • 凭据默认使用占位符:生成的配置引用${MYSQL_PASSWORD}风格变量,/run之前记得先export对应环境变量;
  • 对模型能力明显偏弱的场景要人工复核:条件路由、PostgreSQL-CDC 前置条件、Doris/StarRocks 选项等场景(详见模型基准评测),在生产运行前务必检查生成的配置。

附录:环境变量总表与源码级实现原理

环境变量总表

以下变量定义于 seatunnel-cli/README.md 并在 env.example.sh 中有完整注释模板:

变量是否必需默认值说明
AI_PROVIDERbedrockLLM provider:bedrockbedrock-mantleanthropicopenaiorcarouter
AWS_REGIONBedrockus-east-1Bedrock 所用 AWS 区域
ANTHROPIC_API_KEYAnthropic--Anthropic API 密钥
OPENAI_API_KEYOpenAI--OpenAI API 密钥
OPENAI_BASE_URL--OpenAI 兼容接口的自定义端点
OPENAI_ECHO_REASONING_CONTENTtrue对 DeepSeek、GLM 等推理模型保留并回放reasoning_content
ORCAROUTER_API_KEYOrcaRouter--OrcaRouter API 密钥
ANTHROPIC_MODEL/ANTHROPIC_SMALL_FAST_MODELProvider 默认覆盖主模型 / 快速模型 ID
OPENAI_MODEL/OPENAI_SMALL_FAST_MODELgpt-4o/gpt-4o-miniOpenAI provider 主模型 / 快速模型
ORCAROUTER_MODEL/ORCAROUTER_SMALL_FAST_MODELorcarouter/autoOrcaRouter 主模型 / 快速模型(provider/model 命名空间)
ORCAROUTER_ECHO_REASONING_CONTENTtrueOPENAI_ECHO_REASONING_CONTENT对齐
SEATUNNEL_HOME自动检测SeaTunnel 安装目录;发行版 tar 包自动检测,源码安装需手动设置
SEATUNNEL_API_BASEhttp://localhost:5801SeaTunnel REST API 端点
SEATUNNEL_CLI_DATA<cli-package>/.data/覆盖 CLI 数据目录(会话、记忆、配置)

关于SEATUNNEL_HOME:它用于加载connector_metadata.json(150+ 连接器的选项规则)、执行seatunnel.sh --check以及seatunnel.sh -e local运行任务。发行版 tar 包中 CLI 位于cli/seatunnel_cli/,向上两级即可自动解析到发行版根目录;源码安装目录结构不匹配,需要手动export SEATUNNEL_HOME=/path/to/apache-seatunnel。未设置时,CLI 仍可依靠 LLM 知识生成配置,但/check/run与运行时连接器元数据不可用。若启动 SeaTunnel server(seatunnel-server.sh),CLI 将进入cluster 模式(实时连接器元数据 + 引擎级校验 + REST 提交);否则回退到offline 模式,使用随包分发的元数据。

底层实现:多智能体与连接器知识库

从源码结构看,AI CLI 的生成链路是一套多智能体流水线(agents.py):PlannerAgent分析意图并决定是否需要澄清 →ConfigAgent生成 HOCON 配置 →ValidatorAgent做语法与语义校验 →DryRunValidator调用seatunnel.sh --check或 REST API 做引擎级干跑,整个循环由Orchestrator协调,最多进行 3 轮修正。

规划阶段,Planner 通过工具调用(tool calling)获取连接器知识(见 agents.py 定义的TOOLS):

  • list_connectors—— 列出全部 source/sink/transform;
  • route_connectors—— 按关键词路由,例如"mysql"路由到JdbcMySQL-CDC,"s3"路由到S3FileS3Redshift(见 connectors.py);
  • get_connector_info—— 按插件类型拉取完整选项规则;
  • validate_config—— 校验 HOCON 语法与必填字段;
  • ask_user—— 请求缺失的关键信息。

连接器知识库采用两级解析(connectors.py):优先从运行中引擎的/option-rules端点获取实时元数据(100% 准确、零维护),其次回退到随包分发的connector_metadata.json(由 Java 运行时反射导出,同样 100% 准确且不消耗 LLM token);L1 索引层常驻系统提示词,L2 详情层按需经get_connector_info工具获取。需要针对不同 SeaTunnel 版本重新导出元数据时,可运行bin/seatunnel-metadata-export.sh

底层实现:安全与脱敏

安全是 CLI 设计的一等公民,体现在三个层面:

  1. 密钥不落盘:API 密钥只从环境变量读取,config.json仅保存 provider 名、模型 ID 等非敏感设置(见 cli.py 初始化向导中的安全声明);
  2. 记忆过滤/remember拒绝含密码、API key、token 的记忆条目(cli.py);
  3. 日志与诊断脱敏:启动时安装_SecretRedactFilter日志过滤器,按正则匹配 Anthropic/OpenAI/AWS 密钥等模式并替换为***REDACTED***(cli.py);修复配置发送给 LLM 前,密码等凭据值会被替换为${_CRED_N_}占位符,返回后再还原(cli.py),确保诊断修复全程不泄露凭据。

至此,你已经掌握了 AI CLI 从安装、配置到生成、校验、运行与排障的完整链路,可以开始用自然语言驱动 SeaTunnel 数据管道了。

【免费下载链接】seatunnelSeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.项目地址: https://gitcode.com/GitHub_Trending/se/seatunnel

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询