首页
看点啥
插画图片
首页 科技看点 csv-quality-gate:AI Agent 工具实践指南

csv-quality-gate:AI Agent 工具实践指南

2026-10-02 0

实际看csv-quality-gate,先要确认它的用途:csv-quality-gate 是一个命令行数据质量门,运行 CSV 预检验证,在 ML 或 LLM 管道摄取损坏、不完整、重复或垃圾输入之前快速失败。数据与知识处理里,数据结构、更新策略和可追溯性会决定结果是否可信。我会用一份规模可控且答案已知的数据集试跑,检查模式兼容、增量更新、查询结果和来源追踪。它适合需要保留数据来路与变更记录的使用者;采用前仍要看维护状态和试跑结果。

hermes-labs-ai/csv-quality-gate 项目截图 1

它对 CSV 运行批量质量检查,并在昂贵的管道步骤因错误输入而浪费时间之前返回 pass、warn 或 fail(具有匹配的退出代码)。它会检查是否缺少必需的列、空文件、空的关键单元格、重复的行,以及在 outreach 配置文件下的可疑公司名称模式。团队可以在小型 TOML/JSON 配置中声明自己的列、阈值和模式,每个问题都指向受影响的行号(绝不是单元格值),并且相同的门作为预提交挂钩或 GitHub 操作运行。它仅是 stdlib:没有第三方运行时依赖项。

它的构建目的是解决以下问题:

快速入门(60 秒)

pip install csv-quality-gate
python -c "from importlib.metadata import version; print(version('csv-quality-gate'))"   # confirm the installed release
csv-quality-gate check leads.csv --profile outreach

具有缺失列和临界重复率的 CSV 的示例输出:

csv-quality-gate: FAIL
file: leads.csv
profile: outreach
rows: 125
  ERROR: missing required column: person_name
  WARNING: duplicate rate 12% exceeds warning threshold 10%
    evidence: column=company affected=15 rows at line(s) 4, 9, 15, 22, 31 (+10 more)

该进程在通过时退出 0,仅在出现警告时退出 1,在失败时退出 2,因此您可以将其直接连接到 shell 脚本、预提交挂钩或 CI 步骤。

使用附带的装置尝试一下

您可以在将门连接到您自己的管道之前验证该门。来自一个 签出,安装包并运行包含的干净和损坏的输入:

git clone https://github.com/hermes-labs-ai/csv-quality-gate.git
cd csv-quality-gate
python -m pip install .
csv-quality-gate check examples/clean.csv
csv-quality-gate check examples/promptfoo-dataset/tests-broken.csv \
  --config examples/promptfoo-dataset/csv-quality-gate.toml \
  --profile promptfoo

第一条命令退出 0 为 PASS;第二个退出 2 有界 断行的行号证据。这提供了首次使用检查,无需 创建示例 CSV 或猜测要选择哪个配置文件和配置。

开发安装

对于日常使用,请按照上面的 快速入门 进行操作。对于一个 源签出、可编辑安装和 lint/test 命令,请参阅 开发如下。

作为特工技能(Claude Code、Codex CLI、Gemini CLI)

存储库根是一个便携式 代理插件 (plugin.json) 运送一项技能 skills/csv-quality-gate/SKILL.md。它 教代理在您命名的 CSV 文件上运行此门并报告 状态和行号证据,无需夸大其词。

主持人 安装 回读
克劳德·科德 claude plugin marketplace add hermes-labs-ai/csv-quality-gate
claude plugin install csv-quality-gate@csv-quality-gate claude plugin list
OpenAI 法典 CLI codex plugin marketplace add hermes-labs-ai/csv-quality-gate
codex plugin add csv-quality-gate@csv-quality-gate codex plugin list
双子座 CLI gemini extensions install https://github.com/hermes-labs-ai/csv-quality-gate --ref main gemini skills list
skills.sh npx skills add https://github.com/hermes-labs-ai/csv-quality-gate --skill csv-quality-gate npx skills list

每位主持人读到的内容:

安装技能不会安装Python包。该技能使用一个 安装 csv-quality-gate 或运行固定版本 uvx csv-quality-gate==0.3.1.

