Spaces:
Build error
Build error
| from langchain.agents import ( | |
| load_tools, | |
| create_react_agent, | |
| AgentExecutor, | |
| tool, | |
| ) | |
| from langchain_openai import ChatOpenAI | |
| from langchain.memory import ConversationBufferMemory | |
| from langchain_community.tools import DuckDuckGoSearchRun | |
| from langchain import hub | |
| import streamlit as st | |
| search = DuckDuckGoSearchRun() | |
| def duckduckgo_webmd_search(text: str) -> str: | |
| """Uses the web to gather more medical information about medical query from webmd.com. | |
| Use this tool when you need more medical information from webmd.com to | |
| provide more accurate results. Don't use this if you want to search from other websites | |
| or if you want information regarding non-medical query. Receives a medical query as input, | |
| searches the web for results and gives relevant information as output string""" | |
| result = search.run(f"site:webmd.com {text}") | |
| output = str(result) | |
| return output | |
| memory = ConversationBufferMemory(memory_key="chat_history") | |
| llm = ChatOpenAI(temperature=0) | |
| tools = load_tools([], llm=llm) | |
| tools = tools + [duckduckgo_webmd_search] | |
| # Get the prompt to use - you can modify this! | |
| prompt = hub.pull("hwchase17/react") | |
| agent = create_react_agent(llm=llm, tools=tools, prompt=prompt) | |
| agent_executor = AgentExecutor( | |
| agent=agent, | |
| tools=tools, | |
| memory=memory, | |
| verbose=True, | |
| handle_parsing_errors=True, | |
| ) | |
| def handle_userinput(user_question): | |
| agent_executor.invoke({"input": user_question}) | |
| st.session_state.chat_history = memory.chat_memory.messages | |
| for i, message in enumerate(st.session_state.chat_history): | |
| if i % 2 == 0: | |
| st.markdown(("User: " + message.content)) | |
| else: | |
| st.markdown(("AI: " + message.content)) | |
| def main(): | |
| if "conversation" not in st.session_state: | |
| st.session_state.conversation = None | |
| if "chat_history" not in st.session_state: | |
| st.session_state.chat_history = None | |
| st.header("Ask any medical query that you want answers from webmd.com") | |
| user_question = st.chat_input("Ask any medical query") | |
| if user_question: | |
| handle_userinput(user_question) | |
| if __name__ == "__main__": | |
| main() | |