Spaces:
Runtime error
Runtime error
| import os | |
| import streamlit as st | |
| from langchain.chat_models import ChatOpenAI | |
| from langchain.schema import HumanMessage | |
| from langchain.agents import AgentType, initialize_agent, load_tools | |
| from langchain.callbacks import StreamlitCallbackHandler | |
| from langchain.memory import ConversationBufferMemory | |
| from langchain.prompts import MessagesPlaceholder | |
| st.title("Chatbot") | |
| api_model = os.getenv("OPENAI_API_MODEL") | |
| temperature = os.getenv("OPENAI_API_TEMPERATURE") | |
| origin_text = st.sidebar.text_area("γ·γΉγγ γγγ³γγε ₯ε") | |
| system_prompt = origin_text if origin_text else os.getenv("system_prompt") | |
| print(system_prompt) | |
| def create_agent_chain(): | |
| chat = ChatOpenAI( | |
| model_name = api_model, | |
| temperature = temperature, | |
| streaming = True, | |
| ) | |
| agent_kwargs = { | |
| "extra_prompt_messages": [MessagesPlaceholder(variable_name = "memory")], | |
| } | |
| memory = ConversationBufferMemory(memory_key = "memory", return_messages = True) | |
| tools = load_tools(["ddg-search"]) | |
| return initialize_agent( | |
| tools, | |
| chat, | |
| agent = AgentType.OPENAI_FUNCTIONS, | |
| agent_kwargs = agent_kwargs, | |
| memory = memory, | |
| ) | |
| if "messages" not in st.session_state: | |
| st.session_state.messages = [] | |
| if "agent_chain" not in st.session_state: | |
| st.session_state.agent_chain = create_agent_chain() | |
| for message in st.session_state.messages: | |
| with st.chat_message(message["role"]): | |
| st.markdown(message["content"]) | |
| prompt = st.chat_input("What is up?") | |
| if prompt: | |
| st.session_state.messages.append({"role": "user", "content": prompt}) | |
| with st.chat_message("user"): | |
| st.markdown(prompt) | |
| with st.chat_message("assistant"): | |
| callback = StreamlitCallbackHandler(st.container()) | |
| response = st.session_state.agent_chain.run(system_prompt + prompt, callbacks = [callback]) | |
| st.markdown(response) | |
| st.session_state.messages.append({"role": "assistant", "content": response}) |