[Python/OpenAI] chatGPT API json 형태로 응답받기 (response_format 사용법)

안녕하세요, OpenAI의 ChatGPT가 등장한 후, OpenAI에서는 끊임없이 chatGPT를 업그레이드 하고 있습니다. 오늘은 OpenAI의 chatGPT API를 사용할 때 응답값을 json 형태로 고정시켜서 받는 방법에 대해 알아보겠습니다. 23년 11월에 OpenAI에서 업데이트 한 response_format 파라미터 활용방법에 대한 내용입니다.


1. OpenAI API 기본 설정하기

OpenAI API를 사용하려면 먼저 API 키를 발급받아야 합니다. OpenAI 웹사이트에서 가입한 후, API Keys 카테고리에서 Create new secret key를 눌러 API 키를 발급받으실 수 있어요. 발급받은 키는 과금 방지를 위해 다른 사람들에게 공개하면 안돼요! 발급 직후 받은 키를 잘 복사해두세요.

OpenAI API 키 발급
OpenAI API 키 발급

그 후, 필요한 라이브러리를 설치해 줍니다.

Bash
pip install openai

2. Request 작성하기

간단한 예제를 통해 OpenAI API에 요청을 보내보겠습니다. 직전 단계에서 발급받은 API 키를 사용합니다. 저는 번역 프로그램을 예제로 코드를 적어보았어요. 사용자가 어떤 언어로 번역을 요청했을 때,

  1. 번역 전 언어 original_language
  2. 번역 후 언어 translated_language
  3. 번역 내용 translated_content

위의 세 가지 element를 갖는 json형태로 응답을 받는 예제입니다.

번역 챗봇 예제 코드

Python
from openai import OpenAI

# client 객체 생성하기
client = OpenAI(api_key = "YOUR API KEY") # 발급받은 API 키 값을 넣어주세요

#응답 받기
response = client.chat.completions.create(
    model = "gpt-4-turbo-preview",
    messages =[
        {
            "role":"system",
            "content":"You are an excellent translator. Response in json format with 'original_language', 'translated_language', 'translated_content'."
        },
        {
            "role":"user",
            "content":"How can I say hello in France?"
        }
    ],
    temperature=0,
    max_tokens = 1000,
    top_p = 1,
    frequency_penalty = 0,
    presence_penalty = 0,
    
    # response_format 지정하기
    response_format = {"type":"json_object"}
)

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

system에 번역가의 역할을 하라고 알려주었습니다. 그리고 json 형태로 응답하되, ‘original_language‘, ‘translated_language‘, ‘translated_content‘ 세 가지의 element를 갖도록 지시하였어요.
그리고 response_format = {"type":"json_object"} 조건을 통해 json 형태로만 응답하도록 지정해줍니다. 무조건 텍스트 형태로 응답 받고 싶으시다면, "json_object" 대신 "text"를 써주시면 됩니다.

예제 코드 응답 결과

응답 결과

위와 같이 json 형태의 응답을 받을 수 있어요. 하지만 실제 json 객체가 아닌, json 형태의 string 이에요. string type을 json 객체로 변환하는 것도 어렵지 않습니다.

string → json 객체로 변환하기

아래와 같은 코드를 실행하여 문자열을 json 객체로 load한 후, 출력할 수 있습니다.

Python
import json

response_content = response.choices[0].message.content
original_language = json.loads(response_content)["original_language"]
translated_language = json.loads(response_content)["translated_language"]
translated_content = json.loads(response_content)["translated_content"]

print(original_language, translated_language, translated_content)
json 변환 후 출력 결과
출력 결과

글을 마치며

이번 포스팅에서는 OpenAI의 chatGPT API를 활용하여, 사용자가 원하는 형태의 응답, 특히 json 형태로 응답을 받는 방법에 대해 알아보았습니다. 또한, 우리가 직접 예제를 통해 확인한 것처럼, json 형태의 문자열을 실제 json 객체로 변환하는 과정 또한 매우 간단하며, 이를 통해 얻은 데이터를 다양한 방식으로 활용할 수 있습니다.

현재 OpenAI는 chatGPT의 기능을 지속적으로 발전시키고 있으며, 이러한 발전은 우리가 더 많은 가능성을 탐색하고, 더욱 다양한 방법으로 AI를 활용할 수 있게 해줍니다. 앞으로도 OpenAI의 새로운 업데이트와 기능들을 주목하며, 이를 우리의 프로젝트에 어떻게 적용할 수 있을지 고민해 보는 것이 중요할 것 같네요.

읽어 주셔서 감사합니다 😀

Leave a Comment