test

举报
yd_217356579 发表于 2026/07/15 23:21:39 2026/07/15
【摘要】 # 多Agent面试工作流 — 测试指南## 测试架构选择openJiuwen 提供了两种多Agent协同模式:| 模式 | 适用场景 | 测试文件 ||------|---------|---------|| **HandoffTeam** (顺序转交) | 固定流程面试:A→B→C→D | `test_interview_handoff.py` || **蜂群模式 Swarm** (Le...
# 多Agent面试工作流 — 测试指南

## 测试架构选择

openJiuwen 提供了两种多Agent协同模式:

| 模式 | 适用场景 | 测试文件 |
|------|---------|---------|
| **HandoffTeam** (顺序转交) | 固定流程面试:A→B→C→D | `test_interview_handoff.py` |
| **蜂群模式 Swarm** (Leader+Teammate) | 复杂编排、多候选人并行 | `test_interview_swarm.py` |

---

## 方式一:HandoffTeam 测试(推荐,当前可用)

```bash
# 快速测试(仅知识库评分,不调LLM)
python test_interview_handoff.py --quick

# 全流程测试(调LLM,需配置API KEY)
python test_interview_handoff.py --demo

# 指定面试者
python test_interview_handoff.py --candidate "张三"
```

### 面试Agent转交流程

```
┌────────────────────────────────────────────────────────┐
│  EntryAgent ──transfer_to──► GeneralAgent              │
│    简历解析 & 岗位匹配        通用能力面试              │
│                              │及格线30/60              │
│                              ▼                         │
│                         ProfessionalAgent              │
│                         专业能力面试                    │
│                          │及格线60/100                │
│                              ▼                         │
│                         HRAgent                        │
│                         综合评估 → 录用/淘汰           │
└────────────────────────────────────────────────────────┘
```

### HandoffTeam 配置要点(参考 `handoff_customer_service.py`

```python
from openjiuwen.core.multi_agent.teams.handoff import (
    HandoffTeam, HandoffTeamConfig, HandoffConfig, HandoffRoute,
)

# 1. 定义路由(谁可以转交给谁)
handoff_config = HandoffConfig(
    start_agent=entry_card,       # 从入口Agent开始
    max_handoffs=5,               # 最多转交次数
    routes=[
        HandoffRoute(source="entry_agent", target="general_agent"),
        HandoffRoute(source="general_agent", target="professional_agent"),
        HandoffRoute(source="professional_agent", target="hr_agent"),
    ]
)

# 2. 创建团队
team = HandoffTeam(card=team_card, config=HandoffTeamConfig(handoff=handoff_config))

# 3. 注册Agent(使用 lambda 实现懒加载)
team.add_agent(entry_card, lambda: entry_agent)
team.add_agent(general_card, lambda: general_agent)
team.add_agent(professional_card, lambda: professional_agent)
team.add_agent(hr_card, lambda: hr_agent)

# 4. 运行
result = await team.invoke({"query": "候选人信息..."})
```

### 关键机制:HandoffTool 自动注入

ContainerAgent 会自动为每个 Agent 注入 `transfer_to_{target_id}` 工具。Agent 的 LLM 通过在 ReAct 循环中调用此工具实现转交。

---

## 方式二:蜂群模式 Swarm (agent_teams) 测试

> ⚠️ 需要 openJiuwen >= 0.2.x 版本

```bash
python test_interview_swarm.py
```

### 蜂群模式架构

```
┌─────────────────────────────────────────────────────┐
│  Leader Agent (面试主考官)                            │
│                                                      │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐ │
│  │ Teammate A  │  │ Teammate B  │  │ Teammate C  │ │
│  │ 入口评估Agent│  │ 通用能力Agent│  │ 专业能力Agent│ │
│  └─────────────┘  └─────────────┘  └─────────────┘ │
│                                                      │
│  ┌─────────────┐  ┌──────────────────────────────┐  │
│  │ Teammate D  │  │  Task Board (任务看板)         │  │
│  │ HR评估Agent │  │  · 发布任务 → 领取 → 完成     │  │
│  └─────────────┘  └──────────────────────────────┘  │
└─────────────────────────────────────────────────────┘
```

### TeamAgentSpec 配置

```python
from openjiuwen.agent_teams import (
    TeamAgentSpec, TeamLifecycle, StorageSpec, TransportSpec
)

spec = TeamAgentSpec(
    team_name="interview_swarm",
    lifecycle=TeamLifecycle.TEMPORARY,
    agents={
        "leader": LeaderSpec(
            system_prompt="...",
            model=model_config,
        ),
    },
    storage=StorageSpec(type="memory"),     # 面试记录存储
    transport=TransportSpec(type="inprocess"), # 进程内通信
)

# 通过 Runner 运行
result = await Runner.run_agent_team(agent_team=spec, message="开始面试")
```

---

## 环境配置

### 1. 安装 openJiuwen

```bash
cd agent-core
pip install -e .
# 或: uv sync
```

### 2. 配置环境变量

创建 `.env` 文件:

```env
API_BASE=https://api.deepseek.com
API_KEY=sk-your-key-here
MODEL_NAME=deepseek-v4-flash
MODEL_PROVIDER=DeepSeek
```

### 3. 验证安装

```python
from openjiuwen.core.multi_agent.teams.handoff import HandoffTeam, HandoffConfig
print("HandoffTeam 可用")

from openjiuwen.core.single_agent import ReActAgent, ReActAgentConfig
print("ReActAgent 可用")
```

---

## 测试数据

### 预置面试者

| # | 姓名 | 经验 | 匹配岗位 | 预期结果 |
|---|------|------|---------|---------|
| 1 | 张三 | 3年后端开发, Java/Python | 研发 | ✅ 通过 |
| 2 | 李四 | 5年销售, 客户开发/商务谈判 | 销售 | ✅ 通过 |
| 3 | 王五 | 2年采购, 供应商管理/成本分析 | 采购 | ✅ 通过 |

### 验证评分逻辑

```bash
# 验证通用能力评分 (满分60,≥30通过)
python -c "
from interview_knowledge_base import ScoringEngine, POSITION_CONFIGS
cfg = POSITION_CONFIGS['研发']
# 全对: 应得60分
print(ScoringEngine.evaluate_general('研发', 60))
# 不及格: 应得20分
print(ScoringEngine.evaluate_general('研发', 20))
"
```

---

## 常见问题

| 问题 | 原因 | 解决 |
|------|------|------|
| `ModuleNotFoundError: openjiuwen` | 未安装框架 | `pip install -e agent-core` |
| `API key not configured` | 缺少.env | 配置 `API_KEY``API_BASE` |
| LLM响应太慢 | 模型/网络延迟 | 先用 `--quick` 模式测试评分逻辑 |
| Handoff 不触发 | LLM未调用transfer工具 | 检查system prompt是否明确指示"调用 transfer_to_xxx 工具" |
| 分数计算不对 | 题库未正确加载 | `--quick` 模式验证评分引擎 |

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。