| import gradio as gr
|
| from langchain_community.chat_models import ChatOpenAI
|
| from langchain.memory import ConversationBufferMemory, SimpleMemory
|
| from langchain.agents import initialize_agent, AgentType
|
| from dotenv import load_dotenv
|
| import os
|
| import agent.planning_agent as planning_agent
|
| import logging
|
|
|
|
|
| logging.basicConfig(level=logging.INFO)
|
| logger = logging.getLogger(__name__)
|
|
|
|
|
| llm = None
|
| chat_memory = None
|
| query_memory = None
|
|
|
| def initialize_components():
|
| global llm, chat_memory, query_memory
|
| load_dotenv()
|
|
|
|
|
| api_key='sk-ah4Ar22m-1gdxwT5lg0KAodXVK5wt19cOzMBCV1mZ0T3BlbkFJzIhW66UefL-sl55mh4W-bcP1jUymqLHFuFEWC5bl8A'
|
|
|
| llm = ChatOpenAI(
|
| model_name="gpt-3.5-turbo",
|
| temperature=0,
|
| api_key=api_key
|
| )
|
|
|
|
|
| chat_memory = ConversationBufferMemory(
|
| memory_key="chat_history",
|
| return_messages=True
|
| )
|
| query_memory = SimpleMemory()
|
|
|
|
|
| planning_agent.initialize_planning_agent(llm, chat_memory, query_memory)
|
|
|
| logger.info("Components initialized successfully")
|
|
|
| def process_query(query, history):
|
| try:
|
|
|
| if history:
|
| for human_msg, ai_msg in history:
|
| if chat_memory and hasattr(chat_memory, 'chat_memory'):
|
| chat_memory.chat_memory.add_user_message(human_msg)
|
| chat_memory.chat_memory.add_ai_message(ai_msg)
|
|
|
|
|
| query_memory.memories['original_query'] = query
|
|
|
|
|
| response = planning_agent.execute(query)
|
|
|
|
|
| if chat_memory and hasattr(chat_memory, 'chat_memory'):
|
| chat_memory.chat_memory.add_user_message(query)
|
| chat_memory.chat_memory.add_ai_message(response)
|
|
|
| return response
|
|
|
| except Exception as e:
|
| error_msg = f"Error processing query: {str(e)}"
|
| logger.error(f"Error details: {str(e)}")
|
|
|
| if chat_memory and hasattr(chat_memory, 'chat_memory'):
|
| chat_memory.chat_memory.add_user_message(query)
|
| chat_memory.chat_memory.add_ai_message(error_msg)
|
|
|
| return error_msg
|
|
|
| def clear_context():
|
| planning_agent.clear_context()
|
| chat_memory.clear()
|
| query_memory.memories.clear()
|
| return [], []
|
|
|
| def create_gradio_app():
|
| from interface import create_interface
|
| return create_interface(process_query, clear_context)
|
|
|
| def main():
|
| """Main application entry point"""
|
| try:
|
| initialize_components()
|
| app = create_gradio_app()
|
| app.queue()
|
| app.launch(server_name="0.0.0.0", server_port=7860, share=True)
|
| except Exception as e:
|
| logger.error(f"Error in main: {str(e)}")
|
| raise
|
|
|
| if __name__ == "__main__":
|
| main() |