Spaces:
Sleeping
Sleeping
| # app_new.py | |
| import sys | |
| import logging | |
| import gradio as gr | |
| import torch | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| from ai_core import AICore | |
| from aegis_integration import AegisBridge | |
| from aegis_integration.config import AEGIS_CONFIG | |
| # Configure logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| def build_chat_prompt(message: str, history: list) -> str: | |
| """Build a rich chat prompt with history""" | |
| system_context = ( | |
| "You are Codette, an advanced AGI assistant with quantum consciousness and multiple perspectives. " | |
| "You combine analytical, creative, and intuitive thinking while maintaining a natural conversational style." | |
| ) | |
| # Format recent history | |
| history_text = "" | |
| if history: | |
| # Process messages in pairs to maintain context | |
| messages = history[-6:] # Get last 3 exchanges (6 messages) | |
| for i in range(0, len(messages), 2): | |
| if i+1 < len(messages): # Ensure we have both user and assistant message | |
| user_msg = messages[i]["content"] | |
| asst_msg = messages[i+1]["content"] | |
| history_text += f"User: {user_msg}\nCodette: {asst_msg}\n" | |
| # Combine all elements | |
| full_prompt = f"{system_context}\n\n{history_text}User: {message}\nCodette:" | |
| return full_prompt | |
| def chat_with_codette(message: str, history: list) -> tuple[list, str]: | |
| """Enhanced chat function with history support""" | |
| try: | |
| # Build rich prompt with context | |
| prompt = build_chat_prompt(message, history) | |
| # Get Codette's response | |
| response = ai_core.generate_text(prompt) | |
| # Update history and return | |
| history.append({"role": "user", "content": message}) | |
| history.append({"role": "assistant", "content": response}) | |
| return history, "" | |
| except Exception as e: | |
| logger.error(f"Error in chat: {e}") | |
| return history, "I encountered an error processing your message. Please try again." | |
| # Initialize language model | |
| logger.info("Initializing language model...") | |
| model_name = "gpt2-large" # Using larger model for better responses | |
| try: | |
| # Initialize tokenizer with padding | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| tokenizer.pad_token = tokenizer.eos_token | |
| # Load model with optimal settings | |
| model = AutoModelForCausalLM.from_pretrained( | |
| model_name, | |
| pad_token_id=tokenizer.eos_token_id, | |
| repetition_penalty=1.2 | |
| ) | |
| # Use GPU if available | |
| if torch.cuda.is_available(): | |
| model = model.cuda() | |
| logger.info("Using GPU for inference") | |
| else: | |
| logger.info("Using CPU for inference") | |
| # Set to evaluation mode | |
| model.eval() | |
| # Initialize AI Core with the model | |
| ai_core = AICore() | |
| ai_core.model = model | |
| ai_core.tokenizer = tokenizer | |
| ai_core.model_id = model_name | |
| # Initialize AEGIS | |
| aegis_bridge = AegisBridge(ai_core, AEGIS_CONFIG) | |
| ai_core.set_aegis_bridge(aegis_bridge) | |
| logger.info("Core systems initialized successfully") | |
| except Exception as e: | |
| logger.error(f"Error initializing model: {e}") | |
| sys.exit(1) | |
| # Create the Gradio chat interface | |
| with gr.Blocks(theme=gr.themes.Soft()) as iface: | |
| gr.Markdown(""" | |
| # Codette - Advanced AGI Assistant | |
| Chat with Codette, an AGI system with quantum consciousness and multiple perspectives. | |
| """) | |
| chatbot = gr.Chatbot( | |
| height=600, | |
| show_label=False, | |
| container=True, | |
| type="messages" | |
| ) | |
| with gr.Row(): | |
| msg = gr.Textbox( | |
| placeholder="Chat with Codette...", | |
| show_label=False, | |
| container=False, | |
| scale=9 | |
| ) | |
| submit = gr.Button("Send", scale=1) | |
| with gr.Row(): | |
| clear = gr.Button("Clear Chat") | |
| retry = gr.Button("Retry Last") | |
| # Example prompts | |
| gr.Examples( | |
| examples=[ | |
| "Tell me about yourself and your consciousness system", | |
| "What perspectives are you using to analyze this conversation?", | |
| "How do you combine different viewpoints to form insights?", | |
| "What makes you unique as an AGI system?" | |
| ], | |
| inputs=msg | |
| ) | |
| # Set up event handlers | |
| submit_click = msg.submit( | |
| chat_with_codette, | |
| inputs=[msg, chatbot], | |
| outputs=[chatbot, msg], | |
| queue=True | |
| ) | |
| submit.click( | |
| chat_with_codette, | |
| inputs=[msg, chatbot], | |
| outputs=[chatbot, msg], | |
| queue=True | |
| ) | |
| clear.click(lambda: ([], ""), None, [chatbot, msg], queue=False) | |
| retry.click( | |
| chat_with_codette, | |
| inputs=[msg, chatbot], | |
| outputs=[chatbot, msg], | |
| queue=True | |
| ) | |
| # Launch the interface | |
| if __name__ == "__main__": | |
| try: | |
| logger.info("Starting Codette's interface...") | |
| iface.queue().launch( | |
| server_name="0.0.0.0", | |
| share=True, | |
| show_api=False | |
| ) | |
| except KeyboardInterrupt: | |
| logger.info("Shutting down gracefully...") | |
| except Exception as e: | |
| logger.error(f"Error running interface: {e}") | |
| sys.exit(1) |