| """ | |
| Custom Langchain tool to ask human | |
| """ | |
| import time | |
| import streamlit as st | |
| from langchain.tools.base import BaseTool | |
| class CustomAskHumanTool(BaseTool): | |
| """Tool that asks user for input.""" | |
| name = "AskHuman" | |
| description = """Use this tool if you don't find a specific answer using KendraRetrievalTool.\ | |
| Ask the human to clarify the question or provide the missing information.\ | |
| The input should be a question for the human.""" | |
| def _run( | |
| self, | |
| query: str, | |
| run_manager=None, | |
| ) -> str: | |
| if "user_answer" not in st.session_state: | |
| answer_container = st.chat_message("assistant", avatar="🦜") | |
| answer_container.write(query) | |
| answer = st.text_input("Enter your answer", key="user_answer") | |
| while answer == "": | |
| time.sleep(1) | |
| return st.session_state["user_answer"] | |