代码执行优化工具

通过代码执行模式优化Web爬取任务,减少模型上下文负担,显著降低计算资源和时间成本。

  • by yfe404
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 yfe404/playwright-mcp-code-exec-demo

使用说明

使用MCP(Anthropic)执行代码——Web抓取案例研究

这个回购是对Anthropic文章中想法的最小复制 “使用MCP执行代码”本文强调了直接工具调用的两个低效之处:

  • 工具定义使上下文膨胀(提前加载所有内容)。
  • 中间工具结果流经模型,并在每次转弯时回放。

建议的修复方法是让模型编写一次代码并在模型外运行,将中间数据排除在上下文窗口之外。我们将该模式应用于一个简单的抓取任务,以显示令牌/时间/成本的影响。

任务(两种方法相同)

取消科幻小说类别https://books.toscrape.com并返回JSON title, price, product_url (限制20)。

模型看到了什么

  • 基线(直接工具): 查看聊天历史记录中的每个工具输出(包括DOM导出的响应)。稳健,但上下文和令牌每次都会增长。
  • 代码执行: 只看到系统提示+任务。确实如此 不 参见DOM/工具输出;中间数据不在模型中。高效,但选择器/导航发现是启发式的,除非您添加一个小的侦察步骤(此处不包括)。

结果(books.toscrape科幻)

  • 基线:64397个代币;37.0s; $0.2157;3圈;16本书。
  • 代码执行:1468个令牌;13.9s(8.4s代码生成,7.2s执行); $0.0109;1通电话;16本书。
  • 节省:约98%的代币,约95%的成本,约2.7倍的速度。相同的数据集。

设置

  • 需要Node 20+和Python 3.11。
  • 复制 .env.example 到 .env 并设置 OPENROUTER_API_KEY.
  • 对于本地(非Docker)运行:
    npm install
    pip3 install --no-cache-dir -r requirements.txt
    

运行(Docker/Podman)

基线(直接工具):

podman run --rm \
  -v $(pwd):/app \
  --env-file .env \
  -e HTTP_PROXY= -e HTTPS_PROXY= \
  -w /app \
  localhost/mcp-experiment python3 experiments/baseline.py

代码执行(LLM生成TS,通过MCP执行):

podman run --rm \
  -v $(pwd):/app \
  --env-file .env \
  -e HTTP_PROXY= -e HTTPS_PROXY= \
  -w /app \
  localhost/mcp-experiment python3 experiments/code_exec.py

文件

  • experiments/baseline.py:直接MCP工具调用(ReAct)。
  • experiments/code_exec.py:代码执行模式(TS生成一次,通过Playwright MCP运行)。
  • Dockerfile, package.json, requirements.txt:环境设置。
  • .env.example:API密钥占位符。