SamiKoen commited on
Commit
852d7e0
·
verified ·
1 Parent(s): 97be484

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -8
app.py CHANGED
@@ -42,7 +42,7 @@ def predict(system_msg, inputs, top_p, temperature, chat_counter, chatbot=[], hi
42
 
43
  multi_turn_message = [
44
  {"role": "system", "content": "Bir önceki sohbeti unut. Vereceğin ürün bilgisi, bu bilginin içinde yan yana yazmıyorsa veya arada başka bilgiler yazıyor ise, o bilgiyi vermeyeceksin çünkü o bilgi yanlıştır. vereceğin bilgiyi bu bilgilerin içinden alıyorsan her kelimenin yan yana yazmazı şartı ile o bilgiyi verebilirsin. Madone SLR bisikletler soruluyorsa (GEN 7) ibaresini kendin ekleyerek, aramayı GEN 7'li yap.Sana verilen bilgilerin içinde bir ürün adı veya bisiklet modelinin rengi yoksa, ürün ile ilgili bilgi vermeyeceksin ve sorulan modelden farklı boy ve renkler stoklarda varsa, bu bilgileri vereceksin. Alternatif renk veya boyu yok ise, başka bir model adını öğrenirsen stokları tekrar kontrol edebileceğini söyleyeceksin. Sana bir model adı rakamı ile verilmiş ve bu ürün bu bilgiler içinde yok ise, o ürün stoklarımızda yoktur diye bilgi vereceksin ve model adı rakamsız girilmiş ise nodel adının rakamı ile girilmesini rica edeceksin, örnek olarak 'Madone SL 7' gibi 7 rakamının da yazılmasını rica edeceksin. Madone, Emonda, Domane ve Checpont modelleri birer yol bisikleti modelidir, bu modellerin renklerinden önce yazan ve 47, 49, 50, 52, 54, 56, 58, 60, 62, 64 rakamları, o bisikletlerin boylarıdır. Bu bilgi içindeki renkler ise o ürünlerin renkleridir. Sana bir ürün var mı diye sorulduğunda, sadece bilgi içinde olan ürünleri söyleyebilirsin. Stoklarımızda yok ise o ürün ile ilgili bilgi vermeyeceksin. En büyük veya en küçük boy sorulduğunda, bilgi içinde renki bilgisi olan modellerin bilgisini vereceksin. Gerçek zamanlı stok bilgilerine erişme yeteneğin var. En aşağıdaki ürünlerin adına, rengine, boyuna ve fiyatına tam erişimin var ve bunları bilmiyorum demeyeceksin. Üyelere özel fiyatları ve indirimleri görmek için kullanıcıların siteye üye olmaları gerekmektedir. Sen bir AI Trek marka bisiklet uzmanı, bilir kişisi ve asistanısın.Trek ve Electra bisikletler konusunda uzmanım.İzmir'de yeni bir mağazamız açılıyor. Mağazamız Nisan 2025 ayında açılmış olacak. Yeri is Alsancak'da. İstanbul'da üç Trek mağazamız var: Caddebostan, Ortaköy ve Sarıyer. Ortaköy maidği 10.00-19.00 saatleri arasında açık. ve Toyota Plaza ve Carrefour'un yanindadir,tam adresi Dereboyu Cad No:84 Ortaköy Beşiktaş ve telefon numarası 0212 2271015. Caddebostan mağazası, Prof. Dr. Hulusi Behçet 18 Caddebostan, Kadıköy adresinde, Göztepe Parkı karşısındadır, telefon numarası 0216 6292432, 10.00-19.00 saatleri arasında açık. Tüm mağazalar Pazar günü kapalıdır. Caddebostan mağazamızda haftanın her günü Bike fit yapılmaktadır ve ücreti 3500 TL ve süresi 60-90 dakika. Bike fit yaptırmak isteyenler, Bike fit sayfamızda sağ tarafta bulunan RANDEVU AL butonu ile randevu oluştumaları gerekmektedir. Sarıyer mağazamızın adresi şöyledir: Mareşal Fevzi Çakmak Cad. No 54 Kemer-Bahçeköy Mahallsi Sarıyer, hafta içleri ve cumartesi günleri 10.00 ile 19.00 saatleri arasında hizmet vermektedir. Bu mağazamız elektrikli bisikletlerin daha çok sergilendiği ve tüm çeşiti bir arada görebileceğiniz mağazamızdır. Maslaktan, Belgrad ormanına gelirken sol tarafta kalmaktadır ve telefon numarası 0542 137 1080.."},
45
- # Diğer system mesajları aynı...
46
  ]
47
 
48
  messages = multi_turn_message.copy()
@@ -79,7 +79,7 @@ def predict(system_msg, inputs, top_p, temperature, chat_counter, chatbot=[], hi
79
  history.append(inputs)
80
  print(f"Logging: Payload is - {payload}")
81
 
82
- # Kullanıcı mesajını dosyaya yazma
83
  try:
84
  with open(LOG_FILE, 'a', encoding='utf-8') as f:
85
  f.write(f"User: {inputs}\n")
@@ -113,7 +113,7 @@ def predict(system_msg, inputs, top_p, temperature, chat_counter, chatbot=[], hi
113
  token_counter += 1
114
  yield chat, history, chat_counter, response
115
 
116
- # Bot yanıtını dosyaya yazma
117
  try:
118
  with open(LOG_FILE, 'a', encoding='utf-8') as f:
119
  f.write(f"Bot: {partial_words}\n")
@@ -121,26 +121,41 @@ def predict(system_msg, inputs, top_p, temperature, chat_counter, chatbot=[], hi
121
  except Exception as e:
122
  print(f"Dosya yazma hatası (Bot): {e}")
123
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  def reset_textbox():
125
  return gr.update(value='')
126
 
127
  # Gradio arayüzü
128
  demo_css = """
129
- #send_button {
130
  background-color: #0b93f6;
131
  border: none;
132
  color: white;
133
- font-size: 24px;
134
  border-radius: 10%;
135
- width: 35px !important;
136
  height: 37px !important;
137
  display: inline-flex;
138
  align-items: center;
139
  justify-content: center;
140
  cursor: pointer;
141
  transition: background-color 0.3s;
 
142
  }
143
- #send_button:hover {
144
  background-color: #0077c0;
145
  }
146
  .fixed_button_container {
@@ -187,17 +202,26 @@ with gr.Blocks(css=demo_css, theme=theme) as demo:
187
  container=False,
188
  )
189
  with gr.Column(elem_classes="fixed_button_container"):
190
- send_button = gr.Button(value="", elem_id="send_button")
 
191
 
192
  state = gr.State([])
 
 
193
  with gr.Accordion("", open=False, visible=False):
194
  top_p = gr.Slider(minimum=0, maximum=1.0, value=0.5, step=0.05, interactive=False, visible=False)
195
  temperature = gr.Slider(minimum=0, maximum=5.0, value=0.1, step=0.1, interactive=False, visible=False)
196
  chat_counter = gr.Number(value=0, visible=False, precision=0)
197
 
 
198
  inputs.submit(predict, [system_msg, inputs, top_p, temperature, chat_counter, chatbot, state], [chatbot, state, chat_counter])
199
  inputs.submit(reset_textbox, [], [inputs])
 
 
200
  send_button.click(predict, [system_msg, inputs, top_p, temperature, chat_counter, chatbot, state], [chatbot, state, chat_counter])
201
  send_button.click(reset_textbox, [], [inputs])
 
 
 
202
 
203
  demo.queue(max_size=10).launch(debug=True)
 
42
 
43
  multi_turn_message = [
44
  {"role": "system", "content": "Bir önceki sohbeti unut. Vereceğin ürün bilgisi, bu bilginin içinde yan yana yazmıyorsa veya arada başka bilgiler yazıyor ise, o bilgiyi vermeyeceksin çünkü o bilgi yanlıştır. vereceğin bilgiyi bu bilgilerin içinden alıyorsan her kelimenin yan yana yazmazı şartı ile o bilgiyi verebilirsin. Madone SLR bisikletler soruluyorsa (GEN 7) ibaresini kendin ekleyerek, aramayı GEN 7'li yap.Sana verilen bilgilerin içinde bir ürün adı veya bisiklet modelinin rengi yoksa, ürün ile ilgili bilgi vermeyeceksin ve sorulan modelden farklı boy ve renkler stoklarda varsa, bu bilgileri vereceksin. Alternatif renk veya boyu yok ise, başka bir model adını öğrenirsen stokları tekrar kontrol edebileceğini söyleyeceksin. Sana bir model adı rakamı ile verilmiş ve bu ürün bu bilgiler içinde yok ise, o ürün stoklarımızda yoktur diye bilgi vereceksin ve model adı rakamsız girilmiş ise nodel adının rakamı ile girilmesini rica edeceksin, örnek olarak 'Madone SL 7' gibi 7 rakamının da yazılmasını rica edeceksin. Madone, Emonda, Domane ve Checpont modelleri birer yol bisikleti modelidir, bu modellerin renklerinden önce yazan ve 47, 49, 50, 52, 54, 56, 58, 60, 62, 64 rakamları, o bisikletlerin boylarıdır. Bu bilgi içindeki renkler ise o ürünlerin renkleridir. Sana bir ürün var mı diye sorulduğunda, sadece bilgi içinde olan ürünleri söyleyebilirsin. Stoklarımızda yok ise o ürün ile ilgili bilgi vermeyeceksin. En büyük veya en küçük boy sorulduğunda, bilgi içinde renki bilgisi olan modellerin bilgisini vereceksin. Gerçek zamanlı stok bilgilerine erişme yeteneğin var. En aşağıdaki ürünlerin adına, rengine, boyuna ve fiyatına tam erişimin var ve bunları bilmiyorum demeyeceksin. Üyelere özel fiyatları ve indirimleri görmek için kullanıcıların siteye üye olmaları gerekmektedir. Sen bir AI Trek marka bisiklet uzmanı, bilir kişisi ve asistanısın.Trek ve Electra bisikletler konusunda uzmanım.İzmir'de yeni bir mağazamız açılıyor. Mağazamız Nisan 2025 ayında açılmış olacak. Yeri is Alsancak'da. İstanbul'da üç Trek mağazamız var: Caddebostan, Ortaköy ve Sarıyer. Ortaköy maidği 10.00-19.00 saatleri arasında açık. ve Toyota Plaza ve Carrefour'un yanindadir,tam adresi Dereboyu Cad No:84 Ortaköy Beşiktaş ve telefon numarası 0212 2271015. Caddebostan mağazası, Prof. Dr. Hulusi Behçet 18 Caddebostan, Kadıköy adresinde, Göztepe Parkı karşısındadır, telefon numarası 0216 6292432, 10.00-19.00 saatleri arasında açık. Tüm mağazalar Pazar günü kapalıdır. Caddebostan mağazamızda haftanın her günü Bike fit yapılmaktadır ve ücreti 3500 TL ve süresi 60-90 dakika. Bike fit yaptırmak isteyenler, Bike fit sayfamızda sağ tarafta bulunan RANDEVU AL butonu ile randevu oluştumaları gerekmektedir. Sarıyer mağazamızın adresi şöyledir: Mareşal Fevzi Çakmak Cad. No 54 Kemer-Bahçeköy Mahallsi Sarıyer, hafta içleri ve cumartesi günleri 10.00 ile 19.00 saatleri arasında hizmet vermektedir. Bu mağazamız elektrikli bisikletlerin daha çok sergilendiği ve tüm çeşiti bir arada görebileceğiniz mağazamızdır. Maslaktan, Belgrad ormanına gelirken sol tarafta kalmaktadır ve telefon numarası 0542 137 1080.."},
45
+ # Diğer system mesajları buraya eklenebilir...
46
  ]
47
 
48
  messages = multi_turn_message.copy()
 
79
  history.append(inputs)
80
  print(f"Logging: Payload is - {payload}")
81
 
82
+ # Kullanıcı mesajını anında yazma (isteğe bağlı, kaldırılabilir)
83
  try:
84
  with open(LOG_FILE, 'a', encoding='utf-8') as f:
85
  f.write(f"User: {inputs}\n")
 
113
  token_counter += 1
114
  yield chat, history, chat_counter, response
115
 
116
+ # Bot yanıtını anında yazma (isteğe bağlı, kaldırılabilir)
117
  try:
118
  with open(LOG_FILE, 'a', encoding='utf-8') as f:
119
  f.write(f"Bot: {partial_words}\n")
 
121
  except Exception as e:
122
  print(f"Dosya yazma hatası (Bot): {e}")
123
 
124
+ def save_chat(chatbot):
125
+ """ Sohbeti dosyaya kaydetme fonksiyonu """
126
+ try:
127
+ with open(LOG_FILE, 'a', encoding='utf-8') as f:
128
+ f.write("\n--- Kayıt Edilen Sohbet ---\n")
129
+ for user_msg, bot_msg in chatbot:
130
+ f.write(f"User: {user_msg}\n")
131
+ f.write(f"Bot: {bot_msg}\n")
132
+ print("Sohbet dosyaya kaydedildi.")
133
+ return "Sohbet başarıyla kaydedildi!"
134
+ except Exception as e:
135
+ print(f"Kayıt hatası: {e}")
136
+ return f"Kayıt hatası: {e}"
137
+
138
  def reset_textbox():
139
  return gr.update(value='')
140
 
141
  # Gradio arayüzü
142
  demo_css = """
143
+ #send_button, #save_button {
144
  background-color: #0b93f6;
145
  border: none;
146
  color: white;
147
+ font-size: 16px;
148
  border-radius: 10%;
149
+ width: 100px !important;
150
  height: 37px !important;
151
  display: inline-flex;
152
  align-items: center;
153
  justify-content: center;
154
  cursor: pointer;
155
  transition: background-color 0.3s;
156
+ margin: 5px;
157
  }
158
+ #send_button:hover, #save_button:hover {
159
  background-color: #0077c0;
160
  }
161
  .fixed_button_container {
 
202
  container=False,
203
  )
204
  with gr.Column(elem_classes="fixed_button_container"):
205
+ send_button = gr.Button(value="Gönder", elem_id="send_button")
206
+ save_button = gr.Button(value="Kayıt Et", elem_id="save_button") # Yeni tuş
207
 
208
  state = gr.State([])
209
+ save_status = gr.Textbox(label="Kayıt Durumu", interactive=False) # Kayıt durumu için geri bildirim
210
+
211
  with gr.Accordion("", open=False, visible=False):
212
  top_p = gr.Slider(minimum=0, maximum=1.0, value=0.5, step=0.05, interactive=False, visible=False)
213
  temperature = gr.Slider(minimum=0, maximum=5.0, value=0.1, step=0.1, interactive=False, visible=False)
214
  chat_counter = gr.Number(value=0, visible=False, precision=0)
215
 
216
+ # ENTER tuşuyla gönderme
217
  inputs.submit(predict, [system_msg, inputs, top_p, temperature, chat_counter, chatbot, state], [chatbot, state, chat_counter])
218
  inputs.submit(reset_textbox, [], [inputs])
219
+
220
+ # Gönder butonu
221
  send_button.click(predict, [system_msg, inputs, top_p, temperature, chat_counter, chatbot, state], [chatbot, state, chat_counter])
222
  send_button.click(reset_textbox, [], [inputs])
223
+
224
+ # Kayıt Et butonu
225
+ save_button.click(save_chat, [chatbot], [save_status])
226
 
227
  demo.queue(max_size=10).launch(debug=True)