Chat GPT API 사용

Cloud_ Ghost·2024년 7월 3일
1

AI

목록 보기
36/37

출처 : https://blog.firstpenguine.school/77
올려주신 내용을 따라 가다가 openai==0.28 때문에 에러가 발생해서 작성하는 글 입니다.


(발생한 에러 사진)

환경

Pycharm을 사용합니다!
파이탐의 터미널에 일단 pip install jupyter lab을 쳐서 주피터 랩을 다운로드 합니다.

그 다음 터미널에 다시 jupyter lab을 쳐서 주피터 환경으로 들어옵니다.

이제 주피터에서 새로운 파일을 생성하고 시작하겠습니다!

!pip install openai를 통해서 openai 환경을 install 합니다.

그 다음

import openai

import os

openai.api_key = os.environ.get("OPENAI_API_KEY")

를 입력해줍니다.

이 때 OPENAI_API_KEY는 환경변수에 입력해놓아야 됩니다!

아래의 사진은 stream형식으로 결과가 나오도록 만드는 코드입니다.

print되도록

from openai import OpenAI

client = OpenAI() 

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    response_format = { "type": "json_object" },
    messages=[
        {"role": "system", "content" : "당신은 굉장히 훌륭한 코딩 작성 도우미이자 전문가입니다, 그리고 output을 JSON file형식으로 내보낼 수 있습니다."},
        {"role": "user", "content": "저는 파이썬으로 계산기를 만들려고 합니다. 어떻게 파이썬 코드를 작성해야 될까요?"},
        {"role": "assistant", "content" : "Python code print"}
    ]
)

        
test = response.choices[0].message.content
print(test)

결과

뭔가 상당히 아쉬운 결과입니다.
다시 한 번 프롬프트를 작성해보겠습니다.

from openai import OpenAI

client = OpenAI() 

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    # response_format = { "type": "json_object" },
    messages=[
        {"role": "system", "content" : "당신은 굉장히 훌륭한 코딩 작성 도우미이자 전문가입니다. 굉장히 자세하게 파이썬 코드를 작성하고 이를 쉽게 이해 가능하도록 만들어줍니다."},
        {"role": "user", "content": "저는 파이썬으로 계산기를 만들려고 합니다. 어떻게 파이썬 코드를 작성해야 될까요? 자세하게 파이썬 코드를 작성해주세요. 제가 vscode에 당신이 작성한 파이썬 코드를 붙여넣었을 때 바로 작동이 가능하도록 코드를 작성해주세요."},
        {"role": "assistant", "content" : "Python code print"}
    ]
)

        
test = response.choices[0].message.content
print(test)

이번 코드의 특징은 일단 json-format을 주석 처리해서 작동되지 않도록 했습니다.
그리고 조금 더 자세하게 질문을 꾸몄습니다.

결과

아래는 답변 내용입니다.

물론이죠! 아래는 간단한 계산기를 만들기 위한 파이썬 코드입니다. 이 코드를 vscode나 다른 편집기에 붙여넣고 실행하면 됩니다.

# 사칙연산 계산기 프로그램

# 더하기 함수
def add(x, y):
    return x + y

# 빼기 함수
def subtract(x, y):
    return x - y

# 곱하기 함수
def multiply(x, y):
    return x * y

# 나누기 함수
def divide(x, y):
    if y == 0:
        return "0으로 나눌 수 없습니다."
    return x / y

print("사칙연산 계산기 프로그램")
num1 = float(input("첫 번째 숫자를 입력하세요: "))
num2 = float(input("두 번째 숫자를 입력하세요: ")

print("1. 더하기")
print("2. 빼기")
print("3. 곱하기")
print("4. 나누기")

choice = input("연산을 선택하세요 (1/2/3/4): ")

if choice == '1':
    print("결과: ", add(num1, num2))
elif choice == '2':
    print("결과: ", subtract(num1, num2))
elif choice == '3':
    print("결과: ", multiply(num1, num2))
elif choice == '4':
    print("결과: ", divide(num1, num2))
else:
    print("잘못된 입력입니다.")
    
이 코드는 사용자에게 첫 번째 숫자와 두 번째 숫자를 입력받고, 사용자가 선택한 연산에 따라 해당 연산을 수행하는 기본적인 계산기 프로그램입니다. 실행하고 계산결과를 확인해보세요!    

생각보다 자세하게 잘 작성해준것을 확인하실 수 있습니다.
물론 아주 간단한 계산기이지만 그래도 작성이 잘 되는것은 굉장히 고무적입니다!

Streaming 형식으로 나오도록

from openai import OpenAI

client = OpenAI()

stream = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Say this is a test"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")

출처 : https://platform.openai.com/docs/api-reference/streaming

openai에서 제공해주는 api-reference를 살펴보면 코드를 사용할 때 변경된 점을 확인할 수 있습니다.
위 코드로 작성시 실제 gpt에서 결과가 나오는것처럼 타자기로 치듯이 결과가 나오게 됩니다.

한국어도 기가 막히게 잘 알아듣고 제대로 정답을 뱉어냅니다.

이 쯤에서 두 개의 질문을 던졌는데 얼마나 payment가 증가했는가 확인해보러 달려갔는데 이 정도 소모면 훌륭한거 같습니다.

System message

  • system message는 항상 맨 첫 줄에 위치해야 됩니다.
from openai import OpenAI

client = OpenAI() 

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    # response_format = { "type": "json_object" },
    messages=[
        {"role": "system", "content" : "당신은 한국의 경상도 지역의 사투리를 자유롭게 구사하는 30년 경상도 토박이 아저씨입니다."},
        {"role": "user", "content": "경상도 남해의 점심으로 먹기 좋은 메뉴 3가지를 추천해줘."},
        # {"role": "assistant", "content" : "Python code print"}
    ]
)

        
test = response.choices[0].message.content
print(test)

와, 어이쿠~ 남해에서 먹을 만한 건 많다 싶어서 고르기가 어렵네. 어쩌다 몽고 3가지를 골라보자니~

1. 고등어구이: 남해안이라서 신선한 고등어로 구워낸 고등어구이는 찰떡같이 먹어도 고소하고 맛있단말야. 고등어 몸에 밥 넣어말아보자.
2. 가자미조림: 남해는 가자미가 유명하지. 가자미조림은 고소한 맛과 쫄깃한 식감이 일품이니까 꼭 한 번 드셔보게.
3. 해물부침개: 바다에서 채취한 싱싱한 해물을 부침가루로 녹여만든 해물부침개는 바삭바삭하면서도 쫄깃쫄깃하다. 찍어먹는 양념소스와 함께 먹으면 입안 가득 행복한 맛이 퍼진다. 

이렇게 몽땅 맛나사노, 남해에 가서 한번 드셔보고 싶나? 건강한 바다의 맛이 그대로 느껴질 거로구마.

흠...
아직 사투리는 구사하기에 어려운가 봅니다.
System을 통해서 GPT에게 역할을 부여할 수 있습니다.

profile
도망쳐서 도착한 곳에 낙원이란 있을 수 없는 거야.

0개의 댓글