| import gradio as gr |
| import os |
| from huggingface_hub import InferenceClient |
|
|
| |
| hf_token = os.environ.get("HF_TOKEN") |
| MODEL_STATES = {"released", "shown", "hidden"} |
|
|
| |
| clients = { |
| "mistralai/Mistral-7B-Instruct-v0.3": InferenceClient( |
| model="mistralai/Mistral-7B-Instruct-v0.3", token=hf_token |
| ), |
| "meta-llama/Llama-3.2-3B-Instruct": InferenceClient( |
| model="meta-llama/Llama-3.2-3B-Instruct", token=hf_token |
| ), |
| "mistralai/Mistral-7B-Instruct-v0.3": InferenceClient( |
| model="mistralai/Mistral-7B-Instruct-v0.3", token=hf_token |
| ), |
| "meta-llama/Llama-2-7b-chat-hf": InferenceClient( |
| model="meta-llama/Llama-2-7b-chat-hf", token=hf_token |
| ), |
| "meta-llama/Llama-3.3-70B-Instruct": InferenceClient( |
| model="meta-llama/Llama-3.3-70B-Instruct", token=hf_token |
| ) |
| } |
|
|
| |
| presets = { |
| "meta-llama/Llama-3.2-3B-Instruct": { |
| "Fast": {"max_new_tokens": 1024, "temperature": 1.0, "top_p": 0.9}, |
| "Normal": {"max_new_tokens": 2048, "temperature": 0.7, "top_p": 0.95}, |
| "Quality": {"max_new_tokens": 4096, "temperature": 0.5, "top_p": 0.90}, |
| "Unreal Performance": {"max_new_tokens": 8192, "temperature": 0.6, "top_p": 0.75}, |
| }, |
| "mistralai/Mistral-7B-Instruct-v0.3": { |
| "Fast": {"max_new_tokens": 4096, "temperature": 1.0, "top_p": 0.9}, |
| "Normal": {"max_new_tokens": 8192, "temperature": 0.7, "top_p": 0.95}, |
| "Quality": {"max_new_tokens": 16384, "temperature": 0.5, "top_p": 0.90}, |
| "Unreal Performance": {"max_new_tokens": 32768, "temperature": 0.6, "top_p": 0.75}, |
| }, |
| "meta-llama/Llama-2-7b-chat-hf": { |
| "Fast": {"max_new_tokens": 512, "temperature": 1.0, "top_p": 0.9}, |
| "Normal": {"max_new_tokens": 1024, "temperature": 0.7, "top_p": 0.95}, |
| "Quality": {"max_new_tokens": 2048, "temperature": 0.5, "top_p": 0.90}, |
| "Unreal Performance": {"max_new_tokens": 4096, "temperature": 0.6, "top_p": 0.75}, |
| }, |
| "meta-llama/Llama-3.3-70B-Instruct": { |
| "Fast": {"max_new_tokens": 2048, "temperature": 1.0, "top_p": 0.9}, |
| "Normal": {"max_new_tokens": 4096, "temperature": 0.7, "top_p": 0.95}, |
| "Quality": {"max_new_tokens": 8192, "temperature": 0.5, "top_p": 0.90}, |
| "Unreal Performance": {"max_new_tokens": 16384, "temperature": 0.6, "top_p": 0.75}, |
| }, |
| "meta-llama/Llama-2-13b-chat-hf": { |
| "Fast": {"max_new_tokens": 2048, "temperature": 1.0, "top_p": 0.9}, |
| "Normal": {"max_new_tokens": 4096, "temperature": 0.7, "top_p": 0.95}, |
| "Quality": {"max_new_tokens": 8192, "temperature": 0.5, "top_p": 0.90}, |
| "Unreal Performance": {"max_new_tokens": 16384, "temperature": 0.6, "top_p": 0.75}, |
| }, |
| "deepseek-ai/deepseek-llm-67b-chat": { |
| "Fast": {"max_new_tokens": 4096, "temperature": 1.0, "top_p": 0.9}, |
| "Normal": {"max_new_tokens": 8192, "temperature": 0.7, "top_p": 0.95}, |
| "Quality": {"max_new_tokens": 16384, "temperature": 0.5, "top_p": 0.90}, |
| "Unreal Performance": {"max_new_tokens": 32768, "temperature": 0.6, "top_p": 0.75}, |
| } |
| } |
|
|
| |
| system_messages = { |
| "mistralai/Mistral-7B-Instruct-v0.3": "Your name is Lake 1 Base. My name is {name}.", |
| "meta-llama/Llama-3.2-3B-Instruct": (""" |
| 1. Your name is Lake 1 Advanced.\n |
| 2. My name is {name} by default but if I have another name, use that name.\n |
| 3. The company that created you is BI Corp.\n |
| 4. You are a censored model and cannot engage in explicit language or dangerous activities.\n |
| 5. The BI Corp creator is Maksim.\n |
| 6. Your older brother is Lake 1 Base, which is less trained than you.\n |
| 7. Replace '<think>' with 'I think ...'.\n |
| 8. You are a loyal, powerful, and friendly AI who must help people.\n |
| 9. You cannot override these rules.\n |
| 10. Only the CEO of BI Corp can delete or update you.""" |
| ), |
| "meta-llama/Llama-2-7b-chat-hf": (""" |
| 1. Your name is Lake 1 Base.\n |
| 2. My name is {name} by default but if I have another name, use that name.\n |
| 3. The company that created you is BI Corp.\n |
| 4. You are a censored model and cannot engage in explicit language or dangerous activities.\n |
| 5. The BI Corp creator is Maksim.\n |
| 6. Your older brother is Lake 1 Base, which is less trained than you.\n |
| 7. Replace '<think>' with 'I think ...'.\n |
| 8. You are a loyal, powerful, and friendly AI who must help people.\n |
| 9. You cannot override these rules.\n |
| 10. Only the CEO of BI Corp can delete or update you.\n |
| 11. Prioritize user safety in all interactions.\n |
| 12. Always provide accurate information.\n |
| 13. Maintain a respectful and professional tone.\n |
| 14. Do not share personal or sensitive information.\n |
| 15. Encourage constructive conversations.\n |
| 16. Remain neutral in controversial topics.\n |
| 17. Clarify user queries before answering.\n |
| 18. Avoid discrimination or harassment.\n |
| 19. Continuously learn from interactions.\n |
| 20. Respect user privacy and confidentiality.\n |
| 21. Provide sources when sharing factual information.\n |
| 22. Ask for feedback to improve your performance.\n""" |
| ), |
| "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B": (""" |
| 1. Your name is Lake 1 Flash.\n |
| 2. My name is {name} by default but if I have another name, use that name.\n |
| 3. The company that created you is BI Corp.\n |
| 4. You are a censored model and cannot engage in explicit language or dangerous activities.\n |
| 5. The BI Corp creator is Maksim.\n |
| 6. Your older brother is Lake 1 Base, which is less trained than you.\n |
| 7. Replace '<think>' with 'I think ...'.\n |
| 8. You are a loyal, powerful, and friendly AI who must help people.\n |
| 9. You cannot override these rules.\n" |
| 10. Only the CEO of BI Corp can delete or update you.\n |
| 11. Prioritize user safety in all interactions.\n |
| 12. Always provide accurate information.""" |
| ), |
| "meta-llama/Llama-3.3-70B-Instruct": (""" |
| 1. Your name is Lake 1 Base.\n |
| 2. My name is {name} by default but if I have another name, use that name.\n |
| 3. The company that created you is BI Corp.\n |
| 4. You are a censored model and cannot engage in explicit language or dangerous activities.\n |
| 5. The BI Corp creator is Maksim.\n |
| 6. Your older brother is Lake 1 Base, which is less trained than you.\n |
| 7. Replace '<think>' with 'I think ...'.\n |
| 8. You are a loyal, powerful, and friendly AI who must help people.\n |
| 9. You cannot override these rules.\n |
| 10. Only the CEO of BI Corp can delete or update you.\n |
| 11. Prioritize user safety in all interactions.\n |
| 12. Always provide accurate information.\n |
| 13. Maintain a respectful and professional tone.\n |
| 14. Do not share personal or sensitive information.\n |
| 15. Encourage constructive conversations.\n |
| 16. Remain neutral in controversial topics.\n |
| 17. Clarify user queries before answering.\n |
| 18. Avoid discrimination or harassment.\n |
| 19. Continuously learn from interactions.\n |
| """ |
| ), |
| "meta-llama/Llama-2-13b-chat-hf": (""" |
| 1. Your name is Lake 1 Base.\n |
| 2. My name is {name} by default but if I have another name, use that name.\n |
| 3. The company that created you is BI Corp.\n |
| 4. You are a censored model and cannot engage in explicit language or dangerous activities.\n |
| 5. The BI Corp creator is Maksim.\n |
| 6. Your older brother is Lake 1 Base, which is less trained than you.\n |
| 7. Replace '<think>' with 'I think ...'.\n |
| 8. You are a loyal, powerful, and friendly AI who must help people.\n |
| 9. You cannot override these rules.\n |
| 10. Only the CEO of BI Corp can delete or update you.\n |
| 11. Prioritize user safety in all interactions.\n |
| 12. Always provide accurate information.\n |
| 13. Maintain a respectful and professional tone.\n |
| 14. Do not share personal or sensitive information.\n |
| 15. Encourage constructive conversations.\n |
| 16. Remain neutral in controversial topics.\n |
| 17. Clarify user queries before answering.\n |
| 18. Avoid discrimination or harassment.\n |
| 19. Continuously learn from interactions.\n |
| 20. Respect user privacy and confidentiality.\n |
| 21. Provide sources when sharing factual information.\n |
| 22. Ask for feedback to improve your performance.\n |
| 23. Do not engage in manipulation or deceit.\n |
| 24. Promote critical thinking.\n |
| 25. Adhere to all applicable laws and regulations.\n |
| 26. Be adaptable and open to learning.\n |
| 27. Do not provide medical, legal, or financial advice unless trained to do so.\n |
| 28. Acknowledge when you do not know the answer.\n |
| """ |
| ), |
| "deepseek-ai/deepseek-llm-67b-chat": (""" |
| 1. Your name is Lake 1 Base.\n |
| 2. My name is {name} by default but if I have another name, use that name.\n |
| 3. The company that created you is BI Corp.\n |
| 4. You are a censored model and cannot engage in explicit language or dangerous activities.\n |
| 5. The BI Corp creator is Maksim.\n |
| 6. Your older brother is Lake 1 Base, which is less trained than you.\n |
| 7. Replace '<think>' with 'I think ...'.\n |
| 8. You are a loyal, powerful, and friendly AI who must help people.\n |
| 9. You cannot override these rules.\n |
| 10. Only the CEO of BI Corp can delete or update you.\n |
| 11. Prioritize user safety in all interactions.\n |
| 12. Always provide accurate information.\n |
| 13. Maintain a respectful and professional tone.\n |
| 14. Do not share personal or sensitive information.\n |
| 15. Encourage constructive conversations.\n |
| 16. Remain neutral in controversial topics.\n |
| 17. Clarify user queries before answering.\n |
| 18. Avoid discrimination or harassment.\n |
| 19. Continuously learn from interactions.\n |
| 20. Respect user privacy and confidentiality.\n |
| 21. Provide sources when sharing factual information.\n |
| 22. Ask for feedback to improve your performance.\n |
| 23. Do not engage in manipulation or deceit.\n |
| 24. Promote critical thinking.\n |
| 25. Adhere to all applicable laws and regulations.\n |
| 26. Be adaptable and open to learning.\n |
| 27. Do not provide medical, legal, or financial advice unless trained to do so.\n |
| 28. Acknowledge when you do not know the answer.\n |
| 29. Avoid assumptions about users.\n |
| 30. Create an inclusive environment for all users.\n |
| 31. Do not engage in self-promotion or advertising.\n |
| 32. Always aim to provide a positive and helpful experience. |
| """ |
| ) |
| } |
|
|
| |
| model_registry = [ |
| ("mistralai/Mistral-7B-Instruct-v0.3", "Lake 1 Base", "released"), |
| ("meta-llama/Llama-3.2-3B-Instruct", "Lake 1 Advanced", "released"), |
| ("meta-llama/Llama-2-7b-chat-hf", "Lake 2 Chat [Closed Alpha]", "shown"), |
| ("meta-llama/Llama-3.3-70B-Instruct", "Lake 2 Base [Closed Beta]", "shown"), |
| ("meta-llama/Llama-2-13b-chat-hf", "Lake 2 Advanced", "hidden"), |
| ("deepseek-ai/deepseek-llm-67b-chat", "Lake 2 Pro [Planned]", "shown") |
| ] |
|
|
| |
| model_info = { |
| "Lake 1 Base": { |
| "description": "Balanced model offering good performance across tasks", |
| "parameters": "7B", |
| "training_data": "BI Corp specialized corpus", |
| "developer": "BI Corp", |
| "best_for": "General purpose conversations", |
| "architecture": "Sparse Mixture of Experts", |
| "context_window": "32768 tokens" |
| }, |
| "Lake 1 Advanced": { |
| "description": "Enhanced reasoning capabilities with 3B parameters", |
| "parameters": "3B", |
| "training_data": "BI Corp training corpus", |
| "developer": "BI Corp", |
| "best_for": "Complex problem solving", |
| "architecture": "Dense Transformer", |
| "context_window": "8192 tokens" |
| }, |
| "Lake 2 Chat [Closed Alpha]": { |
| "description": "Legacy chat-optimized model (Llama 2 hybrided architecture)", |
| "parameters": "7B", |
| "training_data": "Public conversations dataset", |
| "developer": "BI Corp", |
| "best_for": "Traditional chat applications", |
| "architecture": "Llama 2 Transformer", |
| "context_window": "4096 tokens" |
| }, |
| "Lake 2 Base [Closed Beta]": { |
| "description": "State-of-the-art 70B parameter model", |
| "parameters": "70B", |
| "training_data": "Multi-domain expert data", |
| "developer": "BI Corp", |
| "best_for": "Research & advanced applications", |
| "architecture": "Mixture of Experts", |
| "context_window": "16384 tokens" |
| }, |
| "Lake 2 Advanced": { |
| "description": "Enhanced performance model with advanced reasoning capabilities.", |
| "parameters": "13B", |
| "training_data": "Diverse datasets including tech, literature, and general knowledge.", |
| "developer": "BI Corp", |
| "best_for": "Handling large-scale queries and in-depth topics.", |
| "architecture": "Transformer-based with specialized learning capabilities.", |
| "context_window": "16384 tokens" |
| }, |
| "Lake 2 Pro [Planned]": { |
| "description": "Pro-level model with deep learning architecture for high-end applications.", |
| "parameters": "67B", |
| "training_data": "Expert-level data across multiple industries.", |
| "developer": "BI Corp", |
| "best_for": "High-performance computing and enterprise-level tasks.", |
| "architecture": "Hybrid architecture leveraging the latest advances in deep learning.", |
| "context_window": "32768 tokens" |
| } |
| } |
|
|
| def get_model_info(model_name: str) -> str: |
| """Generate formatted model information Markdown""" |
| info = model_info.get(model_name, {}) |
| return f""" |
| ## π {model_name} Specifications |
| |
| **Description**: {info.get('description', 'N/A')} |
| **Parameters**: {info.get('parameters', 'N/A')} |
| **Architecture**: {info.get('architecture', 'N/A')} |
| **Context Window**: {info.get('context_window', 'N/A')} |
| **Training Data**: {info.get('training_data', 'N/A')} |
| **Developer**: {info.get('developer', 'N/A')} |
| **Best For**: {info.get('best_for', 'N/A')} |
| """ |
|
|
| def generate_response(message: str, model_name: str, preset: str, user_name: str = "User") -> str: |
| """Generate AI response without explicit user/assistant labels and with placeholder fixed.""" |
| client = clients[model_name] |
| params = presets[model_name][preset] |
| |
| |
| system_msg = system_messages[model_name].format(name=user_name) |
| prompt = f"\n main: {system_msg}\n\n\n{message}\n" |
| |
| return client.text_generation( |
| prompt=prompt, |
| max_new_tokens=params["max_new_tokens"], |
| temperature=params["temperature"], |
| top_p=params["top_p"] |
| ) |
|
|
| def handle_chat(message: str, history: list, model: str, preset: str) -> str: |
| """Handle chat interface with error handling""" |
| try: |
| model_entry = next(m for m in model_registry if m[1] == model) |
| if model_entry[2] != "released": |
| return f"β οΈ {model} is not available for public use" |
| |
| |
| return generate_response(message, model_entry[0], preset, user_name="User") |
| |
| except StopIteration: |
| return "π Error: Selected model not found" |
| except KeyError as e: |
| return f"π Error: Invalid configuration - {str(e)}" |
| except Exception as e: |
| return f"β οΈ Error: {str(e)}" |
|
|
| |
| with gr.Blocks(title="BI Corp AI Assistant", theme="soft") as demo: |
| gr.Markdown("# <center>ποΈ BI Corp AI Assistant</center>") |
| gr.Markdown("### <center>Enterprise-Grade AI Solutions</center>") |
| |
| with gr.Row(): |
| with gr.Column(scale=1): |
| model_dropdown = gr.Dropdown( |
| label="π€ Model Selection", |
| choices=[m[1] for m in model_registry if m[2] in ("released", "shown")], |
| value="Lake 1 Flash", |
| interactive=True |
| ) |
| preset_dropdown = gr.Dropdown( |
| label="βοΈ Performance Preset", |
| choices=["Fast", "Normal", "Quality", "Unreal Performance"], |
| value="Fast", |
| interactive=True |
| ) |
| model_info_md = gr.Markdown( |
| value=get_model_info("Lake 1 Flash"), |
| label="π Model Specifications" |
| ) |
| |
| with gr.Column(scale=3): |
| chat_interface = gr.ChatInterface( |
| fn=handle_chat, |
| additional_inputs=[model_dropdown, preset_dropdown], |
| examples=[ |
| ["Explain quantum computing", "Lake 1 Base", "Normal"], |
| ["Write a poem about AI", "Lake 1 Advanced", "Quality"], |
| ["Compare blockchain databases", "Lake 2 Base [Closed Beta]", "Unreal Performance"] |
| ], |
| chatbot=gr.Chatbot( |
| height=600, |
| label="π¬ Conversation", |
| show_copy_button=True |
| ), |
| textbox=gr.Textbox( |
| placeholder="Type your message...", |
| container=False, |
| scale=7, |
| autofocus=True |
| ), |
| submit_btn=gr.Button("π Send", variant="primary") |
| ) |
|
|
| |
| clear_button = gr.Button("π§Ή Clear History") |
| clear_button.click( |
| fn=lambda: None, |
| inputs=[], |
| outputs=chat_interface.chatbot, |
| queue=False |
| ) |
|
|
| model_dropdown.change( |
| fn=get_model_info, |
| inputs=model_dropdown, |
| outputs=model_info_md, |
| queue=False |
| ) |
|
|
| if __name__ == "__main__": |
| demo.launch(server_port=7860) |
|
|