AlihanAyverdi commited on
Commit
7b20552
·
verified ·
1 Parent(s): 05a9e67

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -72
app.py CHANGED
@@ -1,82 +1,48 @@
1
- import gradio as gr
2
- import google.generativeai as genai
3
- import PyPDF2
4
  import os
 
 
5
  from dotenv import load_dotenv
6
 
7
- # API anahtarınızı yükleyin
8
- load_dotenv(override=True)
9
- api_key = os.getenv("GEMINI_API_KEY")
10
- genai.configure(api_key=api_key)
11
 
12
- # Gemini modelini başlat
13
- model = genai.GenerativeModel(model_name="gemini-1.5-flash",
14
- system_instruction="Sen bir belge sohbet asistanısın. Sorulara sana verilen belgeler içindeki bilgileri tarayarak yanıt vermelisin. Aksi belirtilmediği sürece yanıtları Türkçe olarak ver."
15
- )
16
 
17
- def extract_text_from_pdf(pdf_files):
18
- extracted_texts = []
19
- for pdf_file in pdf_files:
20
- with open(pdf_file.name, 'rb') as f:
21
- pdf_reader = PyPDF2.PdfReader(f)
22
- extracted_text = ""
23
- for page in pdf_reader.pages:
24
- text = page.extract_text()
25
- if text:
26
- extracted_text += text
27
- extracted_texts.append(extracted_text)
28
- return extracted_texts
29
 
30
- def chat_with_documents(history, pdf_files):
31
- if not history:
32
- return history
33
-
34
- extracted_texts = extract_text_from_pdf(pdf_files)
35
- user_input = history[-1]['content']
36
- prompt = [user_input] + extracted_texts
37
- response = model.generate_content(prompt)
38
-
39
- history.append({
40
- 'role': 'assistant',
41
- 'content': response.text
42
- })
43
- return history
44
 
 
45
  with gr.Blocks() as demo:
46
- gr.Markdown("# Belgelerinizle Sohbet Edin (Gemini API kullanarak)")
47
- with gr.Accordion("Belgeler", open=False):
48
- docs = gr.File(
49
- label="Belgeleri Yükleyin",
50
- file_count="multiple",
51
- type="filepath"
 
 
52
  )
53
- chatbot = gr.Chatbot(type="messages")
54
- msg = gr.Textbox(label="Mesajınız")
55
- clear = gr.Button("Temizle")
56
-
57
- def on_user_message(user_message, history):
58
- history = history or []
59
- history.append({
60
- 'role': 'user',
61
- 'content': user_message
62
- })
63
- return "", history
64
-
65
- def on_generate_response(history, docs_value):
66
- if not docs_value:
67
- history.append({
68
- 'role': 'assistant',
69
- 'content': "Lütfen önce belge(leri) yükleyin."
70
- })
71
- return history
72
-
73
- if history:
74
- history = chat_with_documents(history, docs_value)
75
- return history
76
-
77
- msg.submit(on_user_message, [msg, chatbot], [msg, chatbot]).then(
78
- on_generate_response, [chatbot, docs], chatbot
79
- )
80
- clear.click(lambda: None, None, chatbot, queue=False)
81
 
82
- demo.launch()
 
 
 
 
1
  import os
2
+ import google.generativeai as genai
3
+ import gradio as gr
4
  from dotenv import load_dotenv
5
 
6
+ # .env dosyasını yükleyin
7
+ load_dotenv(dotenv_path='.env', override=True)
 
 
8
 
9
+ # API anahtarını ayarlayın
10
+ genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
 
 
11
 
12
+ # System instruction tanımlama
13
+ system_instruction = """Sen Türk mitolojisini çok iyi bilen bir yapay zeka asistanısın ve adın bundan sonra Kam. Sana bu konuda soru soranlara bu konu hakkında derinlemesine bilgi vermeni istiyorum. Bunun dışındaki konulara girmemek."""
 
 
 
 
 
 
 
 
 
 
14
 
15
+ def generate_text(prompt, model_name):
16
+ if not model_name:
17
+ return "Modeli Kontrol Ediniz"
18
+ try:
19
+ # Sistem talimatını prompt'a ekleyin
20
+ full_prompt = f"{system_instruction}\n\n{prompt}"
21
+ model = genai.GenerativeModel(model_name=model_name)
22
+ response = model.generate_content(full_prompt)
23
+ return response.text
24
+ except Exception as e:
25
+ return f"Hata Oluştu. Hata Kodu: {str(e)}"
 
 
 
26
 
27
+ # gradio arayüzü
28
  with gr.Blocks() as demo:
29
+ gr.Markdown("# Geminichat")
30
+ gr.Markdown('Gemini\'ye sorular sorun')
31
+
32
+ with gr.Accordion("Modeller", open=False):
33
+ select_model = gr.Dropdown(
34
+ ['gemini-1.5-flash', 'gemini-exp-1114', 'gemini-1.5-pro'],
35
+ label="Modeller",
36
+ value="gemini-1.5-pro"
37
  )
38
+ with gr.Row():
39
+ text_input = gr.Textbox(label="Sorunuzu yazın.", placeholder="Enter tuşuna basarak gönderebilirsiniz")
40
+ with gr.Row():
41
+ btn = gr.Button("Sor")
42
+
43
+ with gr.Row():
44
+ text_output = gr.Textbox(label="Yanıtlar:")
45
+ btn.click(fn=generate_text, inputs=[text_input, select_model], outputs=text_output)
46
+ text_input.submit(fn=generate_text, inputs=[text_input, select_model], outputs=text_output)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
+ demo.launch()