74 lines
3.0 KiB
Markdown
74 lines
3.0 KiB
Markdown
# University Playwright Codegen Agent
|
||
|
||
构建于 [Agno](https://docs.agno.com/) 的自动化代码生成代理:输入海外大学官网的根地址,即可生成一份使用 **Playwright** 的 Python 脚本,脚本会抓取各学院/研究生院下的硕士项目网址以及项目中列出的导师(Supervisor/Faculty)个人信息页面。本项目使用 `uv` 进行依赖管理,`ruff` 做静态检查,`ty` 负责类型检查,并提供了一个基于 Typer 的 CLI。
|
||
|
||
## Features
|
||
|
||
- ✅ **Agno Agent**:利用 `output_schema` 强制结构化输出,里程碑式地生成 `ScriptPlan` 并将其渲染为可执行脚本。
|
||
- ✅ **Playwright sampling**:计划生成前会用 Playwright 对站点进行轻量抓取,帮助 Agent 找到关键词与导航策略。
|
||
- ✅ **Deterministic script template**:脚本模板包含 BFS 爬取、关键词过滤、JSON 输出等逻辑,确保满足“硕士项目 + 导师”需求。
|
||
- ✅ **uv + ruff + ty workflow**:开箱即用的现代 Python 工具链。
|
||
|
||
## Getting started
|
||
|
||
1. **创建虚拟环境并安装依赖**
|
||
|
||
```bash
|
||
uv venv --python 3.12
|
||
uv pip install -r pyproject.toml
|
||
playwright install # 安装浏览器内核
|
||
```
|
||
|
||
2. **配置大模型 API key**
|
||
|
||
- OpenAI: `export OPENAI_API_KEY=...`
|
||
- Anthropic: `export ANTHROPIC_API_KEY=...`
|
||
- 可通过环境变量 `CODEGEN_MODEL_PROVIDER` 在 `openai` 与 `anthropic` 之间切换。
|
||
|
||
3. **运行 CLI 生成脚本**
|
||
|
||
```bash
|
||
uv run university-agent generate \
|
||
"https://www.example.edu" \
|
||
--campus "Example Campus" \
|
||
--language "English" \
|
||
--max-depth 2 \
|
||
--max-pages 60
|
||
```
|
||
|
||
运行完成后会在 `artifacts/` 下看到生成的 Playwright 脚本,并在终端展示自动规划的关键词与验证步骤。
|
||
|
||
4. **执行 Ruff & Ty 检查**
|
||
|
||
```bash
|
||
uv run ruff check
|
||
uvx ty check
|
||
```
|
||
|
||
## Project structure
|
||
|
||
```
|
||
├── README.md
|
||
├── pyproject.toml
|
||
├── src/university_agent
|
||
│ ├── agent.py # Agno Agent 配置
|
||
│ ├── cli.py # Typer CLI
|
||
│ ├── config.py # pydantic Settings
|
||
│ ├── generator.py # Orchestration 引擎
|
||
│ ├── models.py # 数据模型(请求/计划/结果)
|
||
│ ├── renderer.py # ScriptPlan -> Playwright script
|
||
│ ├── sampler.py # Playwright 采样
|
||
│ ├── templates/
|
||
│ │ └── playwright_script.py.jinja
|
||
│ └── writer.py # 将脚本写入 artifacts/
|
||
└── 任务1.txt
|
||
```
|
||
|
||
## Tips
|
||
|
||
- `university-agent generate --help` 查看所有 CLI 选项,可选择跳过采样或导出规划 JSON。
|
||
- 如果 Agno Agent 需使用其他工具,可在 `agent.py` 中自行扩展自定义 `tool`。
|
||
- Playwright 采样在某些环境中需要额外的浏览器依赖,请根据官方提示执行 `playwright install`。
|
||
|
||
Happy building! 🎓🤖
|