guidance-ai / guidance

A guidance language for controlling large language models.
MIT License
18.79k stars 1.04k forks source link

Running Example generates openai.error.APIConnectionError on Mac M2 #359

Open MarkJoel60 opened 1 year ago

MarkJoel60 commented 1 year ago

The bug I have OpenAI installed, and can run it to pull up its help screen from the terminal When running the example program: I get the "Error communicating with OpenAI" error

import os
import guidance
import OpenAI

os.environ["OPENAI_API_KEY"] = "MYOPENAIKEY"

# set the default language model used to execute guidance programs
guidance.llm = guidance.llms.OpenAI("text-davinci-003")

# define a guidance program that adapts a proverb
program = guidance("""Tweak this proverb to apply to model instructions instead.

{{proverb}}
- {{book}} {{chapter}}:{{verse}}

UPDATED
Where there is no guidance{{gen 'rewrite' stop="\\n-"}}
- GPT {{#select 'chapter'}}9{{or}}10{{or}}11{{/select}}:{{gen 'verse'}}""")

# execute the program on a specific proverb
executed_program = program(
    proverb="Where there is no guidance, a people falls,\nbut in an abundance of counselors there is safety.",
    book="Proverbs",
    chapter=11,
    verse=14
)

I get this error: Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/aiohttp/connector.py", line 980, in _wrap_create_connection return await self._loop.create_connection(*args, **kwargs) # type: ignore[return-value] # noqa File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py", line 1103, in create_connection transport, protocol = await self._create_connection_transport( File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py", line 1133, in _create_connection_transport await waiter File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/futures.py", line 285, in await yield self # This tells Task to wait for completion. File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/tasks.py", line 304, in __wakeup future.result() File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/futures.py", line 201, in result raise self._exception.with_traceback(self._exception_tb) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/sslproto.py", line 534, in data_received ssldata, appdata = self._sslpipe.feed_ssldata(data) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/sslproto.py", line 188, in feed_ssldata self._sslobj.do_handshake() File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/ssl.py", line 975, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)

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

Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/openai/api_requestor.py", line 668, in arequest_raw result = await session.request(**request_kwargs) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/aiohttp/client.py", line 536, in _request conn = await self._connector.connect( File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/aiohttp/connector.py", line 540, in connect proto = await self._create_connection(req, traces, timeout) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/aiohttp/connector.py", line 901, in _createconnection , proto = await self._create_direct_connection(req, traces, timeout) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/aiohttp/connector.py", line 1209, in _create_direct_connection raise last_exc File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/aiohttp/connector.py", line 1178, in _create_direct_connection transp, proto = await self._wrap_create_connection( File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/aiohttp/connector.py", line 982, 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:1007)')]

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

Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/guidance/_program_executor.py", line 109, in run await self.visit(self.parse_tree, VariableStack([self.program._variables], self)) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/guidance/_program_executor.py", line 559, in visit visited_children.append(await self.visit(child, variable_stack, inner_next_node, inner_next_next_node, inner_prev_node, node, parent_node)) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/guidance/_program_executor.py", line 266, in visit visited_children = [await self.visit(child, variable_stack, next_node, next_next_node, prev_node, node, parent_node) for child in node] File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/guidance/_program_executor.py", line 266, in visited_children = [await self.visit(child, variable_stack, next_node, next_next_node, prev_node, node, parent_node) for child in node] File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/guidance/_program_executor.py", line 379, in visit command_output = await command_function(*positional_args, named_args) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/guidance/library/_gen.py", line 140, in gen gen_obj = await parser.llm_session( File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/guidance/llms/_openai.py", line 665, in call out = await self.llm.caller(call_args) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/guidance/llms/_openai.py", line 373, in _library_call out = await openai.Completion.acreate(*kwargs) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/openai/api_resources/completion.py", line 45, in acreate return await super().acreate(args, **kwargs) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/openai/api_resources/abstract/engine_apiresource.py", line 217, in acreate response, , api_key = await requestor.arequest( File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/openai/api_requestor.py", line 372, in arequest result = await self.arequest_raw( File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/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

Error in program: Error communicating with OpenAI

System info (please complete the following information):

GianfrancoCorrea commented 1 year ago

There seems to be a problem with M2 Mac, i having the same issue with chainlit trying to perform a stream call with openai

There is an article by openai for the error, but didn't help so much.. APIConnectionError