You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置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上下文不被外部补丁修改

前置依赖检查

  1. 安装所有必要包:
pip install langchain langchain-openai langchain-community playwright
  1. 安装Playwright浏览器驱动:
playwright install

内容的提问来源于stack exchange,提问作者Paulo Eduardo Dias da Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 12:13:10