Sense Wide
article thumbnail

[문제점]

  • 이전 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를 보며, 수정한다.

 

반응형

 

 

v1.0.0 Migration Guide · openai/openai-python · Discussion #742

We have released a new major version of our SDK, and we recommend upgrading promptly. It's a total rewrite of the library, so many things have changed, but we've made upgrading easy with a code mig...

github.com

 

[수정 예시]

본인이 수정한 예시를 일부 공유한다.
너무 간단한 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를 활용해야한다.
이 외 토큰들도 제대로 리턴되는 것을 볼 수 있다.

 

profile

Sense Wide

@June_Kim

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!