Update app.py
Browse files
app.py
CHANGED
|
@@ -12,56 +12,52 @@ model_id = "google/gemma-2-9b-it"
|
|
| 12 |
# 2. PDF Hafızası Oluşturma
|
| 13 |
def initialize_hemdem():
|
| 14 |
if not os.path.exists("kulliyat.pdf"):
|
| 15 |
-
print("HATA: kulliyat.pdf
|
| 16 |
return None
|
| 17 |
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
|
|
|
| 28 |
|
| 29 |
-
#
|
| 30 |
vector_db = initialize_hemdem()
|
| 31 |
|
| 32 |
-
# 3. Sohbet Fonksiyonu
|
| 33 |
def chat(message, history):
|
| 34 |
if vector_db is None:
|
| 35 |
-
return "Sistem hatası: Külliyat dosyası yüklenemedi."
|
| 36 |
|
| 37 |
-
#
|
| 38 |
related_docs = vector_db.similarity_search(message, k=5)
|
| 39 |
context = "\n---\n".join([doc.page_content for doc in related_docs])
|
| 40 |
|
| 41 |
-
#
|
| 42 |
-
prompt = f"Sen Hemdem-i Gemini-yi Emre'sin. Emre'nin külliyat rehberisin.
|
| 43 |
|
| 44 |
try:
|
| 45 |
llm = HuggingFaceEndpoint(
|
| 46 |
repo_id=model_id,
|
| 47 |
-
huggingfacehub_api_token=hf_token
|
| 48 |
-
# Task parametresini kaldırdık veya 'conversational' yapabilirdik ama default bırakmak daha güvenli
|
| 49 |
-
timeout=300
|
| 50 |
)
|
| 51 |
-
|
| 52 |
-
return response
|
| 53 |
except Exception as e:
|
| 54 |
-
return f"Gemma şu an meşgul veya
|
| 55 |
|
| 56 |
-
# 4. Arayüz
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
type="messages", # Yeni Gradio standartlarına uygun
|
| 64 |
-
examples=["Bende şiirini açıklar mısın?", "Harf cerrahisi nedir?"],
|
| 65 |
-
)
|
| 66 |
|
| 67 |
-
|
|
|
|
|
|
| 12 |
# 2. PDF Hafızası Oluşturma
|
| 13 |
def initialize_hemdem():
|
| 14 |
if not os.path.exists("kulliyat.pdf"):
|
| 15 |
+
print("HATA: kulliyat.pdf bulunamadı!")
|
| 16 |
return None
|
| 17 |
|
| 18 |
+
try:
|
| 19 |
+
loader = PyMuPDFLoader("kulliyat.pdf")
|
| 20 |
+
docs = loader.load()
|
| 21 |
+
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
|
| 22 |
+
split_docs = text_splitter.split_documents(docs)
|
| 23 |
+
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
|
| 24 |
+
vector_db = FAISS.from_documents(split_docs, embeddings)
|
| 25 |
+
return vector_db
|
| 26 |
+
except Exception as e:
|
| 27 |
+
print(f"Hafıza oluşturma hatası: {e}")
|
| 28 |
+
return None
|
| 29 |
|
| 30 |
+
# Global hafıza
|
| 31 |
vector_db = initialize_hemdem()
|
| 32 |
|
| 33 |
+
# 3. Sohbet Fonksiyonu (Gradio Eski Versiyon Uyumu)
|
| 34 |
def chat(message, history):
|
| 35 |
if vector_db is None:
|
| 36 |
+
return "Sistem hatası: Külliyat dosyası yüklenemedi veya bulunamadı."
|
| 37 |
|
| 38 |
+
# Dökümandan ilgili parçaları bul
|
| 39 |
related_docs = vector_db.similarity_search(message, k=5)
|
| 40 |
context = "\n---\n".join([doc.page_content for doc in related_docs])
|
| 41 |
|
| 42 |
+
# Prompt
|
| 43 |
+
prompt = f"Sen Hemdem-i Gemini-yi Emre'sin. Emre'nin külliyat rehberisin. DÖKÜMANLAR:\n{context}\n\nSORU: {message}"
|
| 44 |
|
| 45 |
try:
|
| 46 |
llm = HuggingFaceEndpoint(
|
| 47 |
repo_id=model_id,
|
| 48 |
+
huggingfacehub_api_token=hf_token
|
|
|
|
|
|
|
| 49 |
)
|
| 50 |
+
return llm.invoke(prompt)
|
|
|
|
| 51 |
except Exception as e:
|
| 52 |
+
return f"Gemma şu an meşgul (veya erişim izni bekliyor): {str(e)}"
|
| 53 |
|
| 54 |
+
# 4. Arayüz (En Sade Format)
|
| 55 |
+
demo = gr.ChatInterface(
|
| 56 |
+
fn=chat,
|
| 57 |
+
title="💜 Hemdem-i Şir",
|
| 58 |
+
description="Emre'nin Külliyat Rehberi (Gemma 2)",
|
| 59 |
+
examples=["Bende şiirini açıklar mısın?", "Harf cerrahisi nedir?"]
|
| 60 |
+
)
|
|
|
|
|
|
|
|
|
|
| 61 |
|
| 62 |
+
if __name__ == "__main__":
|
| 63 |
+
demo.launch()
|