티스토리 뷰

GPT

Chat Completions API

느린 개미 2023. 6. 29. 10:38
반응형

OpenAPI 의 chat-completions-api  부분을 정리해보았습니다. 

 

 

Chat 모델은 input 으로 a list of messages 를 받고, model-generated message 를 출력합니다. 
비록 대화 형식이 multi-turn 대화를 쉽게 하기 위해 설계되었지만, 어떤 대화 없이도 single-turn tasks 를 하기에도 유용합니다. (Zero-shot learner 를 뜻하는 듯?)

API 사용 예

import openai

openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)


주요 입력은 Messages parameter 이다. 

Messages 는 message objects 의 배열이며, 

  1. 각 object 는 role("system", "user", or "assistant")) 과 content를 가진다. 

    일반적으로 대화는 먼저 system 메시지로 포맷된 후 user 와 assistant 메시지를 번갈아 표시합니다.
    (주로 user 는 사용자 입력이고, assistant 는 사용자 입력에 대한 openai 의 출력이다. )

    *  system 메시지
      :전체 대화에서 openai 의 응답을 설정하는데 도움을 줍니다. (예를 들어 넌 물건 사는데 도움을 주는 챗봇이야, 내 예의 바른 개인 비서야 등등) 이는 선택 사항이며,  system 메시지가 없다면, "You are a helpful assistant." 와 같은 일반적인 메세지를 사용하는 것과 유사할 수 있습니다.
     
     *  user 메시지
      : 사용자의 질문이나 설명입니다. 

     *  assistant 메시지
      : 이전 assistant 메시지(openai 응답)을 저장하지만, 사용자가 원하는 동작의 예를 제공하기 위해 작성할 수도 있습니다. 


    openai 로 요청을 보낼 때 대화 기록을 포함하는 것이 중요하다. 

    위의 예를 보면 openai 와 서로 주고받은 내용이 모두 포함되어 있다. 왜냐하면 openai 는 과거 요청을 기억하지 않기 때문입니다. "Where was it played?" 만 사용자가 보낸다면,  올바른 응답을 얻을 수 없습니다. 
    만약 대화가 모델의 토큰 한도 내에 들어갈 수 없는 경우, 어떤 식으로든 대화를 단축해야합니다. 


    API 응답 예
{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "The 2020 World Series was played in Texas at Globe Life Field in Arlington.",
        "role": "assistant"
      }
    }
  ],
  "created": 1677664795,
  "id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
  "model": "gpt-3.5-turbo-0613",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 17,
    "prompt_tokens": 57,
    "total_tokens": 74
  }
}



파이썬의 경우, 응답을 아래 코드로 가지고 올 수 있다. 

response['choices'][0]['message']['content']





반응형

'GPT' 카테고리의 다른 글

ChatGPT 관련 App개발 주저리주저리  (0) 2023.06.14