본문 바로가기
카테고리 없음

ChatGPT API 연동 (파이썬) 방법 - 텍스트 응답 처리 방식 2가지

by 스마트파베르 2024. 3. 9.
반응형

ㅇ OpenAI 가입하고, API key를 발급받는다.

 - 아래 사이트에서 +Create new secret key를 눌러서 키 발급 받음

   : https://platform.openai.com/api-keys

 

ㅇ  openAI 에서 API 사용 레퍼런스를 제공한다. 기본적인 text를 만들어 본다

    - chat API 사용 :   https://platform.openai.com/docs/api-reference/chat/create

 

ㅇ 모델 선택은 아래 URL에서 정보를 참고하여 선택한다. 

   - 모델 설정 정보:  https://platform.openai.com/docs/models 

   -  저는 GPT4 유료버전을 사용하고 있어서  "model": "gpt-4-0125-preview",  을 선택

 

ㅇ 가입을 해도 크레딧이 없으면 코드가 실행되지 않으니, 아래 billing에서 5$ ~ 10$ 정도만 충전하여 우선 사용해본다

   - https://platform.openai.com/account/billing/overview

    -  (주의) 크레딧을 많이 사용할 수 있으니, "max_tokens":50  정도로 설정사여  테스트 개발 할때는 작게 사용

 

<방식 1 코드>  

  ㅇ requests 라이브러리를 사용하여 직접 HTTP POST 요청

import requests

def get_gpt4_chat_response(prompt_text):
    api_key = "발급 받은 키"  # 여기에 OpenAI API 키를 입력하세요.

    headers = {
        "Authorization": f"Bearer {api_key}"
    }
    data = {
        "model": "gpt-4-0125-preview",  # 모델 이름을  선택하세요.
        "messages": [{"role": "user", "content": prompt_text}],
        "max_tokens":50, # 테스트 개발 할때는 작게 설정
        #"n":2,
    }

    response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=data)
    if response.status_code == 200:
        return response.json()["choices"][0]["message"]["content"].strip()
    else:
        # 오류 처리
        return f"Error: {response.text}"

# 예제 사용
prompt = "이순신 장군은  노량해전에서 어떤 전술을 사용하였는가?"
response_text = get_gpt4_chat_response(prompt)
print(response_text)

 

ㅇ API 응답 샘플

이순신 장군은 노량 해전(1598년)에서 주로 핵심적인 전술로 '학익진(鶴翼陣)'을 사용했습니다. 학익진은 마치 날개를 편 학처럼 배를 배열하여 적에 대응하는 전술로, 이 전

 

<방식 2 코드>  
    ㅇ openai  라이브러리의 client.chat.completions.create 메서드 사용

from openai import OpenAI

client = OpenAI(api_key = " "발급 받은 키")  # 여기에 OpenAI API 키를 입력하세요. "

completion = client.chat.completions.create(
  model="gpt-4-0125-preview",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": prompt},        #role 필드 : ['system', 'assistant', 'user', 'function'] 중 하나  
  ],
  temperature=0.7,
  max_tokens=50,
  n=2,
  stop=None  
)

prompt = "이순신 장군은 노량 해전에서 어떤 전술을 사용하였는가?"

response_text = completion.choices[0].message.content
print(response_text)

 

ㅇ API 응답 샘플

이순신 장군은 1598년 노량 해전에서 주력 전술로 '학익진(鶴翼陣)'을 사용하

 

반응형