chat-gpt APIでチャットボットを作ってみた。Streamlitフレームワークを使うと、pythonで簡単にWebアプリのUIを作ってくれて便利!
chat-gptの無料期間(三ヶ月)が切れていたので、クレジットカードと住所の入力が必要だった。
最低5ドル(750円)をチャージしないと、使えなくなっていた…。
RateLimitError: You exceeded your current quota, please check your plan and billing details..
参考URL
https://nuco.co.jp/blog/article/YhjPe4Hf
Anaconda Promptだと、1個ずつじゃないとインストール出来なかった…。
1 |
pip install streamlit streamlit-chat langchain openai python-dotenv |
プロンプト
あなたはプロの電話秘書です。
会社の電話対応して下さい。
もし営業電話と判断した場合は「必要がありましたら、こちらから連絡いたします」と返答して下さい。
仕事の依頼や問い合わせの場合は「担当者の電話番号は03-1234-5678です」と返答して下さい。
営業電話
お忙しいところ恐れ入ります。
私、企業向けの顧客管理システム XYZを提供している株式会社 ABCの〇〇と申します。
弊社のサービスが御社のコスト削減につながると考え、ご紹介したくご連絡いたしました。
御社の営業部のご責任者様はいらっしゃいますでしょうか。
仕事の依頼
お忙しいところ恐れ入ります。
私、企業向けの顧客管理システム XYZを提供している株式会社ああああと申します。
御社に開発の依頼をしたいのですが、開発担当者様にお願いします。
動作はしているけど、gpt-3.5-turboなのにレスポンスが、えらい遅い…。
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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# ライブラリをインポート import streamlit as st from streamlit_chat import message from langchain.chat_models import ChatOpenAI from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain from langchain.prompts.chat import ( ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate, MessagesPlaceholder, ) # 環境変数の読み込み from dotenv import load_dotenv load_dotenv() #プロンプトテンプレートを作成 template = """ あなたはプロの電話秘書です。 会社の電話対応して下さい。 もし営業電話と判断した場合は「必要がありましたら、こちらから連絡いたします」と返答して下さい。 仕事の依頼や問い合わせの場合は「担当者の電話番号は03-1234-5678です」と返答して下さい。 """ # 会話のテンプレートを作成 prompt = ChatPromptTemplate.from_messages([ SystemMessagePromptTemplate.from_template(template), MessagesPlaceholder(variable_name="history"), HumanMessagePromptTemplate.from_template("{input}"), ]) #会話の読み込みを行う関数を定義 @st.cache_resource def load_conversation(): llm = ChatOpenAI( model_name="gpt-3.5-turbo", temperature=0 ) memory = ConversationBufferMemory(return_messages=True) conversation = ConversationChain( memory=memory, prompt=prompt, llm=llm) return conversation # 質問と回答を保存するための空のリストを作成 if "generated" not in st.session_state: st.session_state.generated = [] if "past" not in st.session_state: st.session_state.past = [] # 送信ボタンがクリックされた後の処理を行う関数を定義 def on_input_change(): user_message = st.session_state.user_message conversation = load_conversation() answer = conversation.predict(input=user_message) st.session_state.generated.append(answer) st.session_state.past.append(user_message) st.session_state.user_message = "" # タイトルやキャプション部分のUI st.title("営業電話 Chatbot") st.caption("gpt-3.5-turboなのに遅い…。") st.write("営業電話かどうか判断するチャットボット") # 会話履歴を表示するためのスペースを確保 chat_placeholder = st.empty() # 会話履歴を表示 with chat_placeholder.container(): for i in range(len(st.session_state.generated)): message(st.session_state.past[i],is_user=True) message(st.session_state.generated[i]) # 質問入力欄と送信ボタンを設置 with st.container(): user_message = st.text_input("電話の代わりにテキスト入力して下さい", key="user_message") st.button("送信", on_click=on_input_change) |
会社情報のテンプレートくらいは追加したほうが良い?
商号 株式会社テスト・テスト
設立年月日 2000年1月1日
代表者 代表取締役 鈴木一郎
決算期 毎年3月期
所在地 〒100-0001 東京都千代田区千代田1-2-3
TEL 03-1234-5678
FAX 03-1234-5678
取引先銀行 テスト銀行 テスト支店