Spaces:
Sleeping
Sleeping
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() |