지난 포스팅에 Streamlit을 이용해 챗봇 상담사를 만들었다. 한 걸을 더 나아가 streamlit.io 사이트에 내가 만든 챗봇을 게시해 수익 창출을 해보자.
1. 여러 사용자를 위한 소스 코드 다듬기
사용자가 별 상담내용이 기록되고 대화가 되어야 한다. 그러기 위해서는 스레드가 각각 생성되어야 한다. 그 외 openai api키 같이 중요한 코드는 숨기고 배포하도록 하자.
from openai import OpenAI
import streamlit as st
#from dotenv import load_dotenv
#load_dotenv()
import time
assistant_id = st.secrets['assistant_id']
with st.sidebar:
st.link_button("더 좋은 컨텐츠를 위한 후원하기","https://toss.me/guslang")
iframe_html = """
<iframe src="https://ads-partners.coupang.com/widgets.html?id=765536&template=banner&trackingCode=AF7819398&subId=&width=300&height=250" width="300" height="250" frameborder="0" scrolling="no" referrerpolicy="unsafe-url" browsingtopics></iframe>
"""
st.markdown(iframe_html, unsafe_allow_html=True)
st.info("이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.")
openai_api_key = st.text_input("OpenAI API KEY", type="password")
client = OpenAI(api_key=openai_api_key)
thread_id = st.text_input("Thread ID")
thread_make_btn = st.button("Create a new thread")
if thread_make_btn:
thread = client.beta.threads.create()
thread_id = thread.id
st.subheader(f"{thread_id}",divider="rainbow")
st.info("새로운 쓰레드가 생성되었습니다.")
st.title("연애 상담 ChatBot")
if "messages" not in st.session_state:
st.session_state["messages"] = [{"role":"assistant","content":"연애코칭만 무진장입니다. 무엇을 도와드려요?"}]
print(f"st.session_state\n{st.session_state}")
print(f"thread_id:{thread_id}")
print()
for msg in st.session_state.messages:
st.chat_message(msg["role"]).write(msg["content"])
prompt = st.chat_input()
if prompt:
st.session_state.messages.append({"role": "user", "content": prompt})
st.chat_message("user").write(prompt)
# response = client.chat.completions.create(model="gpt-3.5-turbo", messages=st.session_state.messages)
response = client.beta.threads.messages.create(thread_id=thread_id, role="user", content=prompt)
run = client.beta.threads.runs.create(thread_id=thread_id, assistant_id=assistant_id)
run_id = run.id
while True:
run = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run_id)
if run.status == "completed":
break
else:
time.sleep(2)
# assistant_content = response.choices[0].message.content
thread_messages = client.beta.threads.messages.list(thread_id)
assistant_content = thread_messages.data[0].content[0].text.value
st.session_state.messages.append({"role": "assistant", "content": assistant_content})
st.chat_message("assistant").write(assistant_content)
print(st.session_state.messages)
2. Git hub 레파지토리 생성하기 (무료)
3. Git hub에 파일 업로드 (무료)
작성한 코드를 Git hub에 올린다.
4. Streamlit.io에 사이트를 개설한다. (무료)
오픈한 사이트 이름을 등록하여 서비스 url을 받는다. 이 때 Git hub 저장소 정보를 넣어서 연동하게 된다. 그러면 다음과 같은 사이트가 만들어지고, 내가 만든 첫 번째 AI 챗봇이 공개된다. 두둥~
연애상담을 무료로 제공하고 토스 후원, 쿠팡 파트너스 제휴 링크도 걸려 있어서 수익 창출도 가능하다.
https://openaibot.streamlit.app/
나만의 챗봇을 만들어 서비스할 수 있는 세상이다. 잘만든 봇하나가 웬만한 아르바이트보다 나은 수입을 가져다 줄지도 모른다. 여기에 사용된 기술을 잘 익혀서 응용한다면 분명 좋은 결과물을 가져올 수 있을 것이다. 앞으로 AI세상이 아니겠는가. 약간의 코딩을 이행하는 능력, 서비스를 제공하는 사이트, 홍보를 할 수 있는 사이트 그리고 이들을 하나의 서비스로 엮을 수 있는 능력이 필요한 세상이다.
반응형
댓글