import os
import streamlit as st
from langchain_community.callbacks import StreamlitCallbackHandler
# 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_ai_agent
from tools.command_list import get_tool_list
from tools.command_list import get_next_agent
import tools.command_list
import tools.fllow_controller
from tools.AIAgent import AIAgent
from tools.EmotionalBehaviorAgent import EmotionalBehaviorAgent
import msvcrt
################################################
##########################################################
def init_page():
st.set_page_config(
page_title="In front of AGI start gate.",
page_icon=""
)
st.header("In front of AGI start gate.")
st.sidebar.title("Options")
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 create_ai_agent(name, private_memory=False):
if "EmotionalBehavior" == name:
return EmotionalBehaviorAgent()
return AIAgent(name, "", get_tool_list())
def cange_agent(agent, name):
agent.update_system_prompt(get_ai_agent(name))
def think_agent(ai_agent, name, prompt):
tools.command_list.g_time_keeper.wait()
# AIエージェントの思考
print("think_agent name", name, prompt)
with st.chat_message(name):
# コールバック関数の設定 (エージェントの動作の可視化用)
st_cb = StreamlitCallbackHandler(
st.container(), expand_new_thoughts=True)
# エージェントを実行
response = ai_agent.get_respons(prompt)
st.write(response)
print("response", response)
return response
def main():
loop_count_max = 6
loop_count = 0
now_agent_name = "EmotionalBehavior"
load_ai_agent_name_list()
ai_agent = create_ai_agent(now_agent_name)
init_page()
init_messages(ai_agent)
set_work_space(os.getcwd())
for msg in st.session_state['memory'].chat_memory.messages:
st.chat_message(msg.type).write(msg.content)
# セッション状態に値がある場合のみテキスト入力欄を表示
while True:
think_agent(ai_agent, "now_agent_name","")
print("end_of_main")
if __name__ == '__main__':
main()