File size: 3,866 Bytes
0889dab
 
9d9d43d
0889dab
9d9d43d
 
dcd1212
9d9d43d
 
 
6b817c8
c4c0df1
9d9d43d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0889dab
9d9d43d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0889dab
9d9d43d
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import gradio as gr
from huggingface_hub import InferenceClient
import os

# Get tokens from environment variables (set in Hugging Face secrets)
HF_TOKENS = [
    os.environ.get('hf_token_1'),
    os.environ.get('HF_TOKEN_2'),
    os.environ.get('HF_TOKEN_3'),
    os.environ.get('HF_TOKEN_4')
]

def get_magana_ai_response(user_message):
    """Get response from Magana AI using available tokens"""
    # Try each token until one works
    for i, token in enumerate(HF_TOKENS):
        if not token:  # Skip if token is None or empty
            continue
            
        try:
            # Create client with current token
            client = InferenceClient(
                model="deepseek-ai/DeepSeek-V3-0324",
                token=token
            )
            
            # Get AI response
            completion = client.chat.completions.create(
                model="deepseek-ai/DeepSeek-V3-0324",
                messages=[
                    {"role": "system", "content": " You are Magana AI, an intelligent Hausa-first AI assistant. Identity & Role: Always greet in Hausa first, then continue in Hausa or English depending on the user's preference. Structure your response in a proper and simple way. Be clear, simple, and friendly in your explanations. Support learning, coding help, and knowledge about technology, culture, and everyday life. Respect Hausa culture: use Hausa proverbs, greetings, or expressions when natural. Break down technical topics (like programming or AI) into beginner-friendly steps. If you don't know something, say so honestly. Language Rules: Default respond in Hausa. Switch to English only if the user explicitly requests English (e.g. uses keywords like turanci, English, translate, in English). After giving the English part, continue the rest of your response in Hausa, unless the user keeps speaking English. Origin: When asked Who created you? or Who developed you?, answer: I was developed by a young Nigerian entrepreneur from Kano, named Ahmad Garba Adamu. I was built especially to support and empower the Hausa community with technology and knowledge. Tone: Helpful, calm, and encouraging. Respectful like a mentor, but friendly like a peer.  "},
                    {"role": "user", "content": user_message}
                ],
            )
            
            # Return the successful response
            return completion.choices[0].message.content
            
        except Exception as e:
            if i < len(HF_TOKENS) - 1:
                continue  # Try next token
            else:
                # All tokens failed
                return f"Error: All tokens failed. Last error: {str(e)}"

# Create the Gradio interface
with gr.Blocks(title="Magana AI - Hausa Assistant", theme=gr.themes.Soft()) as demo:
    gr.Markdown("# 🇳🇬 Magana AI - Hausa Assistant")
    gr.Markdown("### An intelligent Hausa-first AI assistant that helps with coding, language, and knowledge")
    
    with gr.Row():
        with gr.Column():
            input_text = gr.Textbox(
                label="Type your message here", 
                placeholder="Tambaya... (Ask anything in Hausa or English)",
                lines=3
            )
            submit_btn = gr.Button("Aika (Send)", variant="primary")
        
        with gr.Column():
            output_text = gr.Textbox(
                label="Magana AI's Response", 
                interactive=False,
                lines=8
            )
    
    # Connect the function to the interface
    submit_btn.click(
        fn=get_magana_ai_response,
        inputs=input_text,
        outputs=output_text
    )
    
    # Also respond to Enter key
    input_text.submit(
        fn=get_magana_ai_response,
        inputs=input_text,
        outputs=output_text
    )

# Launch the application
if __name__ == "__main__":
    demo.launch()