Spaces:
Build error
Build error
| 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 | |
| # Configure logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| # Global variables | |
| llm = None | |
| chat_memory = None | |
| query_memory = None | |
| def initialize_components(): | |
| global llm, chat_memory, query_memory | |
| load_dotenv() | |
| #api_key = os.environ['OA_API'] | |
| #os.environ['OPENAI_API_KEY'] = api_key | |
| api_key='sk-ah4Ar22m-1gdxwT5lg0KAodXVK5wt19cOzMBCV1mZ0T3BlbkFJzIhW66UefL-sl55mh4W-bcP1jUymqLHFuFEWC5bl8A' | |
| llm = ChatOpenAI( | |
| model_name="gpt-3.5-turbo", | |
| temperature=0, | |
| api_key=api_key | |
| ) | |
| # Initialize memories | |
| chat_memory = ConversationBufferMemory( | |
| memory_key="chat_history", | |
| return_messages=True | |
| ) | |
| query_memory = SimpleMemory() | |
| # Initialize planning agent with both memories | |
| planning_agent.initialize_planning_agent(llm, chat_memory, query_memory) | |
| logger.info("Components initialized successfully") | |
| def process_query(query, history): | |
| try: | |
| # Restore chat history from Gradio's history | |
| 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) | |
| # Store original query in query memory | |
| query_memory.memories['original_query'] = query | |
| # Execute query through planning agent | |
| response = planning_agent.execute(query) | |
| # Add current interaction to chat memory | |
| 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() |