반응형
langchain 설치 (pip install langchain) 중에 아래와 같은 에러 발생
 
Error Message:
 
In file included from src/greenlet/greenlet.cpp:9:      /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/cstdlib:135:9: error: no member named 'at_quick_exit' in the global namespace      using ::at_quick_exit _LIBCPP_USING_IF_EXISTS;            ~~^      /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/cstdlib:136:9: error: no member named 'quick_exit' in the global namespace      using ::quick_exit _LIBCPP_USING_IF_EXISTS;            ~~^      2 errors generated.      error: command '/usr/bin/clang' failed with exit code 1      [end of output]    note: This error originates from a subprocess, and is likely not a problem with pip.  ERROR: Failed building wheel for greenletFailed to build greenletERROR: Could not build wheels for greenlet, which is required to install pyproject.toml-based projects(venv) $ 
 
에러 메시지의 이미지

 

에러 내용을 자세히 보면 /usr/bin/clang 과 관련해서 문제가 있다고 나와서 인터넷 검색해보니 아래와 같은 페이지가 나왔음.

How to fix Error: command ‘/usr/bin/clang’ failed with exit code 1?

 
여기서 권장하는 대로 여러가지를 upgrade하고 나니 잘 됬음.
 
1,2,3 brew install openssl re2
 
이렇게 업그레이드 하고 다시 install langchain을 하니 grpcio error가 발생했음.
그래서 잘 돌아가는 가상환경에서 grpcio의 버전을 확인해서 설치를 했으나
 
실패
 
다시 그냥 langchain을 설치하려하니 이번에는 아래 같은 에러 발생
 
  note: This error originates from a subprocess, and is likely not a problem with pip.  ERROR: Failed building wheel for greenletFailed to build greenletERROR: Could not build wheels for greenlet, which is required to install pyproject.toml-based projects
 
내용을 뜯어 보니 greenlet이 문제 인 것 같아서..
다시 잘 돌아가는 가상 환경에서 greenlet이 있는지 찾아보고 같은 버전으로 설치
 
이런 젠장, 그래도 안되서 인터넷을 찾아보니 아래 명령을 실행하라고...
 
pip install --only-binary :all: greenlet
 
이렇게 하는 이유를 아래와 같이 설명하고 있는데..
 
Python packages are often distributed as "wheels" (.whl files), which are pre-compiled binary packages. Try installing "greenlet" and "Flask-SQLAlchemy" using wheels instead of source distribution`
 
이말을 풀어보면, 소스 배포형태에서 wheels 를 사용해서 설치하지말고 pre-compiled된 바이너리 패키지를 이용해서 설치하니까 잘 되더라 라는 의미임.
 
음.... 그러니까 소스를 가져다가 컴파일해서 쓰러면 컴피일과 관련 라이브러리, 경로 환경 등 여러가지가 맞아야 설치가 되는 데....바이너리 패키지를 설치하면 이런 복잡한 것 필요없이 쉽게 설치가 되더라 라는 의미로 이해됨.
 
이러고 나서 langchain을 설치하니까 잘 설치됨.
 
즉, 아래 명령 실행 후 langchain을 설치 했음.
pip install --only-binary :all: greenlet
 
 
 
 
 
반응형
반응형

 

Cannot import name OpenAI from openai 그리고 langchain 설치

 

 

Error Message:

Cannot import name OpenAI from openai

 

잘 돌던 OpenAI API 프로그램인데 갑자기 에러를 발생 시킴

Cannot import name OpenAI from openai

 

원인:

써치 결과 openai 버전차이로 발생한 에러임. 

잘 돌아가는 가상환경에서의 openai 버전을 확인해보니 1.3.6

안돌아가는 가상환경의 openai 버전을 확인해보니 0.27.0

인터넷 검색결과 1.2.0 이상이어야 에러가 안난다고함.

 

해결:

그래서 안돌아가는 가상환경에서 아래와 같이 업그레이드 실행하여 해결

pip install --upgrade openai==1.2.0

 

OpenAI API를 사용하다보니 많은 에러가 발생한다. 원인은 주로 버전간 차이 모델별 제공 파라메터 차이인 것 같음.

 

 

 

반응형
반응형

OpenAI에서 제공하는 API를 활용하여 다양한 기능을 사용하기 위한 기초 내용으로, 프로그램에서 OpenAI API를 사용하는 기초 방법에 대해서 설명합니다.
이 내용을 습득하시고 나면 Python 프로그램에서 OpenAI API를 호출하여 사용할 수 있습니다. 이것은 향후 조금만더 공부해 나간다면 개별 프로그램에서도 OpenAI의 ChatGPT와 같은 기능을 사용 할 수 있게 개발할 수 있습니다.
학습의 많은 내용은 OpenAI의 Documentation 에 있는 Quickstart의 내용을 참고하였습니다. https://platform.openai.com/docs/quickstart?context=python
(참고로 아래 내용과 함께, API Key만들기, API 지불방법 설정 등의 내용을 포함한 유투브 영상입니다.)
https://www.youtube.com/watch?v=HTzFYEr4Ai8)
 
시작해 보겠습니다.
 
좀더 구체적으로 이 글을 통해서 다음과 같은 내용을 배울 수 있습니다.

  • 개발 환경을 어떻게 설정하는지
  • 최신 SDKs(소프트웨어 개발 킷)을 설치하는지
  • OpenAI API에 대한 기본적인 개념
  • API 요청을 어떻게 보내는지

 
진행에 앞서 필요한 것이 있습니다. 그것은 OpenAI 계정API Key 입니다. 링크를 클릭하셔서 만드실 수 있습니다. 그리고 파이참, 비주얼 스튜디오 코드 등 통합개발환경(IDE: integrated development environment) 프로그램을 설치하시면 개발하기에 더 편하십니다.
이제 부터 파이썬 환경에서의 내용을 기준으로 설명하겠습니다.

전체적인 절차 단계는 아래와 같습니다.
1. 파이썬 설정
2. API Key 설정
3.  API 요청 테스트
즉, 프로그래밍 언어 소프트웨어인 파이썬을 설치하고, API 호출에 필요한 API Key를 설정하고, 마지막으로 프로그램에서 API를 요청해 봅니다.
 

1. 파이썬 설정

파이썬 설정을 위해서는 파이썬 다운로드 및 설치, (선택적으로) 가상환경 설치, 그리고 OpenAI 라이브러리 설치가 필요합니다.
 
프로그램 환경에서 API를 이용하려한 것이니까 당연하게도 프로그래밍 언어의 설치가 필요합니다.  파이썬 설치는 파이썬 다운로드 페이지에 접속하셔서 사용중인 OS(Windows, MacOS, Unix)에 맞는 파이썬 설치 파일을 다운로드 받아서 설치하시면 됩니다.
선택적이긴 하지만 가상환경을 설치할 수 있습니다. 파이썬은 여러 라이브러리를 다운로드 받아 사용하는데 이러한 라이브러리 간의 사용 통일성과 프로젝트간의 간섭 방지를 위해서 관리가 필요합니다. 이러한 환경을 프로젝트 별로 관리할 수 있도록 해주는, 가상환경이라는 것을 만들 수 있습니다. 
 
먼저 프로젝트 폴더를 하나 만들고 터미널이나 CMD명령창에서 프로젝트 폴더로 이동 한 뒤에, 다음의 명령어로 가상환경을 만들 수 있습니다.(주의: 이후부터는 프로젝트 폴더의 위치에서 아래의 명령어 들을 실행하세요)

python -m venv openai-env

이 내용을 설명해보면 파이썬 프로그램의 venv 모듈을 실행시켜서 openai-env 라는 가상환경을 만들라는 명령입니다.
이렇게 가상환경을 만들고 나서 가상환경으로 들어간 뒤 라이브러리를 설치하게 되면, 설치된 라이브러리 들은 들어간 가상환경에서만 사용할 수 있게 됩니다.  Windows에서 가상환경으로 들어가는 명령어는 아래와 같습니다.

openai-env\Scripts\activate

Unix나 MacOS에서의 명령어는 아래와 같습니다. 터미널에서 아래를 실행시키면 됩니다.

source openai-env/bin/activate

가상환경으로 들어가게 되면 터미널/명령창의 프롬프트가 바뀌게 됩니다. 보통 환경명이 나옵니다. 예를 들면 (openai-env) $ 이렇게 됩니다.
 
OpenAI 라이브러리 설치는 매우 간단합니다. 앞에서 만든 가상환경으로 들어간뒤에 아래의 명령어를 실행시키면 됩니다.

pip install --upgrade openai

 
 
 

2. API Key 설정

API Key는 매우 중요합니다. 왜냐하면 돈과 연결되어 있어서지요. 따라서 다른 사람이 모르도록 보안에 신경써야 합니다. 프로그램에서 사용하면서도 노출되지 않도록 설정하는 방법은 다음과 같이 2가지가 있습니다. 첫번째는 환경변수에 설정해주는 방법이고 두번째는 프로젝트 폴더에 .env 파일로 설정하는 방법입니다.
 
첫번째 환경변수에 설정하는 방법은 환경변수 OPENAI_API_KEY라는 변수에 발급받은 Key 값을 설정해 놓으면 됩니다. MaC 에서는 아래와 같이 터미널에 입력하면 됩니다. 

export OPENAI_API_KEY='your-api-key-here'

Windows에서는 아래와 같이 명령창에 입력하면 됩니다.

setx OPENAI_API_KEY "your-api-key-here"

환경변수는 (.bash_profile 또는 .zshrc 파일에) 별도로 설정해 주지 않으면 터미널 종료 시 사라지게됩니다. 따라서 계속적인 사용을 위해서는 Profile 파일에 추가로 설정이 필요합니다. 
 
두번째는 '.env' 파일에 설정하는 방법입니다. 하나의 프로젝트에서 사용 할 수 있도록 설정하는 방법입니다. 프로젝트 폴터 안에서 .env 라는 이름의 파일을 새로 만듭니다. 그리고 그 파일의 내용을 아래와 같이 입력하세요.

# Once you add your API key below, make sure to not share it with anyone! The API key should remain private.
OPENAI_API_KEY=abc123

abc123의 위치에 발급받은 OpenAI API Key를 입력하시면 됩니다.
이렇게 입력하고 저장을 하시면 프로그램시 아래와 같은 내용으로 Key를 불러올 수 있습니다.

from openai import OpenAI

client = OpenAI()
# defaults to getting the key using os.environ.get("OPENAI_API_KEY")
# if you saved the key under a different environment variable name, you can do something like:
# client = OpenAI(
#   api_key=os.environ.get("CUSTOM_ENV_NAME"),
# )

이렇게 하면 코딩 내용에서는 API Key 내용이 없기 때문에 보안에 유리합니다.
 
 

3.  API 요청 테스트

자, 이렇게 파이썬 준비도 끝나고 API Key설정도 끝났으면 실제로 사용해볼 차례 입니다. 위에서 만든 프로젝트 폴더에 openai-test.py라는 이름의 파일을 새로 만들어주세요. 내용을 아래와 같이 입력하세요.

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair."},
    {"role": "user", "content": "Compose a poem that explains the concept of recursion in programming."}
  ]
)

print(completion.choices[0].message)

프로그램의 내용을 간단히 설명 드리면 OpenAI 라이브러리의 API를 이용하여 문장완성을 요청합니다. 모델을 gpt-3.5-turbo를 사용하고, 전달 메시지로, API 또는 모델이 마치 프로그래밍 컨셉을 설명할 수 있는 능력이 있는 시 작성 도우미라고 설정하고(system), recursion의 컨셉을 설명하는 시를 한편 지어보라(user)는 명령 입니다.
위의 내용을 입력후 저장한뒤에, 터미널/명령창 에서 아래와 같이 실행시키면 프로그램이 실행하게 됩니다.

python openai-test.py

프로그램이 잘 실행된다면 아래와 같이 텍트스 문장이 표시될 껍니다. (아, 저는 파일이름을 openai_api_test.py로 했네요.)

 
 

마무리

이렇게 해서 OpenAI API와 관련해서 기초를 배워 봤습니다. 프로그래밍 환경으로 파이썬을 설정했고, API Key를 코딩할때 쓸 수 있도록 설정했습니다. 마지막으로는 간단한 내용의 시를 작성하는 명령을 OpenAI API를 이용하여 프로그램에서 실행해 보았습니다.
OpenAI 라이브러리에는 엄청나게 많은 기능을 제공하고 있습니다. 어플리케이션 프로그램에서 ChatGPT와 같은 서비스를 할 있게 만들 수 있습니다.  프로그램이 가능하기 때문에 ChatGPT의 채팅 창에서 하는 것 보다 더 복잡하고 정교하고 서비스에 필요한 질문과 답변을 할 수 있습니다.
OpenAI API를 이해하는데 있어서 여러분에게 도움이 되셨길 바랍니다.
감사합니다.
 
 
 

반응형

+ Recent posts