# VendorGuard 供应商准入尽调战情室(作业)

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

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

Novapay 供应商续约复审

## 环境要求

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

## 安装

### Windows PowerShell

```powershell
uv sync
```

### Linux / macOS

```bash
uv sync
touch .env
```

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

```dotenv
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 中相同：

```bash
uv run vendor-guard NOVAPAY
```

也可以直接运行模块：

```bash
uv run python -m vendor_guard.cli NOVAPAY
```

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

## 测试
测试不调用模型，也不需要 API Key：

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

运行结果如下：
![alt text](image.png)



## LangSmith 数据集与离线实验

首次创建教学数据集（代码中数据集名称为 vendor-guard-onboarding-v2 ）：

```bash
uv run vendor-guard-create-dataset
```

运行离线回归实验（experiment名称为vendor-guard-after-change）：

```bash
uv run vendor-guard-evaluate --dataset vendor-guard-onboarding-v2 --experiment-prefix vendor-guard-after-change
```








