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

为何无法捕获Python guidance库的HTTP请求?求解决方案

问题分析与解决方案

核心原因

  1. 异步请求未继承系统代理:OpenAI库的同步请求(基于requests)会自动读取http_proxy/https_proxy环境变量,但guidance默认使用OpenAI的异步客户端(基于aiohttp),而aiohttp不会自动加载系统代理配置,导致请求绕过mitmproxy。
  2. 缓存机制拦截请求:guidance依赖的gptcache可能缓存了请求结果,实际未发起新的HTTP请求,因此无法被捕获。
  3. 客户端配置覆盖代理:部分guidance版本在初始化OpenAI客户端时,可能显式清空了代理参数,忽略了系统环境变量的设置。

解决办法

1. 强制使用同步请求

修改guidance的OpenAI客户端初始化代码,禁用异步模式,让其使用requests同步客户端以继承系统代理:

import guidance

# 初始化时关闭异步模式
guidance.llm = guidance.llms.OpenAI("text-davinci-003", async_mode=False)

2. 手动配置aiohttp代理

若需保留异步模式,直接为guidance的OpenAI客户端设置代理连接器:

import guidance
from aiohttp import TCPConnector

# 创建带mitmproxy地址的连接器
proxy_connector = TCPConnector(proxy="http://127.0.0.1:8080")

# 初始化客户端时传入连接器
guidance.llm = guidance.llms.OpenAI(
    "text-davinci-003",
    client_kwargs={"connector": proxy_connector}
)

3. 禁用缓存验证请求

检查是否因缓存导致无实际请求,临时禁用缓存:

import guidance

# 初始化时关闭缓存
guidance.llm = guidance.llms.OpenAI("text-davinci-003", cache=False)

4. 全局设置aiohttp代理

通过环境变量为aiohttp单独配置代理(部分版本生效):

export AIOHTTP_PROXY=http://127.0.0.1:8080

内容的提问来源于stack exchange,提问作者washingweb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:43:17