Stackoverflow/Python

ChatGPT 에러, AttributeError: partially initialized module 'openai' has no attribute 'Completion'

The Neo 2023. 9. 14. 10:17

현재 ChatGPT API를 Java로 Rest 기반으로 호출하여 사용을 잘하고 있는데 Python의 패키지를 이용하여 ChatGPT를 실행해보고자, 사이트에 있는 Python 예제를 그대로 실행해보려 하였습니다.

 

ChatGPT 에러, 'openai' has no attribute

 

openai 패키지를 정상적으로 설치 한후, 예제 코드를 그대로 실행하였으나, openai 패키지 관련 에러가 발생하였는데요. 원인이 무엇이고 어떻게 해결을 하였는지 좀 황당스럽지만 포스팅 해보겠습니다.

 

에러 예제 코드

import os
import openai

openai.api_key = os.getenv("OPEN_AI_LICENSE")

response = openai.Completion.create(
  model="text-davinci-003",
  prompt="The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.\n\nHuman: Hello, who are you?\nAI: I am an AI created by OpenAI. How can I help you today?\nHuman: I'd like to cancel my subscription.\nAI:",
  temperature=0.9,
  max_tokens=150,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0.6,
  stop=[" Human:", " AI:"]
)

 

위 예제 코드는 금일자 Open AI에서 제공하고 있는 예제 코드인데요. 이를 그대로 실행하니 아래와 같은 에러가 발생하였습니다.

 

D:\anaconda3\envs\gpt\python.exe D:/gpt/openai.py
Traceback (most recent call last):
  File "D:/gpt/openai.py", line 2, in <module>
    import openai
  File "D:\gpt\openai.py", line 6, in <module>
   response = openai.Completion.create(
AttributeError: partially initialized module 'openai' has no attribute 'Completion' (most likely due to a circular import)

 

쉽게 openai에 Completion이라는 펑션이 존재하지 않는 걸로 보였습니다. 그래서 확인을 위해 openai를 입력 후 점을 누른 후 자동완성된 펑션 리스트를 확인해보니 Completion은 보이지 않았습니다.

 

그래서 버전 문제라 판단이 들어서 구글링을 해보니 파이썬 3.10 버전 이상을 설치해야 최신 openai 라이브러리를 받을 수 있다는 말을 하는데 또 어떤 분은 3.7.x 에서 설치하여 진행하는 것을 보니 파이썬 문제로 보이진 않았습니다.

 

 

1차 시도, 삭제 및 재설치

pip uninstall openai

(gpt) D:\gpt>pip uninstall openai
Found existing installation: openai 0.28.0
Uninstalling openai-0.28.0:
  Would remove:
    d:\anaconda3\envs\gpt\lib\site-packages\openai-0.28.0.dist-info\*
    d:\anaconda3\envs\gpt\lib\site-packages\openai\*
    d:\anaconda3\envs\gpt\scripts\openai.exe
Proceed (Y/n)? y
  Successfully uninstalled openai-0.28.0

 

pip install openai

(gpt) D:\gpt>pip install openai
Collecting openai
  Using cached openai-0.28.0-py3-none-any.whl (76 kB)
Requirement already satisfied: tqdm in d:\anaconda3\envs\gpt\lib\site-packages (from openai) (4.65.0)
Requirement already satisfied: requests>=2.20 in d:\anaconda3\envs\gpt\lib\site-packages (from openai) (2.29.0)
Requirement already satisfied: aiohttp in d:\anaconda3\envs\gpt\lib\site-packages (from openai) (3.8.4)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in d:\anaconda3\envs\gpt\lib\site-packages (from requests>=2.20->openai) (1.26.15)
Requirement already satisfied: charset-normalizer<4,>=2 in d:\anaconda3\envs\gpt\lib\site-packages (from requests>=2.20->openai) (3.1.0)
Requirement already satisfied: idna<4,>=2.5 in d:\anaconda3\envs\gpt\lib\site-packages (from requests>=2.20->openai) (3.4)
Requirement already satisfied: certifi>=2017.4.17 in d:\anaconda3\envs\gpt\lib\site-packages (from requests>=2.20->openai) (2022.12.7)
Requirement already satisfied: yarl<2.0,>=1.0 in d:\anaconda3\envs\gpt\lib\site-packages (from aiohttp->openai) (1.8.2)
Requirement already satisfied: frozenlist>=1.1.1 in d:\anaconda3\envs\gpt\lib\site-packages (from aiohttp->openai) (1.3.3)
Requirement already satisfied: attrs>=17.3.0 in d:\anaconda3\envs\gpt\lib\site-packages (from aiohttp->openai) (22.2.0)
Requirement already satisfied: aiosignal>=1.1.2 in d:\anaconda3\envs\gpt\lib\site-packages (from aiohttp->openai) (1.3.1)
Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in d:\anaconda3\envs\gpt\lib\site-packages (from aiohttp->openai) (4.0.2)
Requirement already satisfied: multidict<7.0,>=4.5 in d:\anaconda3\envs\gpt\lib\site-packages (from aiohttp->openai) (6.0.4)
Requirement already satisfied: colorama in d:\anaconda3\envs\gpt\lib\site-packages (from tqdm->openai) (0.4.6)
Installing collected packages: openai
Successfully installed openai-0.28.0

 

그러나 위와 같이 하여도 전혀 아무런 반응없이 그대로 이길래 하다가 해당 스레드 관련 댓글들을 계속 읽고 있었는데...

 

 

헉, 순간 섬뜩한 댓글을 보고 말았습니다.

 

파일명 문제를 얘기하는 유저

 

이 말을 본 순간 작성한 파일을 보니... 제가 테스트로 만든 파일 명이 openai.py였던 것이었죠. 그래서 파일명을 변경하니 변경을 하니 이제는 다른 문제에 직면하였지만, 다음과 같이 정의되어 있지 않는 펑션이다라는 메세지를 사라졌습니다.

 

결국 문제는 제가 openai를 재정의해버려서 제가 만든 파일명의 내용을 제가 호출하고 있던 것이었습니다. 그러니 당연히 자동완성이 되지 않았던 것이죠. 진짜 너무 황당한 실수를 한 것 같네요. 테스트를 하실 때 openai.py로 파일명을 만들지 않길 바랍니다.;;

 

혹시나 저랑 다른 문제이신 분들은 아래의 수많은 사람들이 시행착오중인 스레드가 있으니 확인 바랍니다.

 

 

AttributeError: module ‘openai’ has no attribute ‘ChatCompletion’

https://community.openai.com/t/attributeerror-module-openai-has-no-attribute-chatcompletion/81490/26

 

AttributeError: module 'openai' has no attribute 'ChatCompletion'

Dude I dont know how or why that worked but hell yeah it did, just changed my main file from openai.py to _openai.py, ran it and holy * it ran.

community.openai.com

 

반응형