Agent 开发实践:基于 simple-agent 的循环构建与工具调用
在 AI Agent 的开发中,一个健壮的 Loop 循环(Agent Loop)是其处理复杂任务的核心。simple-agent 作为一款轻量级框架,通过其简洁的接口将 LLM、工具(Tools)和状态(Context)有机结合。
本文将调研 simple-agent 的核心接口,构建一套完备的 Agent Loop 示例,并解析其背后的设计逻辑。
核心接口分析
simple-agent 的设计哲学是“去重型化”,其核心接口围绕着 Agent 类展开:
Agent()初始化:支持自定义 LLM 配置(通过 LiteLLM 支持 100+ 模型)、System Prompt 以及工具目录。run(task):单轮任务执行,适合一次性的问答或任务。chat(message):多轮会话管理,自动维护 Context 状态,这是实现“Agent 记忆”的关键。- Skills System:支持 Tier 1(元数据)到 Tier 2(指令)的渐进式加载,有效减少 token 消耗。
完备的 Agent Loop 示例
以下代码展示了一个具备工具调用与上下文感知的 Agent 运行逻辑:
from simple_agent import SimpleAgent
# 1. 初始化:设置模型与行为约束
agent = SimpleAgent(
model="openrouter/anthropic/claude-3.5-sonnet",
system_prompt="你是一个能够执行网络诊断的专业 AI 助理。",
enable_skills=True
)
# 2. 模拟真实 Agent Loop
def run_agent_loop(task: str):
print(f"--- 任务开始: {task} ---")
# 获取初始结果
response = agent.run(task)
# 3. 循环判断与迭代(模拟生产逻辑)
iterations = 0
while not response['success'] and iterations < 5:
print(f"迭代 {iterations}: 尝试自我修正...")
response = agent.chat("请根据之前的错误重新规划你的工具调用。")
iterations += 1
return response['result']
# 执行
result = run_agent_loop("检查 google.com 的连接性,并根据结果提供建议")
print(f"最终结果: {result}")
关键技术解读
1. 状态维持与“内存”
LLM 本身是无状态的,Agent 的“记忆”完全依赖于 SimpleAgent 类内部的对话历史管理。在 chat() 接口调用时,框架会自动把最新的交互追加到历史列表中,并重新作为整个上下文发送给 LLM。这种实现方式确保了 Agent 的一致性。
从自动化到智能化:Playwright 全栈进阶指南
从自动化到智能化:Playwright 全栈进阶指南
Playwright 已经超越了传统的自动化测试框架,成为了 Web 浏览器协议栈的最强控制端。无论是常规的端到端测试,还是赋予 AI Agent 真实世界的“双手”,Playwright 都是必不可少的工具。
以下是 Playwright 从零到 AI 代理的进阶路线图。
目录
- 环境搭建与架构初探
- 定位器与交互艺术
- 异步测试与高级等待机制
- AI 代理与浏览器控制 (MCP)
- CI/CD 与多环境适配
1. 环境搭建与架构初探
Playwright 基于 WebKit、Chromium 和 Firefox 的原生 CDP(Chrome DevTools Protocol),相比 Selenium 具有更高的稳定性和并发性能。
- 初始化:
npm init playwright@latest或 Python 下pip install playwright - 关键配置:理解配置文件中的
projects(多浏览器并行)与use(全局断言/超时设置)。
2. 定位器与交互艺术
拒绝 XPath,全面拥抱 Web-First Locators。
- 推荐使用:
getByRole,getByLabel,getByPlaceholder,getByTestId。 - 交互逻辑:
click,fill,press均具备自动等待功能,有效减少了手动sleep的“代码异味”。
3. 异步测试与高级等待机制
- 事件驱动:利用
page.waitForEvent和page.waitForResponse精准监控 Web 交互流。 - 状态断言:使用
expect工具链进行原子化断言(如toBeVisible)。 - 网络拦截:使用
page.route进行 API Mock 或异常注入,模拟复杂的后端行为。
4. AI 代理与浏览器控制 (MCP)
这是 Playwright 进阶的巅峰:将浏览器控制权交给 LLM。
AI Agent 工程师学习路线图:Python · Linux · 算法 · Agent 四线合一(2025–2026)
这篇文章把四条通常被分开讲的学习线——Python 工程、Linux 系统、数据结构与算法、AI/Agent——放进同一张路线图。核心判断是:它们不是四份独立的清单,而是围绕同一个能力闭环收敛。Linux 提供 Agent 的运行与隔离边界,Python 提供工程化底座,算法提供检索/规划/限流/缓存的内核,AI/Agent 是最终交付形态。
为什么要四线交叉,而不是串行
AI Agent 工程师与传统后端工程师的差别,不在模型本身,而在围绕模型的系统工程:如何把一次不稳定的模型调用,包装成可恢复、可观测、可评测、可审计的运行时。
这个目标恰好落在四类能力的交集上:
- 模型调用会失败,要重试与限流 → 需要并发与算法;
- 工具调用要触碰真实文件与网络 → 需要 Linux 内核能力做边界;
- 上下文、检索、评测要长期维护 → 需要 Python 工程化;
- 最终形态是一套服务 → 需要容器、部署与可观测性。
所以正确姿势是交叉推进,而不是"先学完 A 再学 B"。下面这张表是整体节奏,每周建议投入 10–15 小时:工作日 1–1.5 小时(以算法为主),周末 5–6 小时(以项目为主)。
| 阶段 | 周期 | Python | Linux | 算法(贯穿) | AI / Agent |
|---|---|---|---|---|---|
| P0 环境基线 | 第 1–2 周 | uv + ruff + pytest + mypy 模板仓库 | Shell 最小集 + SSH 密钥登录 | 复杂度分析 | 通读 Anthropic《Building Effective Agents》 |
| P1 工程打底 | 第 3–10 周 | 类型系统、Pydantic v2、asyncio、FastAPI 流式服务 | 权限/进程/cgroup v2/systemd/网络 | 数组、哈希、双指针、二分、排序 | 原生 API 手写 ReAct Agent;结构化输出 |
| P2 应用构建 | 第 11–24 周 | 数据栈、profiling、打包发布 | 容器化、反代 TLS、VPS 加固、可观测性 | 树、堆、图、DFS/BFS、拓扑排序、回溯、DP 入门 | RAG(混合检索+重排)、评测、MCP server/client |
| P3 Agent 深化 | 第 25–40 周 | 异步多工具运行时、性能优化 | eBPF/perf 排障、Landlock/seccomp 沙箱 | 并查集、Trie、贪心、高级 DP、字符串算法 | LangGraph 1.0 有状态工作流、多 Agent、A2A |
| P4 生产化 | 第 41–52 周 | vLLM 本地部署、服务切换 | 高可用、备份、监控告警 | 图算法综合、位运算、综合题 | 可观测+评测回归+安全防护的生产级 Agent |
一、Python 工程线:把"能跑"变成"敢维护"
版本基线
生产基线选 Python 3.12/3.13,新项目可以上 3.14(3.15 处于 RC 阶段)。需要掌握的语言特性集中在四处:
Playwright 完全指南:从入门到精通的浏览器自动化实战
一、为什么选择 Playwright?
Playwright 是微软于 2020 年开源的新一代浏览器自动化工具,如今已成为 E2E 测试和浏览器自动化领域的主流选择。与 Selenium 等传统工具相比,它有三个核心优势:
- 统一 API 跨浏览器:Chromium、Firefox、WebKit 三套引擎通过一致的 Python API 操作,无需切换语法。
- 原生异步 + 自动等待:底层基于 WebSocket 维持浏览器连接,元素操作自带重试和等待,避免了 Selenium 常见的
time.sleep毒瘤。 - 开箱即用的工具链:代码录制器(CodeGen)、Trace Viewer、截图对比、拦截 Mock 等能力均内置,不必再拼装第三方库。
如果你的需求是稳定地模拟用户操作、跑端到端测试,或者抓取强 JS 渲染页面,Playwright 的学习成本远低于 Selenium 全家桶。
二、环境搭建
2.1 前置条件
- Python:官方推荐 Python 3.9 及以上版本(3.7-3.8 也能运行,但部分特性受限)。
- 操作系统:macOS、Windows、Linux(包括 Docker 容器)均支持。
2.2 安装步骤
# 1. 创建并激活虚拟环境(推荐)
python3 -m venv .venv
source .venv/bin/activate # macOS / Linux
# .venv\Scripts\activate # Windows PowerShell
# 2. 安装 Playwright 库
pip install playwright
# 3. 下载浏览器驱动(Chromium、Firefox、WebKit)
playwright install
# 4. 安装 pytest 插件(测试场景必备)
pip install pytest-playwright
💡 国内加速:如果下载浏览器慢,可使用清华镜像:
google-genai SDK 全流程指南:Vertex AI + Gemini API 实战
为什么要写这篇?
最近在给 Hermes-lite 接入 Gemini 3.x 模型时,踩了不少 google-genai SDK 的坑——尤其是多轮 tool call 时 thought_signature 丢失导致 400、streaming 模式下 function_call args 是片段、response.text 莫名其妙打 stderr Warning 等问题。
查了一圈官方文档和社区资料,发现这些坑分散在各处,所以整理了一篇一站式指南,把从安装到上线的完整路径、所有踩坑点都写清楚。
一、SDK 概览
包名:google-genai(PyPI)
仓库:googleapis/python-genai
当前版本:v2.10.0(2026-06-24)
Python:3.9+
License:Apache-2.0
google-genai 统一封装了两条后端:
- Gemini Developer API:
api_key认证,适合快速开发 - Vertex AI:
project + location,gcloud ADC 认证,VPC 上最方便
通过 Client 的一个接口切换,代码几乎零改动。
二、Google Cloud VPS 上全流程配置
2.1 环境准备
# 创建 venv(推荐 Python 3.12+)
python3 -m venv /opt/genai-env
source /opt/genai-env/bin/activate
# 安装 SDK
pip install google-genai
# 验证
python3 -c "from google import genai; print('OK', google.genai.__version__)"
2.2 认证:Vertex AI 模式(gcloud ADC)
VPC 上最方便——Application Default Credentials,无需手动管理密钥。