我们都曾经历过这样的场景:早上 6:00 醒来,疯狂刷新医院的预约页面,结果发现“专家号”名额在几毫秒内就消失了。传统的浏览器自动化在这里往往失效,因为医院门户网站通常非常笨重,充斥着动态弹窗,且用户界面布局不一致。
在本指南中,我们将构建一个用于智能任务自动化的下一代人工智能代理。通过结合 Playwright Python 的强大功能与大语言模型函数调用,我们将创建一个不仅能“点击”还能“理解”预约流程的系统。这种方法使我们从脆弱的层叠样式表选择器转向具有弹性、基于推理的自动化。
🏗 架构:推理-行动循环
与传统脚本不同,当按钮的身份标识从 submit-01 变为 btn-confirm 时,传统脚本会崩溃,而我们的代理使用反应式(推理 + 行动)模式。它观察页面,将简化的超文本标记语言/无障碍树发送给大语言模型,并决定下一步使用哪个工具。
graph TD
A[用户请求:预约史密斯医生] --> B{代理控制器}
B --> C[大语言模型推理引擎]
C -->|决定工具| D[Playwright 执行器]
D -->|交互| E[医院门户网站]
E -->|页面内容/截图| D
D -->|观察结果| B
B -->|状态存储| F[(Redis)]
C -->|最终确认| G[通知用户]
🛠 先决条件
要学习本高级教程,您需要:
- Python 3.10+
- Playwright:现代网络测试和自动化的黄金标准。
- OpenAI 软件开发工具包:用于函数调用(推荐使用 GPT-4o 进行视觉推理)。
- Redis:用于管理会话状态和速率限制。
🚀 第一步:定义浏览器工具
我们需要赋予我们的大语言模型“双手”。为此,我们定义由 Playwright 执行的函数。大语言模型不会编写代码;它将输出与我们函数签名匹配的 JavaScript 对象表示法。
import asyncio
from playwright.async_api import async_playwright
class MedicalAgentTools:
def __init__(self, page):
self.page = page
async def navigate_to_department(self, dept_name: str):
"""导航至特定的医院科室链接。"""
links = await self.page.get_by_role("link").all(
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。
分享到:
长按或扫码识别 分享给好友