No Description

yangxiaolong eea8eb0da2 fix: 处理首次未执行审批,后续执行报错的Bug 1 month ago
.idea aa132dc39b init:项目初始化 1 month ago
data-room aa132dc39b init:项目初始化 1 month ago
fixtures aa132dc39b init:项目初始化 1 month ago
policies 5f8e24e11c fix:1、处理langsmith回归对比失效问题; 1 month ago
report-history e4c68bb4da fix: 提交遗漏的代码文件 1 month ago
reports 5f8e24e11c fix:1、处理langsmith回归对比失效问题; 1 month ago
skills 5f8e24e11c fix:1、处理langsmith回归对比失效问题; 1 month ago
src eea8eb0da2 fix: 处理首次未执行审批,后续执行报错的Bug 1 month ago
tests eea8eb0da2 fix: 处理首次未执行审批,后续执行报错的Bug 1 month ago
.env 5f8e24e11c fix:1、处理langsmith回归对比失效问题; 1 month ago
.gitignore aa132dc39b init:项目初始化 1 month ago
README.md 5f8e24e11c fix:1、处理langsmith回归对比失效问题; 1 month ago
pyproject.toml aa132dc39b init:项目初始化 1 month ago
uv.lock aa132dc39b init:项目初始化 1 month ago

README.md

VendorGuard 供应商准入尽调战情室

这是《Deep Agents 核心理论与能力边界》的配套代码项目。

项目使用 Supervisor Agent(主管智能体)协调安全、法务、财务和舆情四个 Subagent(子智能体),读取本地资料室,生成证据可追溯的供应商准入报告,并在提交决定前触发 Human-in-the-loop(人在回路)审批。LangSmith 用于追踪执行过程和运行离线评估。

环境要求

  • Python 3.11+
  • UV
  • 支持 Tool Calling(工具调用)的模型
  • 对应模型供应商的 API Key
  • LangSmith 账户与 API Key(仅在启用 Trace 或评估实验时需要)

安装

Windows PowerShell

uv sync
if (-not (Test-Path .env)) { New-Item .env -ItemType File }

Linux / macOS

uv sync
touch .env

编辑 .env,填写 DeepSeek API Key。模型和 LangSmith 的所有凭证都由项目根目录的 .env 加载,不在代码中硬编码:

DEEPSEEK_API_KEY=你的DeepSeek密钥
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL_NAME=deepseek-v4-flash
DEEPSEEK_ANSWER_THINKING=true

LANGSMITH_TRACING=true
LANGSMITH_API_KEY=你的LangSmith密钥
LANGSMITH_PROJECT=vendor-guard-course
APP_ENV=local

运行

以下命令在 Windows、Linux 和 macOS 中相同:

uv run vendor-guard ACME

也可以直接运行模块:

uv run python -m vendor_guard.cli ACME

CLI 会显示 Trace 是否开启。开启后,根运行名为 vendor-guard-interactive,并带有供应商、线程、环境和工作流元数据。示例配置默认隐藏重复的输入状态、保留输出,避免 DeepAgents Trace 过大。

LangSmith 数据集与离线实验

首次创建教学数据集:

uv run vendor-guard-create-dataset

运行离线回归实验:

uv run vendor-guard-evaluate --experiment-prefix vendor-guard-baseline

实验默认串行执行,以控制模型并发和速率限制。每条样例都在独立临时沙箱中 运行:复制 data-roompoliciesskillsfixtures,但不复制本地 reports。评估报告内容会上传到 LangSmith,沙箱随后自动清理,因此不会读取、 覆盖交互运行的报告,也不会在样例之间互相污染。评估在 HITL 中断处停止, 不会自动批准提交工具。

纯业务层测试

测试不调用模型,也不需要 API Key:

uv run python -m unittest discover -s tests -v

教学限制

  • 外部查询使用本地 Fixture(固定测试数据),不是生产接口。
  • InMemoryStoreInMemorySaver 仅适合本地演示。
  • FilesystemBackend 只适合受控本地环境,不应用于面向公网的 Web 服务。
  • 异步子 Agent 当前不在主流程中,避免把 Preview(预览能力)引入基础实验。
  • 教学材料全部为虚构数据。真实合同、财务和个人信息进入 Trace 前必须按组织策略脱敏,必要时关闭输入输出记录或条件追踪。

配套文档