PythonAnywhere环境下g4f库调用Bing Provider报错求助
问题描述
执行以下g4f相关代码时出现错误:
async def GPT_Request(prompt: str) -> str: global me print(prompt) response_generator = await g4f.ChatCompletion.create_async( model=g4f.models.gpt_4, provider=g4f.Provider.Bing, messages=[{"role": "user", "content": prompt}], ) print(response_generator) return response_generator
错误日志如下:
Using Bing provider and gpt-4 model INFO:aiogram.contrib.middlewares.logging:Process update [ID:173124119]: [failed] (in 197 ms) ERROR:asyncio:Task exception was never retrieved future: <Task finished name='Task-10' coro=<Dispatcher._process_polling_updates() done, defined at /home/SiriyiuS/.local/lib/python3.10/site-packages/aiogram/dispatcher/dispatcher.py:407> exception=RuntimeError('Response: ')> Traceback (most recent call last): File "/home/SiriyiuS/.local/lib/python3.10/site-packages/g4f/Provider/bing/conversation.py", line 52, in create_conversation data = await response.json() File "/home/SiriyiuS/.local/lib/python3.10/site-packages/aiohttp/client_reqrep.py", line 1104, in json raise ContentTypeError( aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: ', url=URL('https://www.bing.com/turing/conversation/create?bundleVersion=1.1579.2') During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/SiriyiuS/.local/lib/python3.10/site-packages/aiogram/dispatcher/dispatcher.py", line 415, in _process_polling_updates for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)): File "/home/SiriyiuS/.local/lib/python3.10/site-packages/aiogram/dispatcher/dispatcher.py", line 235, in process_updates return await asyncio.gather(*tasks) File "/home/SiriyiuS/.local/lib/python3.10/site-packages/aiogram/dispatcher/handler.py", line 116, in notify response = await handler_obj.handler(*args, **partial_data) File "/home/SiriyiuS/.local/lib/python3.10/site-packages/aiogram/dispatcher/dispatcher.py", line 256, in process_update return await self.message_handlers.notify(update.message) File "/home/SiriyiuS/.local/lib/python3.10/site-packages/aiogram/dispatcher/handler.py", line 116, in notify response = await handler_obj.handler(*args, **partial_data) File "/home/SiriyiuS/SYSorarBOT/telegbot.py", line 1980, in bot_message response_text = await GPT_Request(message.text) File "/home/SiriyiuS/SYSorarBOT/telegbot.py", line 42, in GPT_Request response_generator = await g4f.ChatCompletion.create_async( File "/home/SiriyiuS/.local/lib/python3.10/site-packages/g4f/providers/base_provider.py", line 232, in create_async return "".join([ File "/home/SiriyiuS/.local/lib/python3.10/site-packages/g4f/providers/base_provider.py", line 232, in <listcomp> return "".join([ File "/home/SiriyiuS/.local/lib/python3.10/site-packages/g4f/Provider/Bing.py", line 291, in stream_generate conversation = await create_conversation(session) File "/home/SiriyiuS/.local/lib/python3.10/site-packages/g4f/Provider/bing/conversation.py", line 54, in create_conversation raise RuntimeError(f"Response: {await response.text()}") RuntimeError: Response:
服务器环境为PythonAnywhere.com,已尝试设置代理及修改寻址方式,问题未解决。
解决方案
- 更新g4f到最新开发版
g4f的Bing Provider会因Bing接口更新频繁失效,直接安装最新分支版本:
pip install git+https://github.com/xtekky/gpt4free.git@main
- 手动添加验证信息
Bing对请求验证严格,需携带登录后的Cookie和合法UA。修改代码传入自定义会话:
import aiohttp async def GPT_Request(prompt: str) -> str: global me print(prompt) # 从登录Bing Chat的浏览器中提取对应Cookie值 cookies = { "_U": "你的_U Cookie内容", "SRCHD": "你的SRCHD Cookie内容" } headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" } async with aiohttp.ClientSession(cookies=cookies, headers=headers) as session: response_generator = await g4f.ChatCompletion.create_async( model=g4f.models.gpt_4, provider=g4f.Provider.Bing, messages=[{"role": "user", "content": prompt}], session=session ) print(response_generator) return response_generator
注意:Cookie有有效期,过期后需重新从浏览器获取。
- 切换其他稳定Provider
如果Bing Provider持续无法使用,替换为g4f支持的其他Provider,比如:
response_generator = await g4f.ChatCompletion.create_async( model=g4f.models.gpt_35_turbo, provider=g4f.Provider.You, messages=[{"role": "user", "content": prompt}], )
- 检查PythonAnywhere网络限制
在PythonAnywhere控制台测试直接访问Bing接口:
import aiohttp import asyncio async def test_bing(): async with aiohttp.ClientSession() as session: response = await session.get("https://www.bing.com/turing/conversation/create?bundleVersion=1.1579.2") print(response.status) print(await response.text()) asyncio.run(test_bing())
若返回非200状态码或空内容,说明PythonAnywhere网络无法正常访问该接口,可考虑升级套餐或更换服务器。
内容的提问来源于stack exchange,提问作者SiriyiuS
相关产品推荐
相关产品推荐