用途

csv-quality-gate check leads.csv
csv-quality-gate check leads.csv --profile outreach
csv-quality-gate check leads.csv --profile generic --json
csv-quality-gate check leads.csv --config csv-quality-gate.toml --profile leads
csv-quality-gate check leads.csv --max-examples 20
csv-quality-gate check data/*.csv

check 的选项:

一次调用可以检查多条路径。文本模式每个文件打印一个块, JSON 模式发出一个数组(单个路径保留普通对象),然后退出 code 是文件中最差的状态。

退出代码:

型材

内置配置文件:

每个配置文件的阈值在 src/csv_quality_gate/profiles.py 中定义。

定制配置文件

在 TOML (Python 3.11+) 或 JSON 文件中声明您自己的配置文件并传递它 与 --config。一个可复制的例子位于 examples/csv-quality-gate.toml.

[profiles.leads]
extends = "outreach"                 # optional: inherit a built-in's columns, patterns, and rates
required_columns = ["email", "company", "person_name"]
critical_columns = ["email", "person_name"]
duplicate_column = "email"
empty_warning_rate = 0.05
empty_fail_rate = 0.20
duplicate_warning_rate = 0.02
duplicate_fail_rate = 0.10
suspicious_column = "email"
suspicious_patterns = ['^[^@]+$']    # case-insensitive regular expressions
suspicious_warning_rate = 0.20
suspicious_fail_rate = 0.50
csv-quality-gate check data/leads.csv --config csv-quality-gate.toml --profile leads

规则:

输出

文本模式(默认):

csv-quality-gate: FAIL
file: leads.csv
profile: outreach
rows: 125
  ERROR: missing required column: person_name
  WARNING: duplicate rate 12% exceeds warning threshold 10%
    evidence: column=company affected=15 rows at line(s) 4, 9, 15, 22, 31 (+10 more)

每个空率、重复率和可疑值问题的影响都是有界的 证据:受影响的列、受影响的行总数以及最多 --max-examples 物理行号(标题为第 1 行;引用记录 跨越几行报告其最后一行)。单元格值永远不会被打印, 因此收据可以安全地附加到 CI 日志或票据上。重复的证据点 在第二次和以后出现时,所以这些是要删除的行。

JSON 模式(--json)发出一个带有 path、profile、rows、status 的对象, issues[]和(当使用--config时)config。每期都有severity 和 message;由行支持的问题添加 evidence 对象:

csv-quality-gate check leads.csv --json
{
  "path": "leads.csv",
  "profile": "outreach",
  "rows": 125,
  "status": "fail",
  "issues": [
    {"severity": "error", "message": "missing required column: person_name"},
    {
      "severity": "warning",
      "message": "duplicate rate 12% exceeds warning threshold 10%",
      "evidence": {"column": "company", "total": 15, "rows": [4, 9, 15, 22, 31]}
    }
  ]
}

限制/它不做什么

何时使用它

何时不使用它

预提交

在提交之前,在暂存的 CSV 文件上运行相同的门。将其添加到 您的 .pre-commit-config.yaml (完整示例位于 examples/pre-commit-config.yaml):

repos:
  - repo: https://github.com/hermes-labs-ai/csv-quality-gate
    rev: v0.3.1
    hooks:
      - id: csv-quality-gate
        args: [--profile, outreach]
        # or: args: [--config, csv-quality-gate.toml, --profile, leads]

该钩子接收每个暂存的 .csv 文件,为每个文件打印一个报告块, 并阻止 warn 或 fail 上的提交,匹配 CLI 退出代码。窄 如果只有一些 CSVs 应该被门控,则它具有预提交的 files: 模式,并且 通过配置文件调整阈值而不是跳过挂钩。

要在固定版本之前尝试从本地结帐挂钩,请指向 结账路径上的配置和提交:

repos:
  - repo: /path/to/csv-quality-gate
    rev: 
    hooks:
      - id: csv-quality-gate
        args: [--profile, outreach]
pre-commit run --config that-file.yaml csv-quality-gate --files data/leads.csv

pre-commit try-repo . csv-quality-gate --files data/leads.csv 也适用于 默认的 generic 配置文件(try-repo 无法通过 hook args)。

CI / GitHub 操作

直接使用此存储库作为复合操作。它安装打包的CLI, 运行选定的配置文件,并始终在以下位置写入 JSON 收据 $GITHUB_WORKSPACE/csv-quality-gate-receipt.json。 status 和 receipt 即使操作因警告或失败而退出,输出仍然可用。

- id: csv_gate
  uses: hermes-labs-ai/csv-quality-gate@0b7bf4635b2db468620855e577cd0d9f09f09ec7 # hardened current main; annotations + batch
  with:
    csv-path: data/leads.csv
    profile: leads
    config: csv-quality-gate.toml   # optional; omit to use built-in profiles
    annotate: true                  # optional; defaults to false

- run: echo "${{ steps.csv_gate.outputs.status }}"

对于一批,请使用 csv-paths,每行一个路径。准确设置其中之一 csv-path 和 csv-paths;该操作故意不接受自由格式的命令 或 shell 参数。

- id: csv_gate_batch
  uses: hermes-labs-ai/csv-quality-gate@0b7bf4635b2db468620855e577cd0d9f09f09ec7 # hardened current main; batch support
  with:
    csv-paths: |
      data/leads.csv
      data/customers.csv
    profile: generic

单文件收据仍然是 JSON 对象。批量收据是一个 JSON 数组 与 csv-paths 的顺序相同,其状态和退出代码反映了最差的情况 文件。行动 返回与 CLI 相同的退出代码:0 表示通过,1 表示警告,2 表示 失败。收据包含与--json相同的有界证据,因此是安全的 作为工作流程工件上传。 如果您的工作流程需要检查,请在调用步骤上使用 continue-on-error: true 在决定如何继续之前输出警告或失败。

设置 summary: true 以将紧凑结果写入 GitHub 操作作业摘要。 它仅包含状态、配置文件、行数和问题数;它从不包括 CSV 路径或单元格值。证据列标签将被省略,除非您还 设置summary-columns: true;仅当这些标签适合时才启用 工作总结。加法 tool-version 和 summary-written 输出 识别已安装的软件包版本以及此调用是否呈现 总结; JSON 收据不变。

每个工作区的收据路径都是固定的,因此不要在其中运行多个实例 在同一工作空间中并行。该操作验证包的现有 CSV 仅启发式;它不添加模式推断、语义验证或 任意 CLI 选项。

设置 annotate: true 以在以下位置添加最多 50 个 GitHub 操作警告或错误 收据支持的 CSV 文件和物理行。注释使用门的现有 仅有界证据并省略单元格值、问题消息和列名称。 签出工作区之外的路径和没有行证据的问题不会 已注释。大于 1 MiB 的收据将被跳过,而不更改门的 状态。这是一个咨询定位辅助工具,而不是安全或 SARIF 报告。

准备复制、提交固定的复合操作工作流程也存在于 examples/github-action.yml.

GitHub 商城

action.yml 携带市场列表所需的元数据(名称、 描述、作者、品牌)。列出是维护者在 GitHub 上采取的步骤 发布形式,而不是存储库自己做的事情;步骤在 正在释放。您是否通过以下方式到达行动 Marketplace 或此存储库,在 uses: 行中使用完整提交 SHA。

食谱

简短的、可复制的设置将门置于特定工具的前面。各用 自定义配置文件,并附带一个可以运行的通过和一个失败的夹具 从结账处:

发展

pip install -e ".[dev]"
ruff check .
python3 -m pytest -q
pre-commit try-repo . csv-quality-gate --files tests/fixtures/clean.csv   # optional hook smoke test

适合的地方

csv-quality-gate 保护进入管道的数据;它是代理级和提示级可靠性工具的补充,而不是替代。

更多来自爱马仕实验室

浏览 开源目录 或联系 [email protected]。

喜欢(0)

上一篇

nk-publish-gate:AI Agent 工具实践指南

nk-publish-gate:AI Agent 工具实践指南

下一篇

nk-git-guardrail-hook:AI Agent 工具实践指南

nk-git-guardrail-hook:AI Agent 工具实践指南
猜你喜欢