Spaces:
Sleeping
Sleeping
File size: 2,081 Bytes
7f843eb c3742e3 7f843eb c3742e3 7f843eb c3742e3 7f843eb c3742e3 7f843eb c3742e3 7f843eb c3742e3 7f843eb c3742e3 7f843eb c3742e3 7f843eb c3742e3 7f843eb c3742e3 7f843eb c3742e3 7f843eb c3742e3 7f843eb c3742e3 7f843eb |
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 |
# β
Install required packages
!pip install -q openai gradio
# β
Imports
from openai import OpenAI
import gradio as gr
import os
# β
Load API key from Hugging Face Secrets
api_key = os.getenv("OPENROUTER_API_KEY")
if not api_key:
raise ValueError("β οΈ OPENROUTER_API_KEY not found. Add it in HF Spaces > Settings > Secrets.")
# β
OpenRouter API client setup
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=api_key,
)
# β
Chat function using Kimi-K2
def ask_kimi(prompt, history=[]):
messages = [{"role": "system", "content": "Wewe ni msaidizi mzuri wa kujifunza programu kwa Kiswahili."}]
for user, bot in history:
messages.append({"role": "user", "content": user})
messages.append({"role": "assistant", "content": bot})
messages.append({"role": "user", "content": prompt})
completion = client.chat.completions.create(
model="moonshotai/kimi-k2:free",
messages=messages,
extra_headers={
"HTTP-Referer": "https://your-site.com",
"X-Title": "NextDev Academy",
}
)
reply = completion.choices[0].message.content
history.append((prompt, reply))
return reply, history
# β
Gradio UI with submit button
with gr.Blocks() as demo:
gr.Markdown("## π€ Kimi K2 Chatbot kwa Kiswahili (Powered by OpenRouter)")
chatbot = gr.Chatbot()
state = gr.State([])
with gr.Row():
msg = gr.Textbox(
placeholder="Uliza swali kuhusu programu au teknolojia...",
show_label=False,
scale=4
)
submit = gr.Button("β‘οΈ Tuma", scale=1)
clear = gr.Button("π Anza upya")
# Chat submission logic
def user_submit(user_message, history):
response, updated_history = ask_kimi(user_message, history)
return updated_history, updated_history
msg.submit(user_submit, [msg, state], [chatbot, state])
submit.click(user_submit, [msg, state], [chatbot, state])
clear.click(lambda: ([], []), None, [chatbot, state])
demo.launch(css="custom.css") |