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.0 | AWS Bedrock |
.[anthropic] | anthropic>=0.42.0 | Anthropic API |
.[openai] | openai>=1.0.0 | OpenAI 兼容接口、OrcaRouter |
.[bedrock-mantle] | boto3+openai>=2.45.0+aws-bedrock-token-generator | Bedrock 上的 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-terra、openai.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 块(thinking、signature、redacted_thinking)。可通过ANTHROPIC_MODEL与ANTHROPIC_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_PROVIDER | 否 | bedrock | LLM provider:bedrock、bedrock-mantle、anthropic、openai、orcarouter |
AWS_REGION | Bedrock | us-east-1 | Bedrock 所用 AWS 区域 |
ANTHROPIC_API_KEY | Anthropic | -- | Anthropic API 密钥 |
OPENAI_API_KEY | OpenAI | -- | OpenAI API 密钥 |
OPENAI_BASE_URL | 否 | -- | OpenAI 兼容接口的自定义端点 |
OPENAI_ECHO_REASONING_CONTENT | 否 | true | 对 DeepSeek、GLM 等推理模型保留并回放reasoning_content |
ORCAROUTER_API_KEY | OrcaRouter | -- | OrcaRouter API 密钥 |
ANTHROPIC_MODEL/ANTHROPIC_SMALL_FAST_MODEL | 否 | Provider 默认 | 覆盖主模型 / 快速模型 ID |
OPENAI_MODEL/OPENAI_SMALL_FAST_MODEL | 否 | gpt-4o/gpt-4o-mini | OpenAI provider 主模型 / 快速模型 |
ORCAROUTER_MODEL/ORCAROUTER_SMALL_FAST_MODEL | 否 | orcarouter/auto | OrcaRouter 主模型 / 快速模型(provider/model 命名空间) |
ORCAROUTER_ECHO_REASONING_CONTENT | 否 | true | 与OPENAI_ECHO_REASONING_CONTENT对齐 |
SEATUNNEL_HOME | 否 | 自动检测 | SeaTunnel 安装目录;发行版 tar 包自动检测,源码安装需手动设置 |
SEATUNNEL_API_BASE | 否 | http://localhost:5801 | SeaTunnel 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"路由到Jdbc、MySQL-CDC,"s3"路由到S3File、S3Redshift(见 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 设计的一等公民,体现在三个层面:
- 密钥不落盘:API 密钥只从环境变量读取,
config.json仅保存 provider 名、模型 ID 等非敏感设置(见 cli.py 初始化向导中的安全声明); - 记忆过滤:
/remember拒绝含密码、API key、token 的记忆条目(cli.py); - 日志与诊断脱敏:启动时安装
_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),仅供参考