ChatGPT의 추가적인 설정을 할 수 있다.
ChatGPT Playground를 활용하자
https://platform.openai.com/playground 접속 후 회원가입을 한다.
https://platform.openai.com/account/usage 화면으로 이동하면
Free trial usage를 확인할 수 있다.
처음 가입 시 5달러가 제공되며 3개월까지 이용 가능하다. (Upgrade시 매달 20달러 구독 결제)
Mode는 4가지가 존재한다.
Edit, Insert, Chat, Complete
<Edit Mode>
<Insert Mode>
<Chat Mode>
<Complete Mode>
Complete Mode는 우리가 일반적으로 사용하는 ChatGPT처럼 자유롭게 요청해서 생성할 수 있는 모드이다.
다음은 Model 선택인데 Model마다 특징이 있다. 가장 많이 사용하는 Model이 text-davinci-003이다.
문장을 생성하는데 최대 4000 tokens까지 이용 가능하다.
보통 1000 tokens에 750 word를 이용할 수 있다고 하니 3000 word까지 작성이 가능한 것이다.
davinci Model은 1000 tokens에 0.02 달러에 이용할 수 있다. (대략 27원 정도)
Temperature는 1에 가까울 수록 크리에이터한 창의적인 문장을 만들고 0에 가까울 수록 딱딱한 기계적인 느낌의 글로
생성된다. 보통 0.6 ~ 0.7 정도에 놓고 사용하는데 필요에 따라 조정하면 된다.
Maximun length는 앞서 설명한 Token 길이를 최대 4000까지 사용할 수 있는데 4000을 놓고 사용한다고 해도
ChatGPT가 모두 사용하지는 않는다. 보통 1000 정도를 사용한다고 보면 된다.
Top P는 독창성과 조금 다르게 다향성을 나타내는 값인데 다양한 주제를 갖고 작성하느냐인데 0에 가까울 수록
글 하나의 주제로 설명하는 반면, 1에 가까울 수록 다양한 주제로 설명을 한다.
Presence penalty는 중복을 제거하는 기능으로 최대 2까지 올릴 수 있는데 수치가 높을수록 반복되는 문장을
줄여주는 역할을 한다.
Best of는 결과로 만들 개수를 나타낸다. 만약 5로 설정되면 5개의 결과를 만들어서 1개를 선택해서 주게 된다.
기본 설정은 다음과 같다.
이제 API KEY를 발급받자
https://platform.openai.com/account/api-keys 접속해서 Create new secret key 버튼을 클릭한다.
Name에 임의의 값을 입력 후 Create secret key 버튼을 클릭한다.
생성된 KEY를 사용할 것이다. 이 KEY는 꼭 따로 기록하여 보관하도록 한다.
API를 이용한 챗봇을 만들려면 가장 잘되어 있는 레퍼런스 문서를 보는 게 답이다.
https://platform.openai.com/docs/api-reference 사이트로 이동 후 하나씩 따라해보자
VSCode TERMINAL 창에 pip install openai를 입력하여 openai를 설치한다.
ChatGPT의 통신 원리를 간단히 살펴보자
import openai
openai.api_key = "당신의 KEY"
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Hello!"}
]
)
print(completion.choices[0].message.content)
TERMINAL 창에 python 파일명.py 입력 후 실행을 하면
Hello에 대한 user의 답변 Greetings! How Can I assist you today?를 확인할 수 있다.
실행 후 원래는 아래와 같이 JSON 형식으로 리턴 값을 받게 된다.
{
"id":"chatcmpl-abc123",
"object":"chat.completion",
"created":1677858242,
"model":"gpt-3.5-turbo-0301",
"usage":{
"prompt_tokens":13,
"completion_tokens":7,
"total_tokens":20
},
"choices":[
{
"message":{
"role":"assistant",
"content":"\n\nThis is a test!"
},
"finish_reason":"stop",
"index":0
}
]
}
이번엔 ChatGPT API를 이용한 번역기를 간단히 만들어보자
먼저 TERMINAL창에서 pip install gradio를 입력해 gradio를 설치한다.
ChatGptCode3.py를 만들고 아래 코드를 입력한다.
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()
TERMINAL창에서 python ChatGptCode3.py를 입력해 실행하면 외부에서 접속할 수 있는 URL 주소가 생성된다.
URL 주소로 들어가 보면 아래와 같이 간단한 웹 사이트가 만들어진다.
이번엔 ChatGPT API 챗봇 기능을 gradio에 적용한다.
ChatGptCode3.py의 코드를 아래와 같이 변경해준다.
import openai
import gradio as gr
openai.api_key = "당신의 KEY"
def greet(content):
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo", messages=[{"role": "user", "content": content}]
)
return completion.choices[0].message.content
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch(share=True)
일단 gradio에서 메세지를 입력 후 '제출하기' 버튼을 클릭하면 greet() 함수를 호출한다.
greet() 함수 호출 시 content 값으로 당신의 입력값을 openai로 보내고 openai로부터 넘겨받은 메세지를
다시 gradio의 output으로 내보내는 코드이다.
다시 TERMINAL창에서 python ChatGptCode3.py를 입력해 실행하면 외부에서 접속할 수 있는 URL 주소가 생성된다.
(현재 실행 중인 명령을 종료하려면 Ctrl + c를 눌러준다.)
'안녕'이라고 입력 후 제출을 했을 때, 뒤에 어울릴 메세지를 넘겨준 것을 확인할 수 있다.
이번에는 content 뒤에 "영어로 번역해줘" 라는 문자열을 추가한 후 다시 실행해보자
import openai
import gradio as gr
openai.api_key = "당신의 KEY"
def greet(content):
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo", messages=[{"role": "user", "content": content + "영어로 번역해줘"}]
)
return completion.choices[0].message.content
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch(share=True)
'안녕 나의 블로그를 방문해줘서 고마워'를 입력 후 제출했을 때
'Hello, thank you for visiting my blog!'라는 결과를 넘겨준다.