配置Langchain Agents调用Playwright时遇线程切换错误求助
Langchain + Playwright 运行错误修复方案
错误原因
同步Playwright依赖greenlet管理协程上下文,而nest_asyncio的补丁会修改事件循环,干扰greenlet的线程切换逻辑,导致出现greenlet.error。
方案1:纯异步版本(推荐)
完全基于异步机制实现,避免线程冲突问题,可直接运行:
from langchain_community.agent_toolkits import PlayWrightBrowserToolkit from langchain_openai import ChatOpenAI from langchain.agents import create_agent import asyncio from langchain_community.tools.playwright.utils import create_async_playwright_browser async def main(): # 创建异步浏览器实例 async_browser = await create_async_playwright_browser(headless=False) toolkit = PlayWrightBrowserToolkit.from_browser(async_browser=async_browser) tools = toolkit.get_tools() # 初始化大语言模型 model = ChatOpenAI(model="gpt-4o", temperature=0) # 创建Agent链 agent_chain = create_agent(model=model, tools=tools) # 异步调用Agent result = await agent_chain.ainvoke( {"messages": [("user", "What are the headers on langchain.com?")]} ) print(result) # 关闭浏览器资源 await async_browser.close() if __name__ == "__main__": asyncio.run(main())
关键调整点
- 使用
create_async_playwright_browser创建异步浏览器实例 - 调用Agent的异步方法
ainvoke而非同步invoke - 移除
nest_asyncio相关代码,用原生asyncio.run启动异步流程
方案2:修复同步版本
若必须使用同步模式,需移除nest_asyncio补丁,避免干扰greenlet上下文:
from langchain_community.agent_toolkits import PlayWrightBrowserToolkit from langchain_openai import ChatOpenAI from langchain.agents import create_agent from langchain_community.tools.playwright.utils import create_sync_playwright_browser def main(): # 创建同步浏览器实例 sync_browser = create_sync_playwright_browser(headless=False) toolkit = PlayWrightBrowserToolkit.from_browser(sync_browser=sync_browser) tools = toolkit.get_tools() # 初始化大语言模型 model = ChatOpenAI(model="gpt-4o", temperature=0) # 创建Agent链 agent_chain = create_agent(model=model, tools=tools) # 同步调用Agent result = agent_chain.invoke( {"messages": [("user", "What are the headers on langchain.com?")]} ) print(result) # 关闭浏览器资源 sync_browser.close() if __name__ == "__main__": main()
关键调整点
- 删除所有
nest_asyncio相关导入和调用 - 确保同步浏览器的greenlet上下文不被外部补丁修改
前置依赖检查
- 安装所有必要包:
pip install langchain langchain-openai langchain-community playwright
- 安装Playwright浏览器驱动:
playwright install
内容的提问来源于stack exchange,提问作者Paulo Eduardo Dias da Silva
相关产品推荐
相关产品推荐

