import os
import streamlit as st
# custom tools
from tools.command_list import set_work_space
from tools.command_list import load_ai_agent_name_list
from tools.command_list import get_tool_list
import tools.command_list
from tools.AIAgent import AIAgent
from tools.PythonProgramerAgent import PythonProgramerAgent
from tools.WebSerchAgent import WebSerchAgent
################################################
##########################################################
def init_page():
st.set_page_config(
page_title="Agents chat",
page_icon=""
)
st.sidebar.title("Options")
# エージェント選択
agents = []
agents_dict=tools.command_list.g_tdb.ai_agent_dict
agents.append("なし")
for key in agents_dict:
if "User" not in key:
agents.append(key+":"+agents_dict[key][0])
ai_agent_name = st.sidebar.selectbox(
"エージェントを選択してください",
agents
)
list_buf = ai_agent_name.split(":")
if 1 < len(list_buf):
#選択されているとき
st.header(list_buf[0] + " Agent")
#
ai_agent_name = list_buf[0]
else:
# なしの時
st.header("No Agent")
# 温度設定
temperature = st.sidebar.slider(
"温度 (0-1)",
min_value=0.0,
max_value=1.0,
value=0.0,
step=0.1
)
return ai_agent_name, temperature
def init_messages(ai_agent):
clear_button = st.sidebar.button("Clear Conversation", key="clear")
if clear_button or "messages" not in st.session_state:
st.session_state.messages = [
{"role": "assistant", "content": "ご用件を入力してください。"}
]
ai_agent.clear_memory()
def get_ai_agent(name):
if "なし" == name:
return AIAgent("None", "", get_tool_list())
if "WebSerch" == name:
return WebSerchAgent()
if "PythonProgramer" == name:
return PythonProgramerAgent()
return AIAgent(name, "", get_tool_list())
def main():
load_ai_agent_name_list()
ai_agent_name, temperature = init_page()
ai_agent = get_ai_agent(ai_agent_name)
ai_agent.update_temperature(temperature)
init_messages(ai_agent)
set_work_space(os.getcwd())
print("current folder", os.getcwd())
for msg in st.session_state['memory'].chat_memory.messages:
st.chat_message(msg.type).write(msg.content)
# セッション状態に値がある場合のみテキスト入力欄を表示
if user_prompt := st.chat_input(placeholder="作業内容を入れてください"):
st.chat_message("user").write(user_prompt)
respons = ai_agent.get_respons(user_prompt)
st.chat_message("Python program agent").write(respons)
print("end_of_main")
if __name__ == '__main__':
main()
以下AIによる説明
リファレンスマニュアル
概要
このプログラムは、Streamlitを用いて、複数のAIエージェントとチャットできるアプリケーションです。
機能
- エージェント選択: サイドバーから、利用可能なAIエージェントを選択できます。
- 温度設定: サイドバーから、AIエージェントの応答のランダム性を調整する温度を設定できます。
- 会話クリア: サイドバーから、現在の会話履歴をクリアできます。
- チャット: テキスト入力欄にメッセージを入力して、選択したAIエージェントとチャットできます。
エージェント
- なし: 特定のエージェントが選択されていない場合、デフォルトのエージェントとして動作します。
- WebSerch: Web検索を行うエージェントです。
- PythonProgramer: Pythonプログラムを作成するエージェントです。
使い方
- プログラムを実行します。
- サイドバーから、利用したいAIエージェントを選択します。
- サイドバーから、温度を設定します。
- テキスト入力欄にメッセージを入力して、AIエージェントとチャットします。
注意点
- AIエージェントの応答は、温度設定によってランダム性が変化します。
- AIエージェントは、常に正確な情報を提供するとは限りません。
- AIエージェントは、倫理的に問題のある応答をする可能性があります。
その他
- このプログラムは、Streamlitを用いて開発されています。
- このプログラムは、Pythonで記述されています。