[Python] Streamlit 으로 간단한 챗붓 만들기

Posted by Albert 23Day 7Hour 20Min 55Sec ago [2025-11-05]

Chat GPT를 활용하여 간단한 웹 챗붓 만들수 있다.


1. 설치

(venv) PS C:\Users\visio\IdeaProjects\llm> pip install streamlit
Collecting streamlit
Obtaining dependency information for streamlit from https://files.pythonhosted.org/packages/39/60/868371b6482ccd9ef423c6f62650066cf8271fdb2ee84f192695ad6b7a96/streamlit-1.51.0-py3-none-any.whl.metadata
Downloading streamlit-1.51.0-py3-none-any.whl.metadata (9.5 kB)
Collecting altair!=5.4.0,!=5.4.1,<6,>=4.0 (from streamlit)
...


2. 실행 소스 작성

import streamlit as st
from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

' (0) 사이드바에서 api_key 입력하는 부분
with st.sidebar:
openai_api_key = os.getenv('OPENAI_API_KEY')
"[Get an OpenAI API key](https://platform.openai.com/account/api-keys)"
"[View the source code](https://github.com/streamlit/llm-examples/blob/main/Chatbot.py)"
"[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/streamlit/llm-examples?quickstart=1)"

st.title("Chatbot")

' (1) st.session_state "messages"가 없으면 초기값을 설정
if "messages" not in st.session_state:
st.session_state["messages"] = [{"role": "assistant", "content": "How can I help you?"}]

' (2) 대화 기록을 출력
for msg in st.session_state.messages:
st.chat_message(msg["role"]).write(msg["content"])

' (3) 사용자 입력을 받아 대화 기록에 추가하고 AI 응답을 생성
if prompt := st.chat_input():
if not openai_api_key:
st.info("Please add your OpenAI API key to continue.")
st.stop()

client = OpenAI(api_key=openai_api_key)
st.session_state.messages.append({"role": "user", "content": prompt})
st.chat_message("user").write(prompt)
response = client.chat.completions.create(model="gpt-4o", messages=st.session_state.messages)
msg = response.choices[0].message.content
st.session_state.messages.append({"role": "assistant", "content": msg})
st.chat_message("assistant").write(msg)


3. 실행

(venv) PS C:\Users\visio\IdeaProjects\llm> streamlit run .\streamlit.py

You can now view your Streamlit app in your browser.

Local URL: http://localhost:8501


4. 결과





LIST

Copyright © 2014 visionboy.me All Right Reserved.