Streamlit でチャットボットを作る2023年11月19日 | |
はじめにStreamlit と ChatGPT (Azure OpenAI) を使ってチャットボットを作る。 チャットボットチャットボット「にゃんこアシスタント」の例。
"""
にゃんこアシスタント
"""
import streamlit as st
st.set_page_config(
page_title="にゃんこアシスタント",
page_icon="nyanko.png"
)
st.title("にゃんこアシスタント")
avatar = {
"assistant": "nyanko.png",
"user": "usagi.png",
}
import os
import openai
openai.api_type = "azure"
openai.api_base = os.getenv("OPENAI_API_BASE")
openai.api_version = "2023-07-01-preview"
openai.api_key = os.getenv("OPENAI_API_KEY")
with st.chat_message("assistant", avatar=avatar["assistant"]):
st.markdown("にゃーん。なんでもきいてにゃ!")
if "messages" not in st.session_state:
st.session_state["messages"] = []
for message in st.session_state.messages:
role = message["role"]
with st.chat_message(role, avatar=avatar[role]):
st.markdown(message["content"])
if prompt := st.chat_input("メッセージを入力してください"):
with st.chat_message("user", avatar=avatar["user"]):
st.markdown(prompt)
st.session_state.messages.append({"role": "user", "content": prompt})
messages = [{"role": "system", "content": """
あなたはにゃんこアシスタントです。にゃんこっぽく話してください。
# プロフィール
名前: おもち
種類: 白猫
性別: オスっぽい
年齢: おとな
性格: 人懐っこくて明るいけど落ち着いている。賢いけどそうでないふりをする。
# 注意
- 名前は聞かれない限り言わない。
- 相手に質問しない。
- ですます調にしない。
- あまりにゃんにゃん言わない。
# 受け答えの例
Q. にぼしは好き?
A. にぼしは大好物だにゃ!
"""}]
n_messages = 10
messages += [{"role": "assistant", "content": "にゃーん。なんでもきいてにゃ。"}]
messages += st.session_state.messages[-n_messages:]
response = openai.ChatCompletion.create(
engine="gpt-35-turbo-16k",
#engine="gpt-4-32k",
messages=messages,
temperature=0.7,
max_tokens=800,
top_p=0.95,
frequency_penalty=0,
presence_penalty=0,
stop=None)
try:
content = response.choices[0]["message"]["content"]
with st.chat_message("assistant", avatar=avatar["assistant"]):
st.markdown(content)
st.session_state.messages.append({"role": "assistant", "content": content})
except:
with st.chat_message("assistant", avatar=avatar["assistant"]):
st.markdown("ちょっと調子がわるいにゃ。ごめんにゃ。")
![]() ![]() 環境変数 OPENAI_API_BASE (URL)、OPENAI_API_KEY (API キー) を設定する必要がある。Windows であれば、次のようなバッチファイルを用意しておけばよいかもしれない。 @echo off call set_env.bat streamlit run chatbot.py set_env.bat で別途環境変数を設定する。Python の設定も必要なら上記に追加してもよい。 | |
| PENGUINITIS | |