suayptalha's picture
Update app.py
fab8ffe verified
raw
history blame
2.16 kB
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()