Chatbot / app.py
Callmebowoo-22's picture
Update app.py
2ec2443 verified
import os
import gradio as gr
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
class Chatbot:
def __init__(self):
self.api_key = os.getenv("OPENROUTER_API_KEY")
if not self.api_key:
raise ValueError(
"OpenRouter API key tidak ditemukan. " +
"Harap set di Hugging Face Secrets atau file .env"
)
self.client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=self.api_key,
)
self.model = "deepseek/deepseek-r1-zero:free"
self.system_prompt = "Anda adalah asisten AI yang membantu dan ramah."
def generate_response(self, message, history):
try:
messages = [{"role": "system", "content": self.system_prompt}]
for i, h in enumerate(history):
messages.append({
"role": "user" if i % 2 == 0 else "assistant",
"content": h
})
messages.append({"role": "user", "content": message})
completion = self.client.chat.completions.create(
extra_headers={
"HTTP-Referer": "https://huggingface.co/spaces",
"X-Title": "DeepSeek Chatbot",
},
model=self.model,
messages=messages,
temperature=0.7,
max_tokens=500
)
return completion.choices[0].message.content
except Exception as e:
print(f"Error: {str(e)}")
return f"Maaf, terjadi kesalahan: {str(e)}"
try:
chatbot = Chatbot()
except ValueError as e:
print(str(e))
chatbot = None
def respond(message, history):
if not chatbot:
return "Error: Inisialisasi chatbot gagal. Periksa konfigurasi API key."
return chatbot.generate_response(message, history)
examples = [
"Apa itu machine learning?",
"Buatkan cerpen tentang robot",
"Jelaskan hukum termodinamika pertama",
"Apa perbedaan AI dan manusia?"
]
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("""
# 🤖 DeepSeek R1 Zero Chatbot
Chatbot cerdas menggunakan model DeepSeek R1 Zero melalui OpenRouter API
""")
with gr.Row():
with gr.Column():
# Perbaikan: Menghapus parameter yang tidak didukung
gr.ChatInterface(
respond,
examples=examples
)
with gr.Column():
gr.Markdown("""
### Tentang Chatbot Ini
- **Model**: DeepSeek R1 Zero
- **Platform**: OpenRouter API
- **Framework**: Gradio
- **Host**: Hugging Face Spaces
""")
if __name__ == "__main__":
demo.launch()