weaviate / Verba

Retrieval Augmented Generation (RAG) chatbot powered by Weaviate
BSD 3-Clause "New" or "Revised" License
6.21k stars 667 forks source link

OpenAi websocket disconnection when using chat #225

Closed dnbeze closed 1 month ago

dnbeze commented 4 months ago

Description

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)

Attempting to chat the websocket refuses to connect due to ssl cert error. I confirmed certifi was installed and updated.

Is this a bug or a feature?

Steps to Reproduce

env: OPENAI_API_KEY=

verba start

use chat box , websocket disconnects

Additional context

✘ WebSocket Error: Error communicating with OpenAI ERROR: Exception in ASGI application Traceback (most recent call last): File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 1025, in _wrap_create_connection return await self._loop.create_connection(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "uvloop/loop.pyx", line 2084, in create_connection File "uvloop/loop.pyx", line 2079, in uvloop.loop.Loop.create_connection File "uvloop/sslproto.pyx", line 517, in uvloop.loop.SSLProtocol._on_handshake_complete File "uvloop/sslproto.pyx", line 499, in uvloop.loop.SSLProtocol._do_handshake File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/ssl.py", line 917, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/openai/api_requestor.py", line 668, in arequest_raw result = await session.request(**request_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/aiohttp/client.py", line 581, in _request conn = await self._connector.connect( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 544, in connect proto = await self._create_connection(req, traces, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 944, in _createconnection , proto = await self._create_direct_connection(req, traces, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 1257, in _create_direct_connection raise last_exc File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 1226, in _create_direct_connection transp, proto = await self._wrap_create_connection( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/aiohttp/connector.py", line 1027, in _wrap_create_connection raise ClientConnectorCertificateError(req.connection_key, exc) from exc aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host api.openai.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)')]

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/goldenverba/server/api.py", line 179, in websocket_generate_stream async for chunk in manager.generate_stream_answer( File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/goldenverba/verba_manager.py", line 662, in generate_stream_answer async for result in self.generator_manager.generators[ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/goldenverba/components/generation/GPT4Generator.py", line 71, in generate_stream completion = await openai.ChatCompletion.acreate( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/openai/api_resources/chat_completion.py", line 45, in acreate return await super().acreate(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/openai/api_resources/abstract/engine_apiresource.py", line 217, in acreate response, , api_key = await requestor.arequest( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/openai/api_requestor.py", line 372, in arequest result = await self.arequest_raw( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/openai/api_requestor.py", line 685, in arequest_raw raise error.APIConnectionError("Error communicating with OpenAI") from e openai.error.APIConnectionError: Error communicating with OpenAI

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 240, in run_asgi result = await self.app(self.scope, self.asgi_receive, self.asgi_send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 69, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 292, in call await super().call(scope, receive, send) File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/starlette/applications.py", line 122, in call await self.middleware_stack(scope, receive, send) File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 149, in call await self.app(scope, receive, send) File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 75, in call await self.app(scope, receive, send) File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 79, in call raise exc File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 68, in call await self.app(scope, receive, sender) File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in call raise e File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in call await self.app(scope, receive, send) File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/starlette/routing.py", line 718, in call await route.handle(scope, receive, send) File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/starlette/routing.py", line 341, in handle await self.app(scope, receive, send) File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/starlette/routing.py", line 82, in app await func(session) File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 324, in app await dependant.call(values) File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/goldenverba/server/api.py", line 193, in websocket_generate_stream await websocket.send_json( File "/Users/brett/PycharmProjects/training/.venv/lib/python3.12/site-packages/starlette/websockets.py", line 171, in send_json text = json.dumps(data, separators=(",", ":")) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/json/init.py", line 238, in dumps kw).encode(obj) ^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/json/encoder.py", line 200, in encode chunks = self.iterencode(o, _one_shot=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/json/encoder.py", line 258, in iterencode return _iterencode(o, 0) ^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/json/encoder.py", line 180, in default raise TypeError(f'Object of type {o.class.name} ' TypeError: Object of type APIConnectionError is not JSON serializable

thomashacker commented 4 months ago

Thanks for the issue! we're looking into it

thomashacker commented 1 month ago

We released the new version of verba, this should fix the issue