lss233 / chatgpt-mirai-qq-bot

🚀 一键部署!真正的 AI 聊天机器人!支持ChatGPT、文心一言、讯飞星火、Bing、Bard、ChatGLM、POE,多账号,人设调教,虚拟女仆、图片渲染、语音发送 | 支持 QQ、Telegram、Discord、微信 等平台
GNU Affero General Public License v3.0
13.06k stars 1.56k forks source link

[BUG] gpt4free无法正常使用 #1328

Open liu2-3zhi opened 7 months ago

liu2-3zhi commented 7 months ago

提交 issue 前,请先确认:

表现
gpt4free无法正常使用

运行环境:

使用的时候收到了错误提示

2024-03-03 06:56:31.390 | INFO     | manager.bot:login_gpt4free:349 - 正在解析第 1 个 gpt4free 模型
2024-03-03 06:56:31.390 | ERROR    | manager.bot:login_gpt4free:355 - 解析失败:
2024-03-03 06:56:31.391 | ERROR    | manager.bot:login_gpt4free:356 - Cannot run the event loop while another loop is running
Traceback (most recent call last):

  File "/app/bot.py", line 14, in <module>
    loop.run_until_complete(botManager.login())
    │    │                  │          └ <function BotManager.login at 0x7fb8f62d8310>
    │    │                  └ <manager.bot.BotManager object at 0x7fb92b469450>
    │    └ <function BaseEventLoop.run_until_complete at 0x7fb92cb9c4c0>
    └ <_UnixSelectorEventLoop running=True closed=False debug=False>

  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 636, in run_until_complete
    self.run_forever()
    │    └ <function BaseEventLoop.run_forever at 0x7fb92cb9c430>
    └ <_UnixSelectorEventLoop running=True closed=False debug=False>
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 603, in run_forever
    self._run_once()
    │    └ <function BaseEventLoop._run_once at 0x7fb92cb9df30>
    └ <_UnixSelectorEventLoop running=True closed=False debug=False>
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 1909, in _run_once
    handle._run()
    │      └ <function Handle._run at 0x7fb92cb3d900>
    └ <Handle <TaskStepMethWrapper object at 0x7fb92d1a7d90>()>
  File "/usr/local/lib/python3.10/asyncio/events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
    │    │            │    │           │    └ <member '_args' of 'Handle' objects>
    │    │            │    │           └ <Handle <TaskStepMethWrapper object at 0x7fb92d1a7d90>()>
    │    │            │    └ <member '_callback' of 'Handle' objects>
    │    │            └ <Handle <TaskStepMethWrapper object at 0x7fb92d1a7d90>()>
    │    └ <member '_context' of 'Handle' objects>
    └ <Handle <TaskStepMethWrapper object at 0x7fb92d1a7d90>()>

  File "/app/manager/bot.py", line 173, in login
    login_func()
    └ <bound method BotManager.login_gpt4free of <manager.bot.BotManager object at 0x7fb92b469450>>

> File "/app/manager/bot.py", line 351, in login_gpt4free
    if g4f_helper.g4f_check_account(account):
       │          │                 └ G4fModels(provider='g4f.Provider.Bing', model='gpt-4', alias='gpt-4', description='gpt4free的gpt-4')
       │          └ <function g4f_check_account at 0x7fb8fc53dea0>
       └ <module 'adapter.gpt4free.g4f_helper' from '/app/adapter/gpt4free/g4f_helper.py'>

  File "/app/adapter/gpt4free/g4f_helper.py", line 11, in g4f_check_account
    response = g4f.ChatCompletion.create(
               │   │              └ <staticmethod(<function ChatCompletion.create at 0x7fb8f62a7ac0>)>
               │   └ <class 'g4f.ChatCompletion'>
               └ <module 'g4f' from '/usr/local/lib/python3.10/site-packages/g4f/__init__.py'>

  File "/usr/local/lib/python3.10/site-packages/g4f/__init__.py", line 52, in create
    return result if stream else ''.join(result)
           │         │                   └ <generator object AsyncGeneratorProvider.create_completion at 0x7fb8f49885f0>
           │         └ False
           └ <generator object AsyncGeneratorProvider.create_completion at 0x7fb8f49885f0>
  File "/usr/local/lib/python3.10/site-packages/g4f/Provider/base_provider.py", line 93, in create_completion
    yield from run_generator(cls.create_async_generator(model, messages, stream=stream, **kwargs))
               │             │   │                      │      │                │         └ {}
               │             │   │                      │      │                └ False
               │             │   │                      │      └ [{'role': 'user', 'content': 'hello'}]
               │             │   │                      └ 'gpt-4'
               │             │   └ <staticmethod(<function Bing.create_async_generator at 0x7fb8fc2224d0>)>
               │             └ <class 'g4f.Provider.Bing.Bing'>
               └ <function run_generator at 0x7fb8fc2211b0>
  File "/usr/local/lib/python3.10/site-packages/g4f/Provider/base_provider.py", line 122, in run_generator
    yield loop.run_until_complete(gen.__anext__())
          │    │                  │   └ <slot wrapper '__anext__' of 'async_generator' objects>
          │    │                  └ <async_generator object stream_generate at 0x7fb8f638b040>
          │    └ <function BaseEventLoop.run_until_complete at 0x7fb92cb9c4c0>
          └ <_UnixSelectorEventLoop running=False closed=False debug=False>
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 625, in run_until_complete
    self._check_running()
    │    └ <function BaseEventLoop._check_running at 0x7fb92cb9c3a0>
    └ <_UnixSelectorEventLoop running=False closed=False debug=False>
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 586, in _check_running
    raise RuntimeError(

RuntimeError: Cannot run the event loop while another loop is running