test
【摘要】 # 多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)