
什么是 jev-align?
jev-align 是 Sutro 提供的一款实验性命令行工具,用于通过 TypeSafe 的 Jev 构建 AI 函数。它会评估数据集,识别不确定的示例,请你为这些示例添加标签,并使用 GEPA 提出改进后的函数定义。
该工具专为迭代式工作流设计。你可以从本地数据创建 AI 函数,查看提议的更改,保存进度,在应用程序中使用该函数,之后再利用生产环境中捕获的示例进行改进。
每个标签都由你提供。更高的训练分数不会使 jev-align 自动接受提议。
主要功能
- 基于不确定性的标注: CLI 会优先处理含义不明确的行,同时加入随机审计样本。
- 由人工控制的优化: 你决定是否接受或拒绝每个提议的定义。
- 多种任务类型: 构建二分类、多分类、多标签或有序评分函数。
- 本地数据集发现: 引导式设置会查找 CSV、Parquet 和 JSONL 文件。
- 灵活的模型提供商: 通过 TypeSafe AI、Vercel AI Gateway 或 Cloudflare Workers AI 运行 Jev。
- 独立的反思模型: 为 GEPA 配置 OpenAI、Anthropic、Gemini 或其他兼容 LiteLLM 的提供商。
- 持久化运行: 恢复之前的优化会话,并查看已保存的 AI 函数。
- 生产环境捕获: 收集有用的应用示例,并在之后的优化轮次中为其添加标签。
了解支持的任务类型
开始之前,请选择与问题匹配的输出格式:
- 二分类: 返回
True或False。 - 多分类: 从固定集合中准确返回一个标签。
- 多标签: 从固定集合中返回零个或多个标签。
- 评分: 根据有序评分标准返回一个等级。
安装 jev-align
前提条件
你需要 Python 3.11 或更高版本。同时需要 Jev 提供商和受支持的反思模型提供商的凭据。
使用 uv 安装
推荐使用 uv 进行快速安装:
uv tool install jev-align使用 pip 安装
如果不使用 uv,请使用 pip 安装软件包:
pip install jev-align配置凭据
对于标准的 TypeSafe AI 路径,请导出 TypeSafe API 密钥。GEPA 还需要反思模型提供商,例如 OpenAI、Anthropic 或 Gemini。
export TYPESAFE_API_KEY="..."
export OPENAI_API_KEY="..."你可以使用 ANTHROPIC_API_KEY 或 GEMINI_API_KEY 代替 OpenAI 密钥。Vercel AI Gateway 和 Cloudflare Workers AI 可以替代 TypeSafe AI 作为 Jev 提供商;这些路径不需要 TYPESAFE_API_KEY。
启动引导式设置
使用以下任一命令启动 CLI:
jeva或:
jev-align引导式设置会发现本地 CSV、Parquet 和 JSONL 数据集,并包含三个可直接运行的示例。按照提示选择数据集、定义任务、选择相关字段并配置提供商。
CLI 导航控制
- 使用箭头键和 Enter 键浏览菜单。
- 按
b返回上一个标签。 - 输入
/back离开理由提示。 - 在多标签任务中按空格键切换选项。
使用标志运行优化任务
你可以通过提供命令行选项来跳过引导式工作流中的部分步骤。以下示例构建一个二分类函数,用于判断帖子是否与航空有关:
jeva optimize posts.csv \
--question "Is the post related to aviation?" \
--column title \
--column text \
--pool-size 1000重复使用的 --column 选项会告诉 jev-align 评估 title 和 text 字段。--pool-size 1000 选项会将工作池限制为 1,000 行。
默认情况下,jev-align 使用前 1,000 行;如果数据集少于 1,000 行,则使用整个数据集。你可以拼接所有字段,也可以选择特定列。
配置类别和评分等级
对于多分类和多标签任务,请重复提供 --class "NAME=DESCRIPTION" 选项。对于评分任务,请重复提供 --score-level 选项。由于具体可用标志可能会发生变化,请查阅内置参考:
jeva optimize --help每个优化轮次的工作方式
- 评估数据集: jev-align 针对配置的数据运行当前函数,并衡量不确定性。
- 选择示例: 它会选择含义不明确的行,并加入随机审计样本。
- 收集标签: 你为选定的示例添加标签,也可以选择提供理由。
- 运行 GEPA: GEPA 使用累积的反馈来提出改进后的定义。
- 查看提议: CLI 会显示分数、确定性变化以及提议定义的差异。
- 选择下一步操作: 你可以接受、拒绝、回退,或停止并稍后恢复。
这一步审核很重要:评分改进在你明确接受之前都只是提案。
调整高级优化设置
引导式高级菜单提供了多个控制项:
- 选择每轮 5、10、15 或 20 条训练标注。
- 启用可选的 20% 留出评估集。
- 设置 GEPA 的指标调用预算,默认值为 300。
较小的标注轮次可以让每个审核周期更快完成。留出集可以提供独立于优化示例的评估信号。指标调用预算控制 GEPA 在一次运行中可以执行多少工作。
选择 Jev 提供商
引导式设置会检测已配置的提供商,并允许你在 TypeSafe AI、Vercel AI Gateway 和 Cloudflare Workers AI 之间进行选择。选定的提供商会与 AI Function 一起保存,因此后续运行时调用会使用相同的路由。
使用 Vercel AI Gateway
export AI_GATEWAY_API_KEY="..."
jeva optimize data.csv --question "Is this relevant?" --column text \
--backend vercel使用 Cloudflare Workers AI
export CLOUDFLARE_ACCOUNT_ID="..."
export CLOUDFLARE_API_TOKEN="..."
jeva optimize data.csv --question "Is this relevant?" --column text \
--backend cloudflare这两种路由都不需要 TYPESAFE_API_KEY。
配置 GEPA 反思模型
GEPA 的反思模型与用于评估数据集行的 Jev 模型彼此独立。系统会自动检测 OpenAI、Anthropic 和 Gemini 模型。你也可以使用任意LiteLLM 提供商,包括 Fireworks、本地 vLLM 以及其他兼容 OpenAI 的端点。
例如,配置一个托管的 vLLM 端点并明确选择其模型:
export HOSTED_VLLM_API_BASE="http://localhost:8000/v1"
jeva optimize data.csv --question "Is this relevant?" --column text \
--reflection-model "hosted_vllm/Qwen/Qwen3-8B"这种分离方式让你可以为运行时数据集评估选择一个提供商,同时为 GEPA 的优化工作选择另一个提供商。
管理并恢复已保存的 AI Functions
使用以下命令列出已保存的函数:
jeva functions要直接恢复特定运行,请提供其保存目录:
jeva optimize --resume .jev-align/runs/<run-id>当你想继续标注、重新查看已保存的函数,或处理部署后捕获的示例时,恢复运行会很有用。
在 Python 中使用 AI Function
使用 AIFunction.load 加载已保存的函数。启用捕获功能,让函数记录有用的生产示例,以便日后审核:
from jev_align import AIFunction
is_aviation = AIFunction.load(
".jev-align/runs/<run-id>",
capture=True,
)
prediction = is_aviation(
title="Airport expansion",
text="A new runway opens next year.",
)关键字参数应与已保存函数所需的字段相对应。在此示例中,该函数会评估标题和正文文本。
持续从生产数据中学习
启用 capture=True 后,应用可以保留对后续优化有用的示例。准备好审核时,返回 CLI:
jeva functions选择或恢复相关的 AI Function,为捕获的示例添加标签,然后让 GEPA 提议下一个定义。相同的人工审核流程仍然适用:在接受更改之前,检查指标和差异。
高级工作流提示
- 选择相关列:只包含能为任务提供证据的字段,不要自动使用所有字段。
- 编写精确的问题:清晰的决策边界有助于更一致地标注二元分类。
- 谨慎描述固定标签:对于多分类和多标签任务,使用类别描述来区分可能存在重叠的标签。
- 在有用时添加理由:可选理由可以让 GEPA 更好地理解示例为何应获得特定标签。
- 使用审核样本:有歧义的示例很有价值,但随机示例有助于检查不确定性重点子集之外的行为。
- 不要只看分数:在接受一次迭代之前,检查确定性变化以及提议的定义差异。
- 恢复而不是重新开始:已保存的运行会保留累积的标签,从而可以持续改进。
- 分开处理提供商决策:为评估和运行时需求选择 Jev 后端,然后为 GEPA 独立配置反思模型。
结语
jev-align 提供了一个人工参与的流程,用于创建和完善 Jev AI Functions。从本地数据集开始,为不确定的示例添加标签,审核 GEPA 提议的定义更改,然后保存结果。通过启用生产捕获并在之后恢复同一运行,你可以使用真实的应用示例持续改进函数,同时掌控每个已接受的版本。
