Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from langchain.chains import ConversationChain | |
| from .memory import EnhancedInMemoryHistory, get_by_session_id | |
| from .models import route_llm, prompt | |
| # Function to process input and generate a response | |
| def process_input(user_input, session_id='1'): | |
| """ | |
| Processes the user input and generates a response using the conversation chain. | |
| Parameters: | |
| user_input (str): The user's input message. | |
| session_id (str): The session ID for the chat (default is "1"). | |
| Returns: | |
| Generator: A generator that streams the chatbot's response tokens. | |
| """ | |
| memory = get_by_session_id(session_id) | |
| if user_input.lower() == 'exit': | |
| yield "Exiting the chat session." | |
| llm = route_llm(user_input) | |
| conversation_chain = ConversationChain( | |
| llm=llm, | |
| prompt=prompt, | |
| memory=memory, | |
| input_key='input', | |
| verbose=True | |
| ) | |
| # Stream response tokens | |
| response_generator = conversation_chain.stream({"input": user_input}) | |
| for token in response_generator: | |
| yield token # Stream each token | |
| memory.save_context({'input': user_input}, ''.join(response_generator)) | |
| # Gradio interface function to handle input | |
| def chatbot_interface(user_input, chat_history=None, session_id="1"): | |
| """ | |
| Interface function for Gradio to handle input and output between the user and the chatbot. | |
| Parameters: | |
| user_input (str): The user's input message. | |
| session_id (str): The session ID for the chat (default is "1"). | |
| chat_history (list): List of previous chat messages in the format [[user, bot], ...] | |
| Returns: | |
| list: Updated chat history including the new user and bot messages. | |
| """ | |
| if chat_history is None: | |
| chat_history = [] | |
| # Greeting at the start of the chat | |
| if user_input == "": | |
| bot_response = "Hi there! How can I help you today?" | |
| else: | |
| bot_response = process_input(user_input, session_id) | |
| # Add user input and bot response to chat history | |
| chat_history.append([user_input, bot_response]) | |
| return chat_history | |
| # Gradio launch | |
| def launch_gradio_interface(): | |
| gr.Interface( | |
| fn=chatbot_interface, | |
| inputs=[gr.Textbox(lines=7, label="Your input", placeholder="Type your message here...")], | |
| outputs=gr.Chatbot(label="Chat History"), | |
| title="AI Chatbot", | |
| live=False | |
| ).launch() |