본문 바로가기

Python

chatGPT를 Python으로 접속하기

반응형

https://youtu.be/GWQ3qT84ViQ

 

- YouTube

 

www.youtube.com

요즘 인공지능 서비스를 앞다투어 하다 보니, 소속된 단체의 보안을 위해 인공지능 서비스 접속을 차단하는 경우가 늘고 있습니다. 이에 따라 이를 우회하기 위한 방안이 필요한데 대표적인게 api이용하는 방법을 소개합니다.

 

1) 본인 API_KEY알아내기

먼저 chatGPT API를 사용하기 위해서는 openai.com에 접속한 후에 로그인 하면 아래처럼 화면이 뜨는데, API를 선택한 후 에 나온 화면에서 우상단의 personal을 누르면 뜨는 메뉴중간에 View API Key가 있으니 그것을 클릭합니다.

 

=>

=>

=> API keys에서 기존에 생성한 key가 있으면 그걸 사용해도 되고, 없을 경우 create new secret key를 누르면 신규로 생성하고서 복사할 기회를 한번 주는데 잘 저장해 주십시요. 확인 누른 후에는 다시 확인할 방법이 없습니다.

이제 본인의 API Key를 복사했다고 가정하겠습니다.

 

2) OPENAI_API_KEY에 본인의 API key할당하기

윈도우 환경일 경우에는 아래와 같이 지정한다.

c:\> set OPENAI_API_KEY=sk…( 본인의 API key)

만약 linux환경일 경우 아래와 같이 지정한다.

$export OPENAI_API_KEY=sk..(본인의 API key)

 

3) python에서 활용하기 - requests 기반

pip install requests 는 이미 실행한 것으로 간주하고 설명합니다.

아래는 소스입니다.

 import os

 import requests

 

response = requests.post( ... "https://api.openai.com/v1/chat/completions", ... headers={"Authorization": f"Bearer {os.getenv('OPENAI_API_KEY')}"}, ... json={"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "새로운 질문 입력"}]}, ... )

 

response.json() => 결과에 세부 내용이 많으므로 비추

response.json()["choices"][0]["message"]["content"] => 결과만 보여주므로 추천

 

이상의 내용을 넣으면 python api를 이용해서 보안에서 막는 경우에도 접근 가능합니다.

 

4) python에서 활용하기 - openai 기반

pip install openai는 이미 실행한 것을 간주하고 설명합니다.

아래는 소스입니다.

import os

import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.ChatCompletion.create( ... model="gpt-3.5-turbo", messages=[{"role": "user", "content": "새로운 질문 입력"}] ... )

response => 한글도 깨지고 내용읽기가 힘드므로 비추

response.choices[0].message.content => 결과만 나오므로 추천

 

5) 범용적인 Python code로 만들기

우선 개인의 api_key를 입력받고, 질문을 입력 받고, 결과를 보여주는 것으로 작성해 보겠습니다.

기존에 사용했던 코드에서 달라질 부분은 개인키를 입력받은 것으로 변경하는 부분입니다.

GUI구성은 간단히 tkinter방식으로 구성하겠습니다.

아래는 소스입니다.

import tkinter as tk
import os
import openai

root = tk.Tk()
root.geometry("800x900")
root.title("ChatGPT v0.1")

key_label = tk.Label(root, text="Type your OPENAI_KEY ")
key_label.grid(row=0,column=0,padx=5,pady=10 )
key_entry = tk.Entry(root)
key_entry.insert(0, "sk.....")
key_entry.grid(row=0,column=1,padx=5,pady=5,ipadx=230 )

ask_label = tk.Label(root, text="What do you want to know?")
ask_label.grid(row=1,column=0,padx=5,pady=10)
ask_entry = tk.Text(root)
ask_entry.insert(tk.END, "Your question is here.")
ask_entry.grid(row=1,column=1,padx=5,pady=5,ipadx=20,ipady=2)

res_label = tk.Label(root, text="Result")
res_label.grid(row=3,column=0,padx=5,pady=5)
res_entry = tk.Text(root)
res_entry.insert(tk.END, "")
res_entry.grid(row=4,column=0,padx=20,pady=10, ipady=50, columnspan=2,sticky='we')

def start():
    strKey = key_entry.get()
    strAsk = ask_entry.get("1.0","end")
    openai.api_key=strKey
    os.getenv("OPENAI_API_KEY",strKey)
    result = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": strAsk}])
    res_entry.insert(tk.END, result.choices[0].message.content )

button = tk.Button(root, text="Start", command=start)
button.grid(row=2,column=1,padx=5,pady=10)


root.mainloop()

아래는 실행파일로 만드는 과정입니다.

c:\>pyinstaller -w -F chatGPT_v0.1.py

 

그 결과 생성된 실행파일입니다.

chatGPT_v0.1.z01
19.53MB
chatGPT_v0.1.zip
4.91MB

 

반응형