import streamlit as st
from openai import OpenAI
st.set_page_config(page_title="OpenAI 챗봇", page_icon="🤖")
st.title("🤖 OpenAI 챗봇 (Streamlit)")
# 세션 상태에 메시지와 API 키 저장
if "messages" not in st.session_state:
st.session_state["messages"] = [
{"role": "system", "content": "당신은 친절한 AI 비서입니다."}
]
if "api_key" not in st.session_state:
st.session_state["api_key"] = ""
# API 키 입력
api_key = st.text_input("OpenAI API Key", type="password", value=st.session_state["api_key"])
if api_key:
st.session_state["api_key"] = api_key
# 대화 입력 폼
with st.form("chat_form", clear_on_submit=True):
user_input = st.text_input("메시지를 입력하세요:", "")
submitted = st.form_submit_button("전송")
if submitted and user_input and st.session_state["api_key"]:
st.session_state["messages"].append({"role": "user", "content": user_input})
try:
client = OpenAI(api_key=st.session_state["api_key"])
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=st.session_state["messages"],
max_tokens=200,
temperature=0.7
)
ai_reply = response.choices[0].message.content.strip()
st.session_state["messages"].append({"role": "assistant", "content": ai_reply})
except Exception as e:
st.error(f"OpenAI API 오류: {e}")
# 대화 내용 출력
for msg in st.session_state["messages"]:
if msg["role"] == "user":
st.markdown(f"**🙋♂️ 나:** {msg['content']}")
elif msg["role"] == "assistant":
st.markdown(f"**🤖 AI:** {msg['content']}")
코드 주요 부분 설명
import streamlit as st
from openai import OpenAI
st.set_page_config(page_title="OpenAI 챗봇", page_icon="🤖")
st.title("🤖 OpenAI 챗봇 (Streamlit)")
if "messages" not in st.session_state:
st.session_state["messages"] = [
{"role": "system", "content": "당신은 친절한 AI 비서입니다."}
]
if "api_key" not in st.session_state:
st.session_state["api_key"] = ""