Spaces:
Runtime error
Runtime error
import gradio as gr | |
from gradio_client import Client, handle_file | |
# Moondream2 ve LLaMA API'lerine bağlanmak için Client'ları başlatıyoruz | |
moondream_client = Client("vikhyatk/moondream2") | |
llama_client = Client("goingyt/meta-llama-Llama-3.3-70B-Instruct") | |
# Sohbet geçmişini tutmak için bir değişken | |
history = [] | |
# Resim açıklama fonksiyonu | |
def describe_image(image, user_message): | |
global history | |
# Resmi Moondream2 API'sine gönderiyoruz | |
result = moondream_client.predict( | |
img=handle_file(image), | |
prompt="Describe this image.", | |
api_name="/answer_question" | |
) | |
# Moondream2'den alınan açıklamayı sisteme dahil ediyoruz | |
description = result # Moondream2'nin cevabını alıyoruz | |
# LLaMA API'sine açıklamayı ve kullanıcının mesajını gönderiyoruz | |
history.append(("User", user_message)) | |
history.append(("Assistant", description)) | |
llama_result = llama_client.predict( | |
message=user_message, | |
history=history, | |
api_name="/chat" | |
) | |
# Sonucu döndürüyoruz | |
return description + "\n\nAssistant: " + llama_result | |
# Sohbet fonksiyonu, resim yüklenip yüklenmediğine göre yönlendirecek | |
def chat_or_image(image, user_message): | |
global history | |
# Resim yüklenmişse, önce açıklama alıp sonra LLaMA'ya gönderiyoruz | |
if image: | |
return describe_image(image, user_message) | |
else: | |
# Resim yoksa, direkt LLaMA'ya mesajı gönderiyoruz | |
history.append(("User", user_message)) | |
llama_result = llama_client.predict( | |
message=user_message, | |
history=history, | |
api_name="/chat" | |
) | |
return llama_result | |
# Gradio arayüzü | |
demo = gr.Interface( | |
fn=chat_or_image, # Hem resim hem de metin için kullanılacak fonksiyon | |
inputs=[ | |
gr.Image(type="filepath", label="Resim Yükle (isteğe bağlı)"), # Resim yükleme | |
gr.Textbox(label="Soru Sor ya da Konuş", placeholder="Soru sor...", lines=2) # Metin girişi | |
], | |
outputs="text", # Çıktı metin olarak dönecek | |
) | |
if __name__ == "__main__": | |
demo.launch() | |