File size: 2,494 Bytes
443fe94 6b0ea08 241d45f 6b0ea08 443fe94 363cf96 cb70cf7 bc35e6b cb70cf7 443fe94 363cf96 cb70cf7 443fe94 363cf96 cb70cf7 443fe94 cb70cf7 443fe94 c9e872a cb70cf7 443fe94 cb70cf7 f03cf3f cb70cf7 f03cf3f 977b354 cb70cf7 6a33096 6db681b 6a33096 aae4041 6a33096 6db681b e0b46f5 188a656 6db681b 443fe94 f03cf3f c9e872a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# 必要なライブラリのインポート
import os
from dotenv import load_dotenv
import openai
import streamlit as st
from langchain_openai import ChatOpenAI
from langchain.chains import RetrievalQA
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
load_dotenv()
# Langsmithの設定
#LANGCHAIN_TRACING_V2 = true
#LANGCHAIN_ENDPOINT = "https://api.smith.langchain.com"
# APIキーの設定
openai.api_key = os.environ["OPENAI_API_KEY"]
# GPTの種類の設定
MODEL_NAME = "gpt-3.5-turbo-16k-0613"
# モデルが生成するテキストがどれくらいランダムになるか0から1の範囲で設定する。
MODEL_TEMPERATURE = 0.9
# Webアプリの見出しの設定
st.title("Welcome to TOKAI Chatbot.ver8 🔰")
st.markdown("お困りになっていることを教えてください。")
# FAISS vectorのロード
vectoreStore = FAISS.load_local("faiss_index/", OpenAIEmbeddings(), allow_dangerous_deserialization=True)
# Retrieverについて設定
retriever = vectoreStore.as_retriever(search_type="similarity", search_kwargs={"k": 3})
# メッセージ履歴を保持するリストの定義
if "messages" not in st.session_state:
st.session_state.messages = []
# メッセージ履歴の表示
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
# ユーザーの入力を監視
if prompt := st.chat_input("ここに質問事項を入力してください。"):
# ユーザーによる質問の保存・表示
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
# LLMによる回答の生成
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(temperature=MODEL_TEMPERATURE, model_name=MODEL_NAME),
chain_type="stuff",
retriever=retriever,
return_source_documents=False
)
#query = f"東海大学の授業要覧以外に関する質問には答えないでください。次の質問に答えてください。:{prompt}"
query = f"東海大学の授業要覧以外に関する質問には答えないでください。次の質問に答えてください。:{prompt}"
res = qa.run(query)
# LLMによる回答の保存
st.session_state.messages.append({"role": "assistant", "content": res})
# LLMによる回答の表示
with st.chat_message("assistant"):
st.markdown(res) |