7. 봉드로이드_개발공부

내가 만든 사이트에서 gpt를 API로 연결해 사용하기(streamlit편)

마켓플레이어, 마케터 봉 2024. 10. 17. 18:44

사실 gpt를 만들려면 파이썬에 streamlit 패키지를 깔아서 하는 게 제일 편한 것 같다.

괜히 자바스크립트로 만들어서 하면 코드만 길어지고 복잡해지기 때문이다.

그럼에도 불구하고 내가 자바스크립트로 먼저 한 것은, 데이터(질문을 보내고, 받고)의 송수신 과정을 알고 싶기도 했으며, 솔직히 내가 만든 사이트에 적용하려니, 스트림릿을 사용하니까 잘 모르겠더라.

(검색해도 "스트림릿 html 코드 없이"라는 글이 많지, "스트림릿과 html로 만든"은 없었다. 못찾은 걸수도..)

 

아무튼 그래서 난 자바스크립트로 먼저 gpt와 연동했다.

https://marketerbong.tistory.com/69

 

그런데도 스트림릿으로 해보고 싶다면? 아래 코드만 갖다 붙여넣으면 된다.

 

솔직히 웹페이지 만드는 데에는 streamlit이 훨씬 편한듯 싶은데, 난 전문 개발자가 아니라 마케터이기 때문에 이것까지 공부하지는 않을 거다. 근데 gpt 연동되는 거 보니까 부럽..ㅎ..

 

1. 우선 패키지를 설치하자.

pip install streamlit
pip install openai

 

 

2. 그 다음 필요한 라이브러리들을 import해준다.

import streamlit as st  
import os  
from openai import OpenAI

 

 

3. open AI API를 세팅해준다. "YOUR_OPENAI_API_KEY" 영역에 키값을 넣어주면 된다.

os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"  
client = OpenAI()

 

4. 이제 스트림릿 코드를 작성해 질문입력/gpt응답생성/응답을messages에추가/대화내역저장 되도록 해준다.

st.title("Streamlit ChatGPT")  
  
# 기본적으로 스트림릿은 event가 발생할 때마다 페이지를 새로 로드함.
# 그렇기에 session_state를 저장하도록 한 것임.
if 'messages' not in st.session_state:  
    st.session_state.messages = []  

# uesr의 인풋 박스와 send버튼 생성한 것임
# 버튼은 눌렀을 때 동작이 필요하므로 if문 안에서 작성한 것임.
user_message = st.text_input("User:")    
if st.button("Send"):  
    st.session_state.messages.append({"role": "user", "content": user_message})  
  
  	# chat.completions.create를 이용해 응답을 받아오고
    # st.session_state.messages에 append해줌.
    # 모델과 role 등은 수정 가능함.
    completion = client.chat.completions.create(  
        model="gpt-3.5-turbo",  
        messages=st.session_state.messages,  
    )  
    response = completion.choices[0].message.content  
    st.session_state.messages.append({"role": "assistant", "content": response})

 

5. 이제 chat_message로 화면에 띄워주면 된다.

for message in reversed(st.session_state.messages):  
    with st.chat_message(message['role']):  
        if message['role'] == 'user':  
            st.write(message['content'])  
        else:  
            st.write(message['content'], avatar=st.image('이미지', width=30))

 

6. 그리고 파이썬 파일을 실행시키자. 단, 스트림릿은 아래 코드로 실행해야 한다.

streamlit app.py

 

그럼 아래와 같이 뜨게 된다.