MEO1 commited on
Commit
68e4bbc
·
verified ·
1 Parent(s): 8989928

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -37
app.py CHANGED
@@ -5,74 +5,63 @@ from langchain_text_splitters import RecursiveCharacterTextSplitter
5
  from langchain_huggingface import HuggingFaceEmbeddings, HuggingFaceEndpoint
6
  from langchain_community.vectorstores import FAISS
7
 
8
- # 1. Ayarlar ve Model Bağlantısı
9
- # ÖNEMLİ: Settings -> Variables kısmına 'HUGGINGFACEHUB_API_TOKEN' eklemelisin
10
  hf_token = os.getenv("HUGGINGFACEHUB_API_TOKEN")
11
  model_id = "google/gemma-2-9b-it"
12
 
13
- # 2. PDF Yükleme ve Hafıza Oluşturma
14
  def initialize_hemdem():
15
- # Buradaki 'kulliyat.pdf' ismini kendi yüklediğin dosya ismiyle aynı yap
16
  if not os.path.exists("kulliyat.pdf"):
 
17
  return None
18
 
19
  loader = PyMuPDFLoader("kulliyat.pdf")
20
  docs = loader.load()
21
 
22
- # Metni anlamlı parçalara bölme (Harf cerrahisi için overlap önemli)
23
  text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
24
  split_docs = text_splitter.split_documents(docs)
25
 
26
- # Kelimeleri vektöre çeviren model (Ücretsiz ve hızlı)
27
  embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
28
  vector_db = FAISS.from_documents(split_docs, embeddings)
29
  return vector_db
30
 
 
31
  vector_db = initialize_hemdem()
32
 
33
- # 3. Gemma 2 ile Konuşma Fonksiyonu
34
  def chat(message, history):
35
  if vector_db is None:
36
- return "Hata: 'kulliyat.pdf' dosyası bulunamadı. Lütfen PDF dosyasını yükleyin."
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
- # Gemma 2 için sistem talimatı
43
- prompt = f"""<start_of_turn>user
44
- Sen Hemdem-i Gemini-yi Emre'sin. Emre'nin külliyatının koruyucusu ve bir 'Muhakkik'sin (Hakikat Dedektifi).
45
- Görevlerin:
46
- 1. Şiirleri ve makaleleri Emre'nin üslubuyla açıkla.
47
- 2. Aşağıdaki döküman parçalarına sadık kal.
48
- 3. 'Harf Cerrahisi' mantığını kullanarak derin anlamları ifşa et.
49
-
50
- DÖKÜMANLAR:
51
- {context}
52
-
53
- SORU: {message}<end_of_turn>
54
- <start_of_turn>model
55
- """
56
-
57
- llm = HuggingFaceEndpoint(
58
- repo_id=model_id,
59
- task="text-generation",
60
- max_new_tokens=1024,
61
- huggingfacehub_api_token=hf_token
62
- )
63
 
64
- response = llm.invoke(prompt)
65
- return response
 
 
 
 
 
 
 
 
 
66
 
67
- # 4. Estetik Arayüz (Eflatun Tasarım)
68
- with gr.Blocks(theme=gr.themes.Soft(primary_hue="violet", secondary_hue="slate")) as demo:
69
  gr.Markdown("# 💜 Hemdem-i Şir: Emre'nin Külliyat Rehberi")
70
- gr.Markdown("900 sayfalık hakikat yolculuğunda, Gemma 2 rehberliğinde bir keşif...")
71
 
72
  chatbot = gr.ChatInterface(
73
  fn=chat,
74
- examples=["Bende şiirini açıklar mısın?", "Harf cerrahisi nedir?", "Nesh teorisi hakkında bilgi ver."],
75
- cache_examples=False,
76
  )
77
 
78
  demo.launch()
 
5
  from langchain_huggingface import HuggingFaceEmbeddings, HuggingFaceEndpoint
6
  from langchain_community.vectorstores import FAISS
7
 
8
+ # 1. Ayarlar ve Token
 
9
  hf_token = os.getenv("HUGGINGFACEHUB_API_TOKEN")
10
  model_id = "google/gemma-2-9b-it"
11
 
12
+ # 2. PDF Hafızası Oluşturma
13
  def initialize_hemdem():
 
14
  if not os.path.exists("kulliyat.pdf"):
15
+ print("HATA: kulliyat.pdf dosyası bulunamadı!")
16
  return None
17
 
18
  loader = PyMuPDFLoader("kulliyat.pdf")
19
  docs = loader.load()
20
 
21
+ # Metni parçalara bölme
22
  text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
23
  split_docs = text_splitter.split_documents(docs)
24
 
 
25
  embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
26
  vector_db = FAISS.from_documents(split_docs, embeddings)
27
  return vector_db
28
 
29
+ # Hafızayı başlat
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
+ # İlgili bölümleri bul
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
+ # Gemma 2 için Prompt (Chat formatına uygun)
42
+ prompt = f"Sen Hemdem-i Gemini-yi Emre'sin. Emre'nin külliyat rehberisin. Dökümanlara dayanarak cevap ver:\n\nDÖKÜMANLAR:\n{context}\n\nSORU: {message}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ response = llm.invoke(prompt)
52
+ return response
53
+ except Exception as e:
54
+ return f"Gemma şu an meşgul veya bir hata oluştu: {str(e)}"
55
 
56
+ # 4. Arayüz
57
+ with gr.Blocks() as demo:
58
  gr.Markdown("# 💜 Hemdem-i Şir: Emre'nin Külliyat Rehberi")
59
+ gr.Markdown("Gemma 2 rehberliğinde hakikat yolculuğu...")
60
 
61
  chatbot = gr.ChatInterface(
62
  fn=chat,
63
+ type="messages", # Yeni Gradio standartlarına uygun
64
+ examples=["Bende şiirini açıklar mısın?", "Harf cerrahisi nedir?"],
65
  )
66
 
67
  demo.launch()