aimevzulari commited on
Commit
6038e47
·
verified ·
1 Parent(s): 7f24050

Delete streamlit_ui.py

Browse files
Files changed (1) hide show
  1. streamlit_ui.py +0 -562
streamlit_ui.py DELETED
@@ -1,562 +0,0 @@
1
- """
2
- Streamlit UI için modül.
3
- Bu modül, Streamlit kullanarak web arayüzünü oluşturur.
4
- """
5
-
6
- import streamlit as st
7
- import os
8
- from typing import Dict, Any, Optional
9
-
10
- # Kendi modüllerimizi içe aktar
11
- from prompt_templates import PROMPT_CATEGORIES
12
- from chatbot_backend import chatbot, ai_interface
13
- from api_integrations import (
14
- api_manager,
15
- openai_handler,
16
- gemini_handler,
17
- openrouter_handler
18
- )
19
-
20
- def main():
21
- """
22
- Ana Streamlit uygulaması.
23
- """
24
- # Sayfa yapılandırması
25
- st.set_page_config(
26
- page_title="AI MEVZULARI - Prompt Mühendisi (Eray Coşkun Tarafından Aboneleri için geliştirilmiştir)",
27
- page_icon="🤖",
28
- layout="wide",
29
- initial_sidebar_state="expanded"
30
- )
31
-
32
- # Session state başlatma
33
- if "api_keys" not in st.session_state:
34
- st.session_state.api_keys = {
35
- "openai": os.getenv("OPENAI_API_KEY", ""),
36
- "gemini": os.getenv("GEMINI_API_KEY", ""),
37
- "openrouter": os.getenv("OPENROUTER_API_KEY", "")
38
- }
39
-
40
- # Başlık ve açıklama
41
- st.title("AI MEVZULARI - Prompt Mühendisi (Eray Coşkun Tarafından Aboneleri için geliştirilmiştir)")
42
- st.markdown("Bu uygulama, AI modellerine verilecek detaylı promptlar oluşturmanıza yardımcı olur.")
43
-
44
- # Sidebar - API anahtarları
45
- with st.sidebar:
46
- st.header("API Anahtarları")
47
-
48
- st.info("API anahtarlarınızı girin. Bu anahtarlar oturum süresince saklanır ve sayfayı yenilediğinizde silinir.")
49
-
50
- # OpenAI API anahtarı
51
- openai_api_key = st.text_input(
52
- "OpenAI API Anahtarı",
53
- type="password",
54
- value=st.session_state.api_keys.get("openai", "")
55
- )
56
-
57
- # Google Gemini API anahtarı
58
- gemini_api_key = st.text_input(
59
- "Google Gemini API Anahtarı",
60
- type="password",
61
- value=st.session_state.api_keys.get("gemini", "")
62
- )
63
-
64
- # OpenRouter API anahtarı
65
- openrouter_api_key = st.text_input(
66
- "OpenRouter API Anahtarı",
67
- type="password",
68
- value=st.session_state.api_keys.get("openrouter", "")
69
- )
70
-
71
- # API anahtarlarını kaydet
72
- if st.button("API Anahtarlarını Kaydet"):
73
- # Session state'e API anahtarlarını kaydet
74
- st.session_state.api_keys = {
75
- "openai": openai_api_key,
76
- "gemini": gemini_api_key,
77
- "openrouter": openrouter_api_key
78
- }
79
-
80
- # API anahtarlarını ayarla
81
- api_manager.set_api_key("openai", openai_api_key)
82
- api_manager.set_api_key("gemini", gemini_api_key)
83
- api_manager.set_api_key("openrouter", openrouter_api_key)
84
-
85
- # API işleyicilerine de anahtarları ayarla
86
- openai_handler.set_api_key(openai_api_key)
87
- gemini_handler.set_api_key(gemini_api_key)
88
- openrouter_handler.set_api_key(openrouter_api_key)
89
-
90
- # Chatbot'un AI prompt generator'ına da anahtarları ayarla
91
- chatbot.ai_generator.set_api_key("openai", openai_api_key)
92
- chatbot.ai_generator.set_api_key("gemini", gemini_api_key)
93
- chatbot.ai_generator.set_api_key("openrouter", openrouter_api_key)
94
-
95
- st.success("API anahtarları başarıyla kaydedildi!")
96
-
97
- # API anahtarlarının durumunu göster
98
- with st.expander("API Anahtarı Durumu", expanded=False):
99
- openai_status = "✅ Ayarlandı" if st.session_state.api_keys.get("openai") else "❌ Ayarlanmadı"
100
- gemini_status = "✅ Ayarlandı" if st.session_state.api_keys.get("gemini") else "❌ Ayarlanmadı"
101
- openrouter_status = "✅ Ayarlandı" if st.session_state.api_keys.get("openrouter") else "❌ Ayarlanmadı"
102
-
103
- st.write(f"OpenAI API: {openai_status}")
104
- st.write(f"Gemini API: {gemini_status}")
105
- st.write(f"OpenRouter API: {openrouter_status}")
106
-
107
- # AI modeli seçimi
108
- st.header("AI Modeli Seçimi")
109
-
110
- # API sağlayıcısı seçimi
111
- provider = st.selectbox(
112
- "API Sağlayıcısı",
113
- ["OpenAI", "Google Gemini", "OpenRouter"],
114
- index=0
115
- )
116
-
117
- # Seçilen sağlayıcıya göre model listesini al
118
- provider_key = provider.lower().replace(" ", "_")
119
- if provider_key == "google_gemini":
120
- provider_key = "gemini"
121
-
122
- # Modelleri al
123
- models = []
124
- if provider_key == "openai":
125
- models = openai_handler.get_available_models()
126
- elif provider_key == "gemini":
127
- models = gemini_handler.get_available_models()
128
- elif provider_key == "openrouter":
129
- models = openrouter_handler.get_available_models()
130
-
131
- # Model seçimi
132
- selected_model = None
133
- if models:
134
- selected_model = st.selectbox("Model", models)
135
-
136
- # Ana içerik
137
- col1, col2 = st.columns([1, 1])
138
-
139
- with col1:
140
- st.header("Prompt Oluştur")
141
-
142
- # Kullanıcı girdisi
143
- user_input = st.text_area(
144
- "Ne yapmak istediğinizi açıklayın:",
145
- height=150,
146
- placeholder="Örnek: Bir e-ticaret web sitesi yapmak istiyorum. Ürünleri listeleyebilmeli, sepete ekleyebilmeli ve ödeme alabilmeliyim."
147
- )
148
-
149
- # AI destekli prompt oluşturma seçeneği
150
- if "use_ai_generation" not in st.session_state:
151
- st.session_state.use_ai_generation = True
152
-
153
- use_ai_generation = st.checkbox(
154
- "AI destekli prompt oluşturma kullan",
155
- value=st.session_state.use_ai_generation,
156
- key="use_ai_generation_checkbox"
157
- )
158
-
159
- # Checkbox değiştiğinde session state'i güncelle
160
- st.session_state.use_ai_generation = use_ai_generation
161
-
162
- # API anahtarı kontrolü ve uyarı
163
- selected_provider_key = provider.lower().replace(" ", "_")
164
- if selected_provider_key == "google_gemini":
165
- selected_provider_key = "gemini"
166
-
167
- if use_ai_generation and not st.session_state.api_keys.get(selected_provider_key):
168
- st.warning(f"AI destekli prompt oluşturma için {provider} API anahtarı gereklidir. Lütfen API anahtarınızı girin ve 'API Anahtarlarını Kaydet' butonuna tıklayın.")
169
-
170
- # Prompt oluştur butonu
171
- if st.button("Prompt Oluştur"):
172
- if user_input:
173
- with st.spinner("Prompt oluşturuluyor..."):
174
- # Prompt oluştur
175
- provider_key = provider.lower().replace(" ", "_")
176
- if provider_key == "google_gemini":
177
- provider_key = "gemini"
178
-
179
- # API anahtarı kontrolü
180
- if use_ai_generation and not st.session_state.api_keys.get(provider_key):
181
- st.error(f"AI destekli prompt oluşturma için {provider} API anahtarı gereklidir. Lütfen API anahtarınızı girin ve 'API Anahtarlarını Kaydet' butonuna tıklayın.")
182
- else:
183
- # Debug bilgisi
184
- st.session_state.debug_info = {
185
- "use_ai_generation": use_ai_generation,
186
- "provider": provider_key,
187
- "model": selected_model,
188
- "api_key_set": bool(st.session_state.api_keys.get(provider_key))
189
- }
190
-
191
- prompt, category, params = chatbot.process_input(
192
- user_input,
193
- use_ai_generation=use_ai_generation,
194
- provider=provider_key,
195
- model=selected_model
196
- )
197
-
198
- # Sonuçları session state'e kaydet
199
- st.session_state.prompt = prompt
200
- st.session_state.category = category
201
- st.session_state.params = params
202
-
203
- # Sonuçları göster
204
- st.success("Prompt başarıyla oluşturuldu!")
205
- else:
206
- st.error("Lütfen ne yapmak istediğinizi açıklayın.")
207
-
208
- with col2:
209
- st.header("Oluşturulan Prompt")
210
-
211
- # Debug bilgisi (geliştirme aşamasında)
212
- if "debug_info" in st.session_state:
213
- with st.expander("Debug Bilgisi", expanded=False):
214
- st.write(st.session_state.debug_info)
215
-
216
- # Oluşturulan promptu göster
217
- if "prompt" in st.session_state:
218
- st.subheader(f"Kategori: {st.session_state.category}")
219
-
220
- # Parametreleri göster
221
- if st.session_state.params:
222
- with st.expander("Parametreler", expanded=False):
223
- for key, value in st.session_state.params.items():
224
- st.write(f"**{key}:** {value}")
225
-
226
- # Promptu göster
227
- st.text_area(
228
- "Prompt:",
229
- value=st.session_state.prompt,
230
- height=400,
231
- disabled=True
232
- )
233
-
234
- # Promptu kopyala butonu
235
- if st.button("Promptu Kopyala"):
236
- st.code(st.session_state.prompt)
237
- st.info("Yukarıdaki kodu seçip kopyalayabilirsiniz.")
238
-
239
- # AI ile Test Et bölümü
240
- st.subheader("AI ile Test Et")
241
-
242
- # Test için API sağlayıcısı seçimi
243
- test_provider = st.selectbox(
244
- "Test için API Sağlayıcısı",
245
- ["OpenAI", "Google Gemini", "OpenRouter"],
246
- index=0,
247
- key="test_provider"
248
- )
249
-
250
- # Test için model seçimi
251
- test_provider_key = test_provider.lower().replace(" ", "_")
252
- if test_provider_key == "google_gemini":
253
- test_provider_key = "gemini"
254
-
255
- # Test için modelleri al
256
- test_models = []
257
- if test_provider_key == "openai":
258
- test_models = openai_handler.get_available_models()
259
- elif test_provider_key == "gemini":
260
- test_models = gemini_handler.get_available_models()
261
- elif test_provider_key == "openrouter":
262
- test_models = openrouter_handler.get_available_models()
263
-
264
- # Test için model seçimi
265
- test_selected_model = None
266
- if test_models:
267
- test_selected_model = st.selectbox("Test için Model", test_models, key="test_model")
268
-
269
- # Test için API anahtarı giriş alanı
270
- st.markdown("### Test için API Anahtarı")
271
- st.info("Test için API anahtarını doğrudan buraya girebilirsiniz.")
272
-
273
- test_api_key = st.text_input(
274
- f"{test_provider} API Anahtarı (Test için)",
275
- type="password",
276
- key="test_api_key"
277
- )
278
-
279
- # AI ile Test Et butonu
280
- if st.button("AI ile Test Et"):
281
- if "prompt" in st.session_state:
282
- if not test_api_key:
283
- st.error(f"Lütfen test için {test_provider} API anahtarını girin.")
284
- else:
285
- with st.spinner("Prompt analizi yapılıyor..."):
286
- # Prompt analizi ve yönlendirme göster
287
- analyze_and_guide_prompt(st.session_state.prompt, st.session_state.category)
288
- else:
289
- st.error("Lütfen önce bir prompt oluşturun.")
290
- else:
291
- st.info("Henüz bir prompt oluşturulmadı. Sol taraftaki formu doldurup 'Prompt Oluştur' butonuna tıklayın.")
292
-
293
- # Kategori bilgileri
294
- st.header("Desteklenen Kategoriler")
295
-
296
- # Kategorileri göster
297
- categories_per_row = 3
298
- categories = list(PROMPT_CATEGORIES.keys())
299
-
300
- for i in range(0, len(categories), categories_per_row):
301
- cols = st.columns(categories_per_row)
302
- for j in range(categories_per_row):
303
- if i + j < len(categories):
304
- with cols[j]:
305
- category = categories[i + j]
306
- st.subheader(category)
307
- if isinstance(PROMPT_CATEGORIES[category], dict) and "description" in PROMPT_CATEGORIES[category]:
308
- st.write(PROMPT_CATEGORIES[category]["description"])
309
- else:
310
- st.write(f"{category} kategorisi için promptlar.")
311
-
312
- # Prompt analizi ve yönlendirme
313
- def analyze_and_guide_prompt(prompt, category):
314
- """
315
- Oluşturulan promptu analiz eder ve kullanımı hakkında rehberlik sağlar.
316
- """
317
- if not prompt:
318
- return
319
-
320
- # Prompt türünü belirle
321
- prompt_type = category
322
-
323
- # Prompt uzunluğu
324
- prompt_length = len(prompt.split())
325
- length_quality = "kısa"
326
- if prompt_length > 200:
327
- length_quality = "çok detaylı"
328
- elif prompt_length > 100:
329
- length_quality = "detaylı"
330
- elif prompt_length > 50:
331
- length_quality = "orta uzunlukta"
332
-
333
- # Rehberlik kutusu
334
- st.markdown("""
335
- <style>
336
- .guidance-box {
337
- background-color: #f0f8ff;
338
- padding: 1rem;
339
- border-radius: 0.5rem;
340
- border-left: 0.5rem solid #4caf50;
341
- margin: 1rem 0;
342
- }
343
- </style>
344
- """, unsafe_allow_html=True)
345
-
346
- st.markdown('<div class="guidance-box">', unsafe_allow_html=True)
347
-
348
- st.markdown(f"### Prompt Analizi")
349
- st.markdown(f"Bu prompt **{prompt_type}** alanında bir çalışma için oluşturulmuştur ve **{length_quality}** bir içeriğe sahiptir.")
350
-
351
- st.markdown("### Kullanım Önerileri")
352
- st.markdown("""
353
- 1. **Promptu kopyalayın** ve tercih ettiğiniz AI modeline yapıştırın (ChatGPT, Claude, Gemini, vb.)
354
- 2. **Yanıtı değerlendirin** ve gerekirse daha spesifik talimatlar ekleyin
355
- 3. **İteratif çalışın** - AI'dan aldığınız yanıtları inceleyip promptu geliştirin
356
- """)
357
-
358
- # Prompt türüne göre özel öneriler
359
- st.markdown("### Özel Öneriler")
360
-
361
- if "web" in prompt_type.lower():
362
- st.markdown("""
363
- - **Kurulum Adımları:**
364
- - HTML, CSS ve JavaScript dosyalarını ayrı ayrı oluşturun
365
- - Gerekli kütüphaneleri CDN üzerinden veya npm ile yükleyin
366
- - Responsive tasarım için media query'leri kullanın
367
-
368
- - **Dizin Yapısı:**
369
- ```
370
- project/
371
- ├── index.html
372
- ├── css/
373
- │ └── style.css
374
- ├── js/
375
- │ └── main.js
376
- └── assets/
377
- ├── images/
378
- └── fonts/
379
- ```
380
-
381
- - **Test Etme:**
382
- - Farklı tarayıcılarda test edin
383
- - Mobil görünümü kontrol edin
384
- - Performans için Lighthouse kullanın
385
- """)
386
-
387
- elif "mobil" in prompt_type.lower():
388
- st.markdown("""
389
- - **Kurulum Adımları:**
390
- - Geliştirme ortamını kurun (Android Studio, Xcode, Flutter, React Native)
391
- - Gerekli bağımlılıkları yükleyin
392
- - Emülatör veya gerçek cihaz için test ortamını hazırlayın
393
-
394
- - **Dizin Yapısı (React Native):**
395
- ```
396
- project/
397
- ├── App.js
398
- ├── package.json
399
- ├── src/
400
- │ ├── components/
401
- │ ├── screens/
402
- │ ├── navigation/
403
- │ ├── services/
404
- │ └── utils/
405
- └── assets/
406
- ├── images/
407
- └── fonts/
408
- ```
409
-
410
- - **Test Etme:**
411
- - Farklı ekran boyutlarında test edin
412
- - Performans ve bellek kullanımını kontrol edin
413
- - Kullanıcı deneyimini optimize edin
414
- """)
415
-
416
- elif "veri" in prompt_type.lower() or "data" in prompt_type.lower():
417
- st.markdown("""
418
- - **Kurulum Adımları:**
419
- - Python ortamını hazırlayın (Anaconda veya virtualenv)
420
- - Gerekli kütüphaneleri yükleyin (pandas, numpy, matplotlib, seaborn)
421
- - Jupyter Notebook veya JupyterLab başlatın
422
-
423
- - **Dizin Yapısı:**
424
- ```
425
- project/
426
- ├── data/
427
- │ ├── raw/
428
- │ └── processed/
429
- ├── notebooks/
430
- │ ├── exploratory.ipynb
431
- │ └── analysis.ipynb
432
- ├── scripts/
433
- │ ├── data_processing.py
434
- │ └── visualization.py
435
- └── results/
436
- ├── figures/
437
- └── reports/
438
- ```
439
-
440
- - **Veri İşleme:**
441
- - Veri temizleme ve ön işleme adımlarını uygulayın
442
- - Keşifsel veri analizi yapın
443
- - Görselleştirmelerle bulguları destekleyin
444
- """)
445
-
446
- elif "makine" in prompt_type.lower() or "machine" in prompt_type.lower():
447
- st.markdown("""
448
- - **Kurulum Adımları:**
449
- - Python ortamını hazırlayın
450
- - ML kütüphanelerini yükleyin (scikit-learn, TensorFlow, PyTorch)
451
- - GPU desteği için gerekli ayarları yapın
452
-
453
- - **Dizin Yapısı:**
454
- ```
455
- project/
456
- ├── data/
457
- │ ├── raw/
458
- │ └── processed/
459
- ├── models/
460
- │ ├── trained/
461
- │ └── configs/
462
- ├── notebooks/
463
- │ └── experiments.ipynb
464
- ├── src/
465
- │ ├── data_processing/
466
- │ ├── feature_engineering/
467
- │ ├── model_training/
468
- │ └── evaluation/
469
- └── results/
470
- ├── metrics/
471
- └── visualizations/
472
- ```
473
-
474
- - **Model Geliştirme:**
475
- - Veri ön işleme ve özellik mühendisliği yapın
476
- - Model seçimi ve hiperparametre optimizasyonu uygulayın
477
- - Modeli değerlendirin ve sonuçları yorumlayın
478
- """)
479
-
480
- elif "oyun" in prompt_type.lower() or "game" in prompt_type.lower():
481
- st.markdown("""
482
- - **Kurulum Adımları:**
483
- - Oyun motorunu kurun (Unity, Unreal Engine, Godot)
484
- - Gerekli asset'leri hazırlayın
485
- - Geliştirme ortamını yapılandırın
486
-
487
- - **Dizin Yapısı (Unity):**
488
- ```
489
- project/
490
- ├── Assets/
491
- │ ├── Scripts/
492
- │ ├── Prefabs/
493
- │ ├── Scenes/
494
- │ ├── Models/
495
- │ ├── Textures/
496
- │ ├── Materials/
497
- │ ├── Animations/
498
- │ └── Audio/
499
- ├── ProjectSettings/
500
- └── Packages/
501
- ```
502
-
503
- - **Geliştirme:**
504
- - Oyun mekaniğini oluşturun
505
- - Görsel ve ses öğelerini entegre edin
506
- - Performans optimizasyonu yapın
507
- """)
508
-
509
- elif "içerik" in prompt_type.lower() or "content" in prompt_type.lower():
510
- st.markdown("""
511
- - **Hazırlık:**
512
- - Hedef kitleyi ve platformu belirleyin
513
- - Anahtar kelimeleri ve SEO stratejisini planlayın
514
- - İçerik takvimi oluşturun
515
-
516
- - **Dizin Yapısı (Blog):**
517
- ```
518
- blog/
519
- ├── posts/
520
- │ ├── category1/
521
- │ └── category2/
522
- ├── images/
523
- ├── templates/
524
- ├── styles/
525
- └── scripts/
526
- ```
527
-
528
- - **Oluşturma:**
529
- - İçeriği bölümlere ayırın
530
- - Görsel öğelerle destekleyin
531
- - Düzenleme ve prova okuma yapın
532
- """)
533
-
534
- else:
535
- st.markdown("""
536
- - **Genel Öneriler:**
537
- - Promptu spesifik hedeflerinize göre özelleştirin
538
- - Adım adım talimatlar ekleyin
539
- - Beklediğiniz çıktı formatını belirtin
540
-
541
- - **Genel Dizin Yapısı:**
542
- ```
543
- project/
544
- ├── docs/
545
- ├── src/
546
- ├── tests/
547
- ├── resources/
548
- └── README.md
549
- ```
550
- """)
551
-
552
- st.markdown("### Sonraki Adımlar")
553
- st.markdown("""
554
- - Bu promptu farklı AI modellerinde test edin ve sonuçları karşılaştırın
555
- - Promptu projenizin ilerleyen aşamalarında güncelleyin
556
- - Başarılı promptları kaydedin ve benzer projeler için şablon olarak kullanın
557
- """)
558
-
559
- st.markdown('</div>', unsafe_allow_html=True)
560
-
561
- if __name__ == "__main__":
562
- main()