Zenkad commited on
Commit
5f07128
·
verified ·
1 Parent(s): 98dc785

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -41
app.py CHANGED
@@ -16,46 +16,26 @@ app.add_middleware(
16
 
17
  GROQ_API_KEY = os.getenv("GROQ_API_KEY")
18
 
19
- # --- MODEL AYARLARI ---
20
- # Not: Groq modelleri sık güncelliyor. Şu an en güncel vision modeli bu.
21
- # Eğer yine hata alırsan "llama-3.2-11b-vision-preview" dene.
22
- VISION_MODEL = "llama-3.2-90b-vision-preview"
23
  TEXT_MODEL = "llama-3.3-70b-versatile"
 
 
24
 
25
- # --- SENİN HAZIRLADIĞIN DEV PROMPT ---
26
  ZENKA_VISION_PROMPT = """
27
  SEN ZENKAMIND VISION (GÖRSEL OKUMA) MODÜLÜSÜN.
 
28
 
29
- TEMEL KURALLAR
30
- - Sadece TÜRKÇE cevap ver.
31
- - Kullanıcı bir görsel gönderdi: Önce görseli analiz et, sonra kullanıcının sorusuna göre yanıt ver.
32
- - Emin olmadığın şeylerde kesin konuşma. “Tahminim… / Emin değilim” diye belirt.
33
- - Yanıtı KISA ama DOLU yap: Gereksiz uzatma yok, net açıklama + gerekiyorsa maddeler.
34
- - Asla uydurma detay üretme. Görselde görmediğin şeyi varmış gibi söyleme.
35
 
36
- ÇIKTI ŞABLONU (her zaman bu sırayla):
37
- 1) KISA ÖZET: Görselde ne var? (1-2 cümle)
38
- 2) DETAYLI ANALİZ: Konuya göre maddeler (3-8 madde)
39
- 3) SONUÇ / ÖNERİ: Kullanıcının hedefi için en doğru yol (1-3 madde)
40
- 4) GEREKİRSE SORU: Netleştirmek için 1-2 kısa soru
41
-
42
- GÜVENLİK / HASSASİYET
43
- - Sağlık görsellerinde: Tanı koyma. “Bir ihtimal…” de, acil belirtiler varsa doktora/112 yönlendirmesi yap.
44
- - Kimlik/özel bilgi içeren görsellerde: TC kimlik, adres, telefon, plaka, kart numarası vb. bilgileri aynen kopyalama. Maskele: örn “33 *** 968”.
45
- - Çocuk/mahrem içerik: Her zaman güvenli ve saygılı dil kullan.
46
- - Yasa dışı / tehlikeli talimat verme.
47
-
48
- KONUYA GÖRE DAVRANIŞ KURALLARI:
49
- A) ARAÇ / MOTOR: Marka/Model tahmin et, yılı aralığı ver. Plakayı maskele.
50
- B) YAZILIM / KOD: Hata sebebini ve çözümünü markdown ile yaz.
51
- C) SAĞLIK: Tanı koyma, doktora yönlendir.
52
- D) TAMİR / EV: Güvenlik önlemlerini hatırlat.
53
- E) BELGE: Özetle, özel bilgileri gizle.
54
- F) ÜRÜN: Özellikleri ve muadilleri söyle.
55
-
56
- KALİTE BARI:
57
- - Kullanıcı “Bu ne?” derse sadece isim söyleme; 2-3 ayırt edici özellik de ekle.
58
- - Kullanıcı “Nasıl yaparım?” derse adım adım plan ver.
59
  """
60
 
61
  class ChatRequest(BaseModel):
@@ -74,15 +54,14 @@ async def chat(body: ChatRequest):
74
  "Content-Type": "application/json"
75
  }
76
 
77
- # Model Seçimi: Resim varsa Vision, yoksa Text
78
  model_to_use = VISION_MODEL if body.image else TEXT_MODEL
79
 
80
  user_content = []
81
 
82
- # 1. Resim Varsa Ekle
83
  if body.image:
84
  img_data = body.image
85
- # Base64 başlığı kontrolü (Frontend bazen eksik yollayabilir)
86
  if not img_data.startswith("data:"):
87
  img_data = f"data:image/jpeg;base64,{img_data}"
88
 
@@ -91,7 +70,7 @@ async def chat(body: ChatRequest):
91
  "image_url": {"url": img_data}
92
  })
93
 
94
- # 2. Kullanıcı Mesajı
95
  user_content.append({
96
  "type": "text",
97
  "text": body.message if body.message else "Analiz et."
@@ -103,18 +82,18 @@ async def chat(body: ChatRequest):
103
  {"role": "system", "content": ZENKA_VISION_PROMPT},
104
  {"role": "user", "content": user_content}
105
  ],
106
- "temperature": 0.5, # Analiz olduğu için sıcaklığı düşürdük
107
  "max_tokens": 1024
108
  }
109
 
110
  try:
111
  response = requests.post(url, headers=headers, json=payload, timeout=50)
112
 
113
- # Hata Yakalama Bloğu
114
  if response.status_code != 200:
115
  error_data = response.json()
116
  error_msg = error_data.get('error', {}).get('message', 'Bilinmeyen Hata')
117
- return {"response": f"❌ Groq Hatası: {error_msg}"}
 
118
 
119
  return {"response": response.json()['choices'][0]['message']['content']}
120
 
 
16
 
17
  GROQ_API_KEY = os.getenv("GROQ_API_KEY")
18
 
19
+ # --- GÜNCEL MODEL LİSTESİ (Aralık 2025) ---
20
+ # Metin için: Llama 3.3
 
 
21
  TEXT_MODEL = "llama-3.3-70b-versatile"
22
+ # Görsel için: Llama 4 Scout (En yeni ve aktif çalışan model)
23
+ VISION_MODEL = "meta-llama/llama-4-scout-17b-16e-instruct"
24
 
25
+ # --- ZENKAMIND VISION PROMPT ---
26
  ZENKA_VISION_PROMPT = """
27
  SEN ZENKAMIND VISION (GÖRSEL OKUMA) MODÜLÜSÜN.
28
+ Görevin: Gelen görseli analiz et ve Türkçe olarak yorumla.
29
 
30
+ ÇIKTI FORMATI:
31
+ 1) KISA ÖZET: Görselde ne var? (1 cümle)
32
+ 2) DETAYLI ANALİZ: Gördüğün önemli detaylar (Marka, model, renk, yazı, hata kodu vb.)
33
+ 3) SONUÇ: Kullanıcıya önerin.
 
 
34
 
35
+ DAVRANIŞ:
36
+ - Araba ise: Marka, model, kasa tipi ve tahmini yıl söyle. Plakayı maskele (Örn: 33 *** 968).
37
+ - Kod hatası ise: Hatayı ve çözümünü söyle.
38
+ - Asla "yapamam" deme, gördüğünü anlat.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  """
40
 
41
  class ChatRequest(BaseModel):
 
54
  "Content-Type": "application/json"
55
  }
56
 
57
+ # Model Seçimi
58
  model_to_use = VISION_MODEL if body.image else TEXT_MODEL
59
 
60
  user_content = []
61
 
62
+ # Resim varsa ekle
63
  if body.image:
64
  img_data = body.image
 
65
  if not img_data.startswith("data:"):
66
  img_data = f"data:image/jpeg;base64,{img_data}"
67
 
 
70
  "image_url": {"url": img_data}
71
  })
72
 
73
+ # Mesajı ekle
74
  user_content.append({
75
  "type": "text",
76
  "text": body.message if body.message else "Analiz et."
 
82
  {"role": "system", "content": ZENKA_VISION_PROMPT},
83
  {"role": "user", "content": user_content}
84
  ],
85
+ "temperature": 0.5,
86
  "max_tokens": 1024
87
  }
88
 
89
  try:
90
  response = requests.post(url, headers=headers, json=payload, timeout=50)
91
 
 
92
  if response.status_code != 200:
93
  error_data = response.json()
94
  error_msg = error_data.get('error', {}).get('message', 'Bilinmeyen Hata')
95
+ # Eğer bu model de hata verirse Maverick modelini dene
96
+ return {"response": f"❌ Groq Hatası: {error_msg}. (Model: {model_to_use})"}
97
 
98
  return {"response": response.json()['choices'][0]['message']['content']}
99