import gradio as gr import os from utils.chatbot_logic import create_chatbot_chain # Initialize the chatbot chain chatbot_chain = create_chatbot_chain() def chat_interface(message, history): """ Process user message and return chatbot response """ try: response = chatbot_chain.invoke({"input": message}) return response["output"] except Exception as e: return f"Error: {str(e)}" # Create Gradio Chat Interface with gr.Blocks(theme=gr.themes.Soft()) as demo: gr.Markdown( """ # 🤖 LangChain Runnables Chatbot A modular chatbot built using **LangChain Runnables** with multiple response strategies. **Features:** - Fact retrieval - Joke generation - Conversational memory - Modular and extensible design """ ) chatbot = gr.Chatbot( label="Chat History", height=400, type="messages" ) msg = gr.Textbox( label="Your Message", placeholder="Ask me anything...", lines=2 ) clear = gr.Button("Clear Chat") def respond(message, chat_history): bot_message = chat_interface(message, chat_history) chat_history.append({"role": "user", "content": message}) chat_history.append({"role": "assistant", "content": bot_message}) return "", chat_history msg.submit(respond, [msg, chatbot], [msg, chatbot]) clear.click(lambda: None, None, chatbot, queue=False) if __name__ == "__main__": demo.launch()