[문제점]
- 이전 ChatGPT 활용 서적 혹은 강의를 통해 샘플코드 작성 후 시간이 지난 뒤, openai 패키지를 높은 버전 (1.0.0)으로 설치했을 때 발생
- 유사하게 코드 수정 없이 openai 패키지 버전 업데이트 이후 발생
[현상]
You tried to access openai.ChatCompletion, but this is no longer supported in openai>=1.0.0 - see the README at https://github.com/openai/openai-python for the API.
version, e.g. `pip install openai==0.28`
A detailed migration guide is available here: https://github.com/openai/openai-python/discussions/742
위와 같은 에러가 뜨면서, 실행되지 않는다.
[해결방안]
- 아래 Migration guide 내 Sample code를 보며, 수정한다.
반응형
[수정 예시]
본인이 수정한 예시를 일부 공유한다.
너무 간단한 ChatGPT API 이기 때문에 간단히 적용 가능하리라고 판단된다.
반응형
1. Key import 방식 변환
<Before>
import openai
openai.api_key = settings.OPENAI_API_KEY
<After>
from openai import OpenAI
client = OpenAI(
api_key = settings.OPENAI_API_KEY,
)
2. Response로 message 받아오는 법
이 부분을 변경하지 않으면 다음과 같은 에러가 뜰 수 있다.
- 'ChatCompletion' object is not subscriptable
<Before>
response = openai.ChatCompletion.create(
model = "gpt-3.5-turbo",
messages=message
)
answer = response['choices'][0]['message']['content']
<After>
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=message
)
answer = response.choices[0].message.content
반응형
3. 변경된 Completion 뜯어 보기 (참고)
Migration guide만 보고 돌렸을 때 아래와 같은 에러가 뜰 수 있다.
- 'Choice' object has no attribute 'text'
이는 변경된 Completion이 return하는 대로 (기존에 사용하던 방식 대로) 해야하기 때문이다.
추가적으로, 위의 API로 출력된 response는 다음과 같다.
ChatCompletion(id='chatcmpl-8imqAFw1XHNvfeLrHCzMptJFZidRY',
choices=[
Choice(finish_reason='stop', index=0, logprobs=None,
message=ChatCompletionMessage(content="내용", role='assistant', function_call=None, tool_calls=None))],
created=1705684866,
model='gpt-3.5-turbo-0613',
object='chat.completion',
system_fingerprint=None,
usage=CompletionUsage(completion_tokens=972, prompt_tokens=1013, total_tokens=1985))
따라서, response를 활용하기 위해서는 choices[0].message.content를 활용해야한다.
이 외 토큰들도 제대로 리턴되는 것을 볼 수 있다.