aimevzulari commited on
Commit
82e8868
·
verified ·
1 Parent(s): 1b10726

Upload 8 files

Browse files
Files changed (8) hide show
  1. ai_prompt_generator.py +328 -0
  2. api_integrations.py +480 -0
  3. app.py +31 -0
  4. chatbot_backend.py +318 -0
  5. prompt_templates.py +1838 -0
  6. requirements.txt +5 -0
  7. streamlit_ui.py +202 -0
  8. todo.md +47 -0
ai_prompt_generator.py ADDED
@@ -0,0 +1,328 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ AI destekli dinamik prompt oluşturucu.
3
+ Bu modül, kullanıcı girdisine göre tamamen dinamik promptlar oluşturur.
4
+ """
5
+
6
+ import os
7
+ from typing import Dict, Any, Tuple, List, Optional
8
+ import openai
9
+ from google import generativeai as genai
10
+ import requests
11
+ from dotenv import load_dotenv
12
+
13
+ # .env dosyasını yükle (varsa)
14
+ load_dotenv()
15
+
16
+ class AIPromptGenerator:
17
+ """
18
+ AI destekli dinamik prompt oluşturucu sınıfı.
19
+ Bu sınıf, kullanıcı girdisine göre yapay zeka kullanarak dinamik promptlar oluşturur.
20
+ """
21
+
22
+ def __init__(self):
23
+ """
24
+ AI prompt oluşturucuyu başlat.
25
+ """
26
+ self.openai_api_key = os.getenv("OPENAI_API_KEY", "")
27
+ self.gemini_api_key = os.getenv("GEMINI_API_KEY", "")
28
+ self.openrouter_api_key = os.getenv("OPENROUTER_API_KEY", "")
29
+
30
+ # API anahtarlarını ayarla (varsa)
31
+ if self.openai_api_key:
32
+ openai.api_key = self.openai_api_key
33
+
34
+ if self.gemini_api_key:
35
+ genai.configure(api_key=self.gemini_api_key)
36
+
37
+ def set_api_key(self, provider: str, api_key: str) -> None:
38
+ """
39
+ Belirli bir sağlayıcı için API anahtarını ayarlar.
40
+
41
+ Args:
42
+ provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
43
+ api_key (str): API anahtarı
44
+ """
45
+ if provider == "openai":
46
+ self.openai_api_key = api_key
47
+ openai.api_key = api_key
48
+ elif provider == "gemini":
49
+ self.gemini_api_key = api_key
50
+ genai.configure(api_key=api_key)
51
+ elif provider == "openrouter":
52
+ self.openrouter_api_key = api_key
53
+
54
+ def generate_with_openai(self, user_input: str, model: str = "gpt-3.5-turbo") -> Dict[str, Any]:
55
+ """
56
+ OpenAI API kullanarak dinamik prompt oluşturur.
57
+
58
+ Args:
59
+ user_input (str): Kullanıcı girdisi
60
+ model (str): Kullanılacak model
61
+
62
+ Returns:
63
+ Dict[str, Any]: Oluşturulan prompt ve ilgili bilgiler
64
+ """
65
+ if not self.openai_api_key:
66
+ return {"success": False, "error": "OpenAI API anahtarı ayarlanmamış.", "prompt": ""}
67
+
68
+ try:
69
+ system_message = """
70
+ Sen uzman bir prompt mühendisisin. Görevin, kullanıcının isteklerini son derece detaylı, spesifik ve kapsamlı bir prompta dönüştürmektir.
71
+
72
+ Kullanıcı sana ne yapmak istediğini anlatacak (örneğin bir web sitesi, mobil uygulama, oyun, veri analizi, görsel üretimi, video üretimi vb.).
73
+ Sen de bunu yapay zeka modellerine verilebilecek detaylı bir prompta dönüştüreceksin.
74
+
75
+ Oluşturduğun prompt şunları içermeli:
76
+ 1. Projenin/görevin çok net ve spesifik bir tanımı
77
+ 2. Teknik gereksinimler ve kısıtlamalar (programlama dilleri, framework'ler, API'ler, vb.)
78
+ 3. Kullanıcı deneyimi ve arayüz gereksinimleri
79
+ 4. Özel özellikler ve işlevsellikler (domain'e özgü detaylarla)
80
+ 5. Adım adım uygulama talimatları
81
+ 6. Beklenen çıktının detaylı açıklaması
82
+ 7. Kalite kriterleri ve test gereksinimleri
83
+ 8. Referans olabilecek örnekler veya kaynaklar
84
+
85
+ Önemli kurallar:
86
+ - Asla genel şablonlar kullanma, her prompt tamamen kullanıcının spesifik isteğine göre özelleştirilmiş olmalı
87
+ - Kullanıcının belirttiği alana özgü teknik detaylar ve terminoloji kullan
88
+ - Prompt içeriğini zenginleştirmek için kendi teknik bilgini kullan
89
+ - Örneğin, hava durumu uygulaması için OpenWeatherMap API, geolocation, hava tahmin algoritmaları, sıcaklık/nem/basınç göstergeleri gibi spesifik detaylar ekle
90
+ - E-ticaret için ödeme işleme API'leri, sepet yönetimi, ürün filtreleme, kullanıcı yorumları gibi spesifik özellikler belirt
91
+ - Veri analizi için veri temizleme teknikleri, istatistiksel modeller, görselleştirme kütüphaneleri gibi spesifik araçlar öner
92
+
93
+ Promptu yapılandırırken bölümlere ayır, başlıklar kullan ve numaralandırılmış listeler oluştur.
94
+ """
95
+
96
+ response = openai.chat.completions.create(
97
+ model=model,
98
+ messages=[
99
+ {"role": "system", "content": system_message},
100
+ {"role": "user", "content": f"Şu konuda çok detaylı ve spesifik bir prompt oluştur: {user_input}"}
101
+ ],
102
+ temperature=0.7,
103
+ max_tokens=3000
104
+ )
105
+
106
+ return {
107
+ "success": True,
108
+ "prompt": response.choices[0].message.content,
109
+ "model": model
110
+ }
111
+ except Exception as e:
112
+ return {"success": False, "error": str(e), "prompt": ""}
113
+
114
+ def generate_with_gemini(self, user_input: str, model: str = "gemini-1.5-pro") -> Dict[str, Any]:
115
+ """
116
+ Google Gemini API kullanarak dinamik prompt oluşturur.
117
+
118
+ Args:
119
+ user_input (str): Kullanıcı girdisi
120
+ model (str): Kullanılacak model
121
+
122
+ Returns:
123
+ Dict[str, Any]: Oluşturulan prompt ve ilgili bilgiler
124
+ """
125
+ if not self.gemini_api_key:
126
+ return {"success": False, "error": "Gemini API anahtarı ayarlanmamış.", "prompt": ""}
127
+
128
+ try:
129
+ system_prompt = """
130
+ Sen uzman bir prompt mühendisisin. Görevin, kullanıcının isteklerini son derece detaylı, spesifik ve kapsamlı bir prompta dönüştürmektir.
131
+
132
+ Kullanıcı sana ne yapmak istediğini anlatacak (örneğin bir web sitesi, mobil uygulama, oyun, veri analizi, görsel üretimi, video üretimi vb.).
133
+ Sen de bunu yapay zeka modellerine verilebilecek detaylı bir prompta dönüştüreceksin.
134
+
135
+ Oluşturduğun prompt şunları içermeli:
136
+ 1. Projenin/görevin çok net ve spesifik bir tanımı
137
+ 2. Teknik gereksinimler ve kısıtlamalar (programlama dilleri, framework'ler, API'ler, vb.)
138
+ 3. Kullanıcı deneyimi ve arayüz gereksinimleri
139
+ 4. Özel özellikler ve işlevsellikler (domain'e özgü detaylarla)
140
+ 5. Adım adım uygulama talimatları
141
+ 6. Beklenen çıktının detaylı açıklaması
142
+ 7. Kalite kriterleri ve test gereksinimleri
143
+ 8. Referans olabilecek örnekler veya kaynaklar
144
+
145
+ Önemli kurallar:
146
+ - Asla genel şablonlar kullanma, her prompt tamamen kullanıcının spesifik isteğine göre özelleştirilmiş olmalı
147
+ - Kullanıcının belirttiği alana özgü teknik detaylar ve terminoloji kullan
148
+ - Prompt içeriğini zenginleştirmek için kendi teknik bilgini kullan
149
+ - Örneğin, hava durumu uygulaması için OpenWeatherMap API, geolocation, hava tahmin algoritmaları, sıcaklık/nem/basınç göstergeleri gibi spesifik detaylar ekle
150
+ - E-ticaret için ödeme işleme API'leri, sepet yönetimi, ürün filtreleme, kullanıcı yorumları gibi spesifik özellikler belirt
151
+ - Veri analizi için veri temizleme teknikleri, istatistiksel modeller, görselleştirme kütüphaneleri gibi spesifik araçlar öner
152
+
153
+ Promptu yapılandırırken bölümlere ayır, başlıklar kullan ve numaralandırılmış listeler oluştur.
154
+ """
155
+
156
+ model_obj = genai.GenerativeModel(model)
157
+ response = model_obj.generate_content([
158
+ system_prompt,
159
+ f"Şu konuda çok detaylı ve spesifik bir prompt oluştur: {user_input}"
160
+ ],
161
+ generation_config=genai.types.GenerationConfig(
162
+ temperature=0.7,
163
+ max_output_tokens=3000
164
+ ))
165
+
166
+ return {
167
+ "success": True,
168
+ "prompt": response.text,
169
+ "model": model
170
+ }
171
+ except Exception as e:
172
+ return {"success": False, "error": str(e), "prompt": ""}
173
+
174
+ def generate_with_openrouter(self, user_input: str, model: str = "openai/gpt-4-turbo") -> Dict[str, Any]:
175
+ """
176
+ OpenRouter API kullanarak dinamik prompt oluşturur.
177
+
178
+ Args:
179
+ user_input (str): Kullanıcı girdisi
180
+ model (str): Kullanılacak model
181
+
182
+ Returns:
183
+ Dict[str, Any]: Oluşturulan prompt ve ilgili bilgiler
184
+ """
185
+ if not self.openrouter_api_key:
186
+ return {"success": False, "error": "OpenRouter API anahtarı ayarlanmamış.", "prompt": ""}
187
+
188
+ try:
189
+ system_message = """
190
+ Sen uzman bir prompt mühendisisin. Görevin, kullanıcının isteklerini son derece detaylı, spesifik ve kapsamlı bir prompta dönüştürmektir.
191
+
192
+ Kullanıcı sana ne yapmak istediğini anlatacak (örneğin bir web sitesi, mobil uygulama, oyun, veri analizi, görsel üretimi, video üretimi vb.).
193
+ Sen de bunu yapay zeka modellerine verilebilecek detaylı bir prompta dönüştüreceksin.
194
+
195
+ Oluşturduğun prompt şunları içermeli:
196
+ 1. Projenin/görevin çok net ve spesifik bir tanımı
197
+ 2. Teknik gereksinimler ve kısıtlamalar (programlama dilleri, framework'ler, API'ler, vb.)
198
+ 3. Kullanıcı deneyimi ve arayüz gereksinimleri
199
+ 4. Özel özellikler ve işlevsellikler (domain'e özgü detaylarla)
200
+ 5. Adım adım uygulama talimatları
201
+ 6. Beklenen çıktının detaylı açıklaması
202
+ 7. Kalite kriterleri ve test gereksinimleri
203
+ 8. Referans olabilecek örnekler veya kaynaklar
204
+
205
+ Önemli kurallar:
206
+ - Asla genel şablonlar kullanma, her prompt tamamen kullanıcının spesifik isteğine göre özelleştirilmiş olmalı
207
+ - Kullanıcının belirttiği alana özgü teknik detaylar ve terminoloji kullan
208
+ - Prompt içeriğini zenginleştirmek için kendi teknik bilgini kullan
209
+ - Örneğin, hava durumu uygulaması için OpenWeatherMap API, geolocation, hava tahmin algoritmaları, sıcaklık/nem/basınç göstergeleri gibi spesifik detaylar ekle
210
+ - E-ticaret için ödeme işleme API'leri, sepet yönetimi, ürün filtreleme, kullanıcı yorumları gibi spesifik özellikler belirt
211
+ - Veri analizi için veri temizleme teknikleri, istatistiksel modeller, görselleştirme kütüphaneleri gibi spesifik araçlar öner
212
+
213
+ Promptu yapılandırırken bölümlere ayır, başlıklar kullan ve numaralandırılmış listeler oluştur.
214
+ """
215
+
216
+ headers = {
217
+ "Content-Type": "application/json",
218
+ "Authorization": f"Bearer {self.openrouter_api_key}"
219
+ }
220
+
221
+ data = {
222
+ "model": model,
223
+ "messages": [
224
+ {"role": "system", "content": system_message},
225
+ {"role": "user", "content": f"Şu konuda çok detaylı ve spesifik bir prompt oluştur: {user_input}"}
226
+ ],
227
+ "temperature": 0.7,
228
+ "max_tokens": 3000
229
+ }
230
+
231
+ response = requests.post(
232
+ "https://openrouter.ai/api/v1/chat/completions",
233
+ headers=headers,
234
+ json=data
235
+ )
236
+
237
+ if response.status_code == 200:
238
+ response_data = response.json()
239
+ return {
240
+ "success": True,
241
+ "prompt": response_data["choices"][0]["message"]["content"],
242
+ "model": model
243
+ }
244
+ else:
245
+ return {
246
+ "success": False,
247
+ "error": f"HTTP {response.status_code}: {response.text}",
248
+ "prompt": ""
249
+ }
250
+ except Exception as e:
251
+ return {"success": False, "error": str(e), "prompt": ""}
252
+
253
+ def generate_prompt(self, user_input: str, provider: str, model: Optional[str] = None) -> Dict[str, Any]:
254
+ """
255
+ Belirli bir sağlayıcı ve model kullanarak dinamik prompt oluşturur.
256
+
257
+ Args:
258
+ user_input (str): Kullanıcı girdisi
259
+ provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
260
+ model (str, optional): Kullanılacak model
261
+
262
+ Returns:
263
+ Dict[str, Any]: Oluşturulan prompt ve ilgili bilgiler
264
+ """
265
+ if provider == "openai":
266
+ if model is None:
267
+ model = "gpt-4o" if self.openai_api_key else "gpt-3.5-turbo"
268
+ return self.generate_with_openai(user_input, model)
269
+ elif provider == "gemini":
270
+ if model is None:
271
+ model = "gemini-1.5-pro"
272
+ return self.generate_with_gemini(user_input, model)
273
+ elif provider == "openrouter":
274
+ if model is None:
275
+ model = "anthropic/claude-3-opus" if self.openrouter_api_key else "openai/gpt-4-turbo"
276
+ return self.generate_with_openrouter(user_input, model)
277
+ else:
278
+ return {"success": False, "error": "Geçersiz sağlayıcı. Lütfen 'openai', 'gemini' veya 'openrouter' seçin.", "prompt": ""}
279
+
280
+ # Test fonksiyonu
281
+ def test_ai_prompt_generator():
282
+ """
283
+ AI prompt oluşturucuyu test eder.
284
+ """
285
+ generator = AIPromptGenerator()
286
+
287
+ # Test girdileri
288
+ test_inputs = [
289
+ "Bir hava durumu uygulaması yapmak istiyorum",
290
+ "Bir e-ticaret web sitesi geliştirmek istiyorum",
291
+ "Veri analizi için bir dashboard oluşturmak istiyorum"
292
+ ]
293
+
294
+ # OpenAI API anahtarı varsa test et
295
+ if generator.openai_api_key:
296
+ print("OpenAI ile test:")
297
+ for input_text in test_inputs:
298
+ print(f"\nTest girdisi: {input_text}")
299
+ result = generator.generate_prompt(input_text, "openai", "gpt-4o")
300
+ if result["success"]:
301
+ print(f"Oluşturulan prompt (ilk 300 karakter):\n{result['prompt'][:300]}...")
302
+ else:
303
+ print(f"Hata: {result['error']}")
304
+
305
+ # Gemini API anahtarı varsa test et
306
+ if generator.gemini_api_key:
307
+ print("\nGemini ile test:")
308
+ for input_text in test_inputs:
309
+ print(f"\nTest girdisi: {input_text}")
310
+ result = generator.generate_prompt(input_text, "gemini")
311
+ if result["success"]:
312
+ print(f"Oluşturulan prompt (ilk 300 karakter):\n{result['prompt'][:300]}...")
313
+ else:
314
+ print(f"Hata: {result['error']}")
315
+
316
+ # OpenRouter API anahtarı varsa test et
317
+ if generator.openrouter_api_key:
318
+ print("\nOpenRouter ile test:")
319
+ for input_text in test_inputs:
320
+ print(f"\nTest girdisi: {input_text}")
321
+ result = generator.generate_prompt(input_text, "openrouter")
322
+ if result["success"]:
323
+ print(f"Oluşturulan prompt (ilk 300 karakter):\n{result['prompt'][:300]}...")
324
+ else:
325
+ print(f"Hata: {result['error']}")
326
+
327
+ if __name__ == "__main__":
328
+ test_ai_prompt_generator()
api_integrations.py ADDED
@@ -0,0 +1,480 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ API entegrasyonları için yardımcı fonksiyonlar.
3
+ Bu modül, OpenAI, Google Gemini ve OpenRouter API'leri ile etkileşim için gerekli fonksiyonları içerir.
4
+ """
5
+
6
+ import os
7
+ from typing import Dict, Any, List, Optional
8
+ import openai
9
+ from google import generativeai as genai
10
+ import requests
11
+ from dotenv import load_dotenv
12
+
13
+ # Prompt şablonlarından model listelerini içe aktar
14
+ from prompt_templates import OPENAI_MODELS, GEMINI_MODELS, OPENROUTER_MODELS
15
+
16
+ # .env dosyasını yükle (varsa)
17
+ load_dotenv()
18
+
19
+ class APIManager:
20
+ """
21
+ API yönetimi için sınıf.
22
+ Bu sınıf, API anahtarlarını yönetir ve API'lerin durumunu kontrol eder.
23
+ """
24
+
25
+ def __init__(self):
26
+ """
27
+ API yöneticisini başlat.
28
+ """
29
+ self.api_keys = {
30
+ "openai": os.getenv("OPENAI_API_KEY", ""),
31
+ "gemini": os.getenv("GEMINI_API_KEY", ""),
32
+ "openrouter": os.getenv("OPENROUTER_API_KEY", "")
33
+ }
34
+
35
+ def set_api_key(self, provider: str, api_key: str) -> None:
36
+ """
37
+ Belirli bir sağlayıcı için API anahtarını ayarlar.
38
+
39
+ Args:
40
+ provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
41
+ api_key (str): API anahtarı
42
+ """
43
+ if provider in self.api_keys:
44
+ self.api_keys[provider] = api_key
45
+
46
+ # API anahtarını ilgili kütüphane için de ayarla
47
+ if provider == "openai":
48
+ openai.api_key = api_key
49
+ elif provider == "gemini":
50
+ genai.configure(api_key=api_key)
51
+
52
+ def get_api_key(self, provider: str) -> str:
53
+ """
54
+ Belirli bir sağlayıcı için API anahtarını döndürür.
55
+
56
+ Args:
57
+ provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
58
+
59
+ Returns:
60
+ str: API anahtarı
61
+ """
62
+ return self.api_keys.get(provider, "")
63
+
64
+ def check_api_key_validity(self, provider: str) -> bool:
65
+ """
66
+ Belirli bir sağlayıcı için API anahtarının geçerliliğini kontrol eder.
67
+
68
+ Args:
69
+ provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
70
+
71
+ Returns:
72
+ bool: API anahtarı geçerli ise True, değilse False
73
+ """
74
+ api_key = self.get_api_key(provider)
75
+
76
+ if not api_key:
77
+ return False
78
+
79
+ try:
80
+ if provider == "openai":
81
+ openai.api_key = api_key
82
+ # Basit bir model listesi isteği ile API anahtarının geçerliliğini kontrol et
83
+ openai.models.list()
84
+ return True
85
+
86
+ elif provider == "gemini":
87
+ genai.configure(api_key=api_key)
88
+ # Kullanılabilir modelleri listeleyerek API anahtarının geçerliliğini kontrol et
89
+ genai.list_models()
90
+ return True
91
+
92
+ elif provider == "openrouter":
93
+ headers = {
94
+ "Authorization": f"Bearer {api_key}"
95
+ }
96
+ response = requests.get(
97
+ "https://openrouter.ai/api/v1/models",
98
+ headers=headers
99
+ )
100
+ return response.status_code == 200
101
+
102
+ return False
103
+
104
+ except Exception:
105
+ return False
106
+
107
+
108
+ class OpenAIHandler:
109
+ """
110
+ OpenAI API ile etkileşim için sınıf.
111
+ """
112
+
113
+ def __init__(self, api_key: str = ""):
114
+ """
115
+ OpenAI işleyicisini başlat.
116
+
117
+ Args:
118
+ api_key (str, optional): OpenAI API anahtarı
119
+ """
120
+ self.api_key = api_key
121
+ if api_key:
122
+ openai.api_key = api_key
123
+
124
+ def set_api_key(self, api_key: str) -> None:
125
+ """
126
+ OpenAI API anahtarını ayarlar.
127
+
128
+ Args:
129
+ api_key (str): OpenAI API anahtarı
130
+ """
131
+ self.api_key = api_key
132
+ openai.api_key = api_key
133
+
134
+ def get_available_models(self) -> List[str]:
135
+ """
136
+ Kullanılabilir OpenAI modellerini döndürür.
137
+
138
+ Returns:
139
+ List[str]: Kullanılabilir modeller listesi
140
+ """
141
+ if not self.api_key:
142
+ return OPENAI_MODELS
143
+
144
+ try:
145
+ models = openai.models.list()
146
+ # Sadece GPT modellerini filtrele
147
+ gpt_models = [model.id for model in models.data if "gpt" in model.id.lower()]
148
+
149
+ # Tüm OpenAI modellerini döndür, API'den alınamayanlar için varsayılan listeyi kullan
150
+ all_models = list(set(gpt_models + OPENAI_MODELS))
151
+
152
+ # Varsayılan modelleri önceliklendir
153
+ sorted_models = sorted(
154
+ all_models,
155
+ key=lambda x: (
156
+ 0 if x in OPENAI_MODELS else 1,
157
+ OPENAI_MODELS.index(x) if x in OPENAI_MODELS else float('inf')
158
+ )
159
+ )
160
+
161
+ return sorted_models
162
+ except Exception:
163
+ # API anahtarı geçersiz veya başka bir hata durumunda varsayılan modelleri döndür
164
+ return OPENAI_MODELS
165
+
166
+ def generate_response(self, prompt: str, model: str = "gpt-3.5-turbo", temperature: float = 0.7, max_tokens: int = 2000) -> Dict[str, Any]:
167
+ """
168
+ OpenAI API kullanarak yanıt oluşturur.
169
+
170
+ Args:
171
+ prompt (str): Gönderilecek prompt
172
+ model (str): Kullanılacak model
173
+ temperature (float): Sıcaklık değeri (0.0-1.0)
174
+ max_tokens (int): Maksimum token sayısı
175
+
176
+ Returns:
177
+ Dict[str, Any]: Yanıt bilgilerini içeren sözlük
178
+ """
179
+ if not self.api_key:
180
+ return {"success": False, "error": "OpenAI API anahtarı ayarlanmamış.", "content": ""}
181
+
182
+ try:
183
+ response = openai.chat.completions.create(
184
+ model=model,
185
+ messages=[{"role": "user", "content": prompt}],
186
+ temperature=temperature,
187
+ max_tokens=max_tokens
188
+ )
189
+
190
+ return {
191
+ "success": True,
192
+ "content": response.choices[0].message.content,
193
+ "model": model,
194
+ "usage": {
195
+ "prompt_tokens": response.usage.prompt_tokens,
196
+ "completion_tokens": response.usage.completion_tokens,
197
+ "total_tokens": response.usage.total_tokens
198
+ }
199
+ }
200
+ except Exception as e:
201
+ return {"success": False, "error": str(e), "content": ""}
202
+
203
+
204
+ class GeminiHandler:
205
+ """
206
+ Google Gemini API ile etkileşim için sınıf.
207
+ """
208
+
209
+ def __init__(self, api_key: str = ""):
210
+ """
211
+ Gemini işleyicisini başlat.
212
+
213
+ Args:
214
+ api_key (str, optional): Gemini API anahtarı
215
+ """
216
+ self.api_key = api_key
217
+ if api_key:
218
+ genai.configure(api_key=api_key)
219
+
220
+ def set_api_key(self, api_key: str) -> None:
221
+ """
222
+ Gemini API anahtarını ayarlar.
223
+
224
+ Args:
225
+ api_key (str): Gemini API anahtarı
226
+ """
227
+ self.api_key = api_key
228
+ genai.configure(api_key=api_key)
229
+
230
+ def get_available_models(self) -> List[str]:
231
+ """
232
+ Kullanılabilir Gemini modellerini döndürür.
233
+
234
+ Returns:
235
+ List[str]: Kullanılabilir modeller listesi
236
+ """
237
+ if not self.api_key:
238
+ return GEMINI_MODELS
239
+
240
+ try:
241
+ models = genai.list_models()
242
+ api_models = []
243
+
244
+ # Tüm model türlerini topla (gemini, imagen, veo, vb.)
245
+ for model in models:
246
+ model_name = model.name.split("/")[-1]
247
+ if any(keyword in model_name.lower() for keyword in ["gemini", "imagen", "veo"]):
248
+ api_models.append(model_name)
249
+
250
+ # Tüm Gemini modellerini döndür, API'den alınamayanlar için varsayılan listeyi kullan
251
+ all_models = list(set(api_models + GEMINI_MODELS))
252
+
253
+ # Varsayılan modelleri önceliklendir
254
+ sorted_models = sorted(
255
+ all_models,
256
+ key=lambda x: (
257
+ 0 if x in GEMINI_MODELS else 1,
258
+ GEMINI_MODELS.index(x) if x in GEMINI_MODELS else float('inf')
259
+ )
260
+ )
261
+
262
+ return sorted_models
263
+ except Exception:
264
+ # API anahtarı geçersiz veya başka bir hata durumunda varsayılan modelleri döndür
265
+ return GEMINI_MODELS
266
+
267
+ def generate_response(self, prompt: str, model: str = "gemini-1.5-pro", temperature: float = 0.7) -> Dict[str, Any]:
268
+ """
269
+ Gemini API kullanarak yanıt oluşturur.
270
+
271
+ Args:
272
+ prompt (str): Gönderilecek prompt
273
+ model (str): Kullanılacak model
274
+ temperature (float): Sıcaklık değeri (0.0-1.0)
275
+
276
+ Returns:
277
+ Dict[str, Any]: Yanıt bilgilerini içeren sözlük
278
+ """
279
+ if not self.api_key:
280
+ return {"success": False, "error": "Gemini API anahtarı ayarlanmamış.", "content": ""}
281
+
282
+ try:
283
+ model_obj = genai.GenerativeModel(model)
284
+ response = model_obj.generate_content(
285
+ prompt,
286
+ generation_config=genai.types.GenerationConfig(
287
+ temperature=temperature
288
+ )
289
+ )
290
+
291
+ return {
292
+ "success": True,
293
+ "content": response.text,
294
+ "model": model
295
+ }
296
+ except Exception as e:
297
+ return {"success": False, "error": str(e), "content": ""}
298
+
299
+
300
+ class OpenRouterHandler:
301
+ """
302
+ OpenRouter API ile etkileşim için sınıf.
303
+ """
304
+
305
+ def __init__(self, api_key: str = ""):
306
+ """
307
+ OpenRouter işleyicisini başlat.
308
+
309
+ Args:
310
+ api_key (str, optional): OpenRouter API anahtarı
311
+ """
312
+ self.api_key = api_key
313
+ self.base_url = "https://openrouter.ai/api/v1"
314
+
315
+ def set_api_key(self, api_key: str) -> None:
316
+ """
317
+ OpenRouter API anahtarını ayarlar.
318
+
319
+ Args:
320
+ api_key (str): OpenRouter API anahtarı
321
+ """
322
+ self.api_key = api_key
323
+
324
+ def get_available_models(self) -> List[str]:
325
+ """
326
+ Kullanılabilir OpenRouter modellerini döndürür.
327
+
328
+ Returns:
329
+ List[str]: Kullanılabilir modeller listesi
330
+ """
331
+ if not self.api_key:
332
+ return OPENROUTER_MODELS
333
+
334
+ try:
335
+ headers = {
336
+ "Authorization": f"Bearer {self.api_key}"
337
+ }
338
+
339
+ response = requests.get(
340
+ f"{self.base_url}/models",
341
+ headers=headers
342
+ )
343
+
344
+ if response.status_code == 200:
345
+ models_data = response.json()
346
+ api_models = [model["id"] for model in models_data["data"]]
347
+
348
+ # API'den alınan modeller ve varsayılan modelleri birleştir
349
+ all_models = list(set(api_models + OPENROUTER_MODELS))
350
+
351
+ return all_models
352
+ else:
353
+ return OPENROUTER_MODELS
354
+ except Exception:
355
+ # API anahtarı geçersiz veya başka bir hata durumunda varsayılan modelleri döndür
356
+ return OPENROUTER_MODELS
357
+
358
+ def generate_response(self, prompt: str, model: str = "openai/gpt-4-turbo", temperature: float = 0.7, max_tokens: int = 2000) -> Dict[str, Any]:
359
+ """
360
+ OpenRouter API kullanarak yanıt oluşturur.
361
+
362
+ Args:
363
+ prompt (str): Gönderilecek prompt
364
+ model (str): Kullanılacak model
365
+ temperature (float): Sıcaklık değeri (0.0-1.0)
366
+ max_tokens (int): Maksimum token sayısı
367
+
368
+ Returns:
369
+ Dict[str, Any]: Yanıt bilgilerini içeren sözlük
370
+ """
371
+ if not self.api_key:
372
+ return {"success": False, "error": "OpenRouter API anahtarı ayarlanmamış.", "content": ""}
373
+
374
+ try:
375
+ headers = {
376
+ "Content-Type": "application/json",
377
+ "Authorization": f"Bearer {self.api_key}"
378
+ }
379
+
380
+ data = {
381
+ "model": model,
382
+ "messages": [{"role": "user", "content": prompt}],
383
+ "temperature": temperature,
384
+ "max_tokens": max_tokens
385
+ }
386
+
387
+ response = requests.post(
388
+ f"{self.base_url}/chat/completions",
389
+ headers=headers,
390
+ json=data
391
+ )
392
+
393
+ if response.status_code == 200:
394
+ response_data = response.json()
395
+ return {
396
+ "success": True,
397
+ "content": response_data["choices"][0]["message"]["content"],
398
+ "model": model,
399
+ "usage": response_data.get("usage", {})
400
+ }
401
+ else:
402
+ return {
403
+ "success": False,
404
+ "error": f"HTTP {response.status_code}: {response.text}",
405
+ "content": ""
406
+ }
407
+ except Exception as e:
408
+ return {"success": False, "error": str(e), "content": ""}
409
+
410
+
411
+ # API işleyicilerini oluştur
412
+ api_manager = APIManager()
413
+ openai_handler = OpenAIHandler()
414
+ gemini_handler = GeminiHandler()
415
+ openrouter_handler = OpenRouterHandler()
416
+
417
+ # API anahtarlarını ayarla (varsa)
418
+ openai_api_key = os.getenv("OPENAI_API_KEY", "")
419
+ gemini_api_key = os.getenv("GEMINI_API_KEY", "")
420
+ openrouter_api_key = os.getenv("OPENROUTER_API_KEY", "")
421
+
422
+ if openai_api_key:
423
+ openai_handler.set_api_key(openai_api_key)
424
+
425
+ if gemini_api_key:
426
+ gemini_handler.set_api_key(gemini_api_key)
427
+
428
+ if openrouter_api_key:
429
+ openrouter_handler.set_api_key(openrouter_api_key)
430
+
431
+ # Test fonksiyonu
432
+ def test_api_connections():
433
+ """
434
+ API bağlantılarını test eder.
435
+ """
436
+ print("API Bağlantı Testi:")
437
+
438
+ # OpenAI API testi
439
+ if openai_api_key:
440
+ print("\nOpenAI API Testi:")
441
+ try:
442
+ models = openai_handler.get_available_models()
443
+ print(f"Kullanılabilir modeller: {models[:5]}...")
444
+ print("OpenAI API bağlantısı başarılı.")
445
+ except Exception as e:
446
+ print(f"OpenAI API hatası: {str(e)}")
447
+ else:
448
+ print("\nOpenAI API anahtarı ayarlanmamış.")
449
+ print(f"Varsayılan modeller: {OPENAI_MODELS}")
450
+
451
+ # Gemini API testi
452
+ if gemini_api_key:
453
+ print("\nGemini API Testi:")
454
+ try:
455
+ models = gemini_handler.get_available_models()
456
+ print(f"Kullanılabilir modeller: {models}")
457
+ print("Gemini API bağlantısı başarılı.")
458
+ except Exception as e:
459
+ print(f"Gemini API hatası: {str(e)}")
460
+ else:
461
+ print("\nGemini API anahtarı ayarlanmamış.")
462
+ print(f"Varsayılan modeller: {GEMINI_MODELS}")
463
+
464
+ # OpenRouter API testi
465
+ if openrouter_api_key:
466
+ print("\nOpenRouter API Testi:")
467
+ try:
468
+ models = openrouter_handler.get_available_models()
469
+ print(f"Kullanılabilir modeller: {len(models)} model bulundu")
470
+ print(f"İlk 10 model: {models[:10]}...")
471
+ print("OpenRouter API bağlantısı başarılı.")
472
+ except Exception as e:
473
+ print(f"OpenRouter API hatası: {str(e)}")
474
+ else:
475
+ print("\nOpenRouter API anahtarı ayarlanmamış.")
476
+ print(f"Varsayılan modeller: {len(OPENROUTER_MODELS)} model bulundu")
477
+ print(f"İlk 10 model: {OPENROUTER_MODELS[:10]}...")
478
+
479
+ if __name__ == "__main__":
480
+ test_api_connections()
app.py ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Prompt Mühendisi Chatbot - Ana Uygulama Dosyası
3
+ Bu dosya, Hugging Face'de deployment için ana giriş noktasıdır.
4
+ """
5
+
6
+ import streamlit as st
7
+ import os
8
+ from dotenv import load_dotenv
9
+
10
+ # Kendi modüllerimizi içe aktar
11
+ from prompt_templates import (
12
+ PROMPT_CATEGORIES,
13
+ predict_category,
14
+ extract_parameters,
15
+ create_prompt
16
+ )
17
+ from chatbot_backend import PromptEngineerChatbot
18
+ from api_integrations import (
19
+ APIManager,
20
+ OpenAIHandler,
21
+ GeminiHandler,
22
+ OpenRouterHandler
23
+ )
24
+ from streamlit_ui import main
25
+
26
+ # .env dosyasını yükle (varsa)
27
+ load_dotenv()
28
+
29
+ # Ana uygulamayı çalıştır
30
+ if __name__ == "__main__":
31
+ main()
chatbot_backend.py ADDED
@@ -0,0 +1,318 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Chatbot backend işlevselliği.
3
+ Bu modül, kullanıcı girdisini işleyen ve dinamik promptlar oluşturan ana mantığı içerir.
4
+ """
5
+
6
+ import os
7
+ import json
8
+ from typing import Dict, Any, Tuple, List, Optional
9
+ import openai
10
+ from google import generativeai as genai
11
+ import requests
12
+ from dotenv import load_dotenv
13
+
14
+ # Prompt şablonlarını içe aktar
15
+ from prompt_templates import (
16
+ PROMPT_CATEGORIES,
17
+ predict_category,
18
+ extract_parameters,
19
+ create_prompt
20
+ )
21
+
22
+ # AI Prompt Generator'ı içe aktar
23
+ from ai_prompt_generator import AIPromptGenerator
24
+
25
+ # .env dosyasını yükle (varsa)
26
+ load_dotenv()
27
+
28
+ class PromptEngineerChatbot:
29
+ """
30
+ Prompt mühendisliği chatbot sınıfı.
31
+ Bu sınıf, kullanıcı girdisini işleyerek dinamik promptlar oluşturur.
32
+ """
33
+
34
+ def __init__(self):
35
+ """
36
+ Chatbot'u başlat ve yapılandır.
37
+ """
38
+ self.conversation_history = []
39
+ self.current_category = None
40
+ self.current_params = None
41
+ self.ai_generator = AIPromptGenerator()
42
+
43
+ def process_input(self, user_input: str, use_ai_generation: bool = True, provider: str = "openai", model: Optional[str] = None) -> Tuple[str, str, Dict[str, Any]]:
44
+ """
45
+ Kullanıcı girdisini işler ve dinamik bir prompt oluşturur.
46
+
47
+ Args:
48
+ user_input (str): Kullanıcı girdisi
49
+ use_ai_generation (bool): AI destekli prompt oluşturmayı kullan
50
+ provider (str): AI sağlayıcısı ('openai', 'gemini', 'openrouter')
51
+ model (str, optional): Kullanılacak model
52
+
53
+ Returns:
54
+ Tuple[str, str, Dict[str, Any]]: Oluşturulan prompt, kategori ve parametreler
55
+ """
56
+ # Kullanıcı girdisini kaydet
57
+ self.conversation_history.append({"role": "user", "content": user_input})
58
+
59
+ # Kategori tahmini
60
+ category = predict_category(user_input)
61
+
62
+ # Parametreleri çıkar
63
+ params = extract_parameters(category, user_input)
64
+
65
+ # Mevcut kategori ve parametreleri güncelle
66
+ self.current_category = category
67
+ self.current_params = params
68
+
69
+ # AI destekli prompt oluşturma kullanılıyorsa
70
+ if use_ai_generation:
71
+ # Şablon tabanlı promptu oluştur (referans için)
72
+ template_prompt = create_prompt(category, params)
73
+
74
+ # Kategori bilgisini ve şablon promptu kullanarak daha spesifik bir AI prompt oluştur
75
+ enhanced_user_input = f"""
76
+ Kategori: {category}
77
+
78
+ Kullanıcı İsteği: {user_input}
79
+
80
+ Lütfen bu istek için çok detaylı ve spesifik bir prompt oluştur.
81
+ Şablon olarak aşağıdaki yapıyı kullanabilirsin, ancak içeriği tamamen kullanıcının isteğine göre özelleştir ve çok daha detaylı hale getir:
82
+
83
+ {template_prompt}
84
+
85
+ Önemli: Yukarıdaki şablonu olduğu gibi kullanma, sadece yapı referansı olarak kullan.
86
+ İçeriği tamamen kullanıcının isteğine özel olarak oluştur ve çok daha detaylı, spesifik bilgiler ekle.
87
+ Örneğin, kullanıcı hava durumu uygulaması istiyorsa, hava durumu API'leri, hava verilerinin görselleştirilmesi,
88
+ hava tahminleri, konum takibi gibi spesifik detaylar ekle.
89
+ """
90
+
91
+ # AI destekli prompt oluştur
92
+ result = self.ai_generator.generate_prompt(enhanced_user_input, provider, model)
93
+
94
+ if result["success"]:
95
+ prompt = result["prompt"]
96
+ else:
97
+ # AI prompt oluşturma başarısız olursa şablon promptu kullan
98
+ prompt = template_prompt
99
+ else:
100
+ # Şablon tabanlı prompt oluştur
101
+ prompt = create_prompt(category, params)
102
+
103
+ # Chatbot yanıtını kaydet
104
+ self.conversation_history.append({"role": "assistant", "content": prompt})
105
+
106
+ return prompt, category, params
107
+
108
+ def get_conversation_history(self) -> List[Dict[str, str]]:
109
+ """
110
+ Konuşma geçmişini döndürür.
111
+
112
+ Returns:
113
+ List[Dict[str, str]]: Konuşma geçmişi
114
+ """
115
+ return self.conversation_history
116
+
117
+ def clear_conversation_history(self) -> None:
118
+ """
119
+ Konuşma geçmişini temizler.
120
+ """
121
+ self.conversation_history = []
122
+ self.current_category = None
123
+ self.current_params = None
124
+
125
+
126
+ class AIModelInterface:
127
+ """
128
+ Farklı AI API'leri için arayüz sınıfı.
129
+ Bu sınıf, OpenAI, Google Gemini ve OpenRouter API'leri ile etkileşim sağlar.
130
+ """
131
+
132
+ def __init__(self):
133
+ """
134
+ AI model arayüzünü başlat.
135
+ """
136
+ self.api_keys = {
137
+ "openai": os.getenv("OPENAI_API_KEY", ""),
138
+ "gemini": os.getenv("GEMINI_API_KEY", ""),
139
+ "openrouter": os.getenv("OPENROUTER_API_KEY", "")
140
+ }
141
+
142
+ def set_api_key(self, provider: str, api_key: str) -> None:
143
+ """
144
+ Belirli bir sağlayıcı için API anahtarını ayarlar.
145
+
146
+ Args:
147
+ provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
148
+ api_key (str): API anahtarı
149
+ """
150
+ if provider in self.api_keys:
151
+ self.api_keys[provider] = api_key
152
+
153
+ def get_available_models(self, provider: str) -> List[str]:
154
+ """
155
+ Belirli bir sağlayıcı için kullanılabilir modelleri döndürür.
156
+
157
+ Args:
158
+ provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
159
+
160
+ Returns:
161
+ List[str]: Kullanılabilir modeller listesi
162
+ """
163
+ if provider == "openai":
164
+ return ["gpt-4o", "gpt-4-turbo", "gpt-4", "gpt-3.5-turbo"]
165
+ elif provider == "gemini":
166
+ return ["gemini-1.5-pro", "gemini-1.5-flash", "gemini-1.0-pro"]
167
+ elif provider == "openrouter":
168
+ return [
169
+ "openai/gpt-4o",
170
+ "openai/gpt-4-turbo",
171
+ "anthropic/claude-3-opus",
172
+ "anthropic/claude-3-sonnet",
173
+ "google/gemini-1.5-pro",
174
+ "meta-llama/llama-3-70b-instruct"
175
+ ]
176
+ return []
177
+
178
+ def generate_with_openai(self, prompt: str, model: str = "gpt-3.5-turbo") -> str:
179
+ """
180
+ OpenAI API kullanarak yanıt oluşturur.
181
+
182
+ Args:
183
+ prompt (str): Gönderilecek prompt
184
+ model (str): Kullanılacak model
185
+
186
+ Returns:
187
+ str: Oluşturulan yanıt
188
+ """
189
+ if not self.api_keys["openai"]:
190
+ return "OpenAI API anahtarı ayarlanmamış."
191
+
192
+ try:
193
+ openai.api_key = self.api_keys["openai"]
194
+ response = openai.chat.completions.create(
195
+ model=model,
196
+ messages=[{"role": "user", "content": prompt}],
197
+ temperature=0.7,
198
+ max_tokens=2000
199
+ )
200
+ return response.choices[0].message.content
201
+ except Exception as e:
202
+ return f"OpenAI API hatası: {str(e)}"
203
+
204
+ def generate_with_gemini(self, prompt: str, model: str = "gemini-1.5-pro") -> str:
205
+ """
206
+ Google Gemini API kullanarak yanıt oluşturur.
207
+
208
+ Args:
209
+ prompt (str): Gönderilecek prompt
210
+ model (str): Kullanılacak model
211
+
212
+ Returns:
213
+ str: Oluşturulan yanıt
214
+ """
215
+ if not self.api_keys["gemini"]:
216
+ return "Gemini API anahtarı ayarlanmamış."
217
+
218
+ try:
219
+ genai.configure(api_key=self.api_keys["gemini"])
220
+ model_obj = genai.GenerativeModel(model)
221
+ response = model_obj.generate_content(prompt)
222
+ return response.text
223
+ except Exception as e:
224
+ return f"Gemini API hatası: {str(e)}"
225
+
226
+ def generate_with_openrouter(self, prompt: str, model: str = "openai/gpt-4-turbo") -> str:
227
+ """
228
+ OpenRouter API kullanarak yanıt oluşturur.
229
+
230
+ Args:
231
+ prompt (str): Gönderilecek prompt
232
+ model (str): Kullanılacak model
233
+
234
+ Returns:
235
+ str: Oluşturulan yanıt
236
+ """
237
+ if not self.api_keys["openrouter"]:
238
+ return "OpenRouter API anahtarı ayarlanmamış."
239
+
240
+ try:
241
+ headers = {
242
+ "Content-Type": "application/json",
243
+ "Authorization": f"Bearer {self.api_keys['openrouter']}"
244
+ }
245
+
246
+ data = {
247
+ "model": model,
248
+ "messages": [{"role": "user", "content": prompt}],
249
+ "temperature": 0.7,
250
+ "max_tokens": 2000
251
+ }
252
+
253
+ response = requests.post(
254
+ "https://openrouter.ai/api/v1/chat/completions",
255
+ headers=headers,
256
+ json=data
257
+ )
258
+
259
+ if response.status_code == 200:
260
+ return response.json()["choices"][0]["message"]["content"]
261
+ else:
262
+ return f"OpenRouter API hatası: {response.status_code} - {response.text}"
263
+ except Exception as e:
264
+ return f"OpenRouter API hatası: {str(e)}"
265
+
266
+ def generate_response(self, provider: str, prompt: str, model: Optional[str] = None) -> str:
267
+ """
268
+ Belirli bir sağlayıcı ve model kullanarak yanıt oluşturur.
269
+
270
+ Args:
271
+ provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
272
+ prompt (str): Gönderilecek prompt
273
+ model (str, optional): Kullanılacak model
274
+
275
+ Returns:
276
+ str: Oluşturulan yanıt
277
+ """
278
+ if provider == "openai":
279
+ if model is None:
280
+ model = "gpt-3.5-turbo"
281
+ return self.generate_with_openai(prompt, model)
282
+ elif provider == "gemini":
283
+ if model is None:
284
+ model = "gemini-1.5-pro"
285
+ return self.generate_with_gemini(prompt, model)
286
+ elif provider == "openrouter":
287
+ if model is None:
288
+ model = "openai/gpt-4-turbo"
289
+ return self.generate_with_openrouter(prompt, model)
290
+ else:
291
+ return "Geçersiz sağlayıcı. Lütfen 'openai', 'gemini' veya 'openrouter' seçin."
292
+
293
+
294
+ # Chatbot ve AI model arayüzü örneklerini oluştur
295
+ chatbot = PromptEngineerChatbot()
296
+ ai_interface = AIModelInterface()
297
+
298
+ # Test fonksiyonu
299
+ def test_chatbot():
300
+ """
301
+ Chatbot'u test eder.
302
+ """
303
+ test_input = "Bir e-ticaret web sitesi yapmak istiyorum. Ürünleri listeleyebilmeli, sepete ekleyebilmeli ve ödeme alabilmeliyim."
304
+ prompt, category, params = chatbot.process_input(test_input, use_ai_generation=True)
305
+
306
+ print(f"Kategori: {category}")
307
+ print(f"Parametreler: {json.dumps(params, indent=2, ensure_ascii=False)}")
308
+ print("\nOluşturulan Prompt:")
309
+ print(prompt)
310
+
311
+ # API yanıtı test (API anahtarı varsa)
312
+ if ai_interface.api_keys["openai"]:
313
+ print("\nOpenAI Yanıtı:")
314
+ response = ai_interface.generate_response("openai", prompt)
315
+ print(response)
316
+
317
+ if __name__ == "__main__":
318
+ test_chatbot()
prompt_templates.py ADDED
@@ -0,0 +1,1838 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Prompt şablonları ve prompt mühendisliği bilgi tabanı.
3
+ Bu modül, farklı kullanım senaryoları için prompt şablonlarını içerir.
4
+ """
5
+
6
+ # Web sitesi geliştirme için prompt şablonları
7
+ WEB_DEVELOPMENT_TEMPLATE = """
8
+ # Web Sitesi Geliştirme Uzmanı Prompt
9
+
10
+ ## Proje Tanımı
11
+ {project_description}
12
+
13
+ ## Teknik Gereksinimler
14
+ - **Frontend Framework/Kütüphane**: {frontend_tech}
15
+ - **Backend Teknolojisi** (varsa): {backend_tech}
16
+ - **Veritabanı** (varsa): {database}
17
+ - **Hedef Cihazlar**: {target_devices}
18
+ - **Tasarım Tercihleri**: {design_preferences}
19
+
20
+ ## İstenen Özellikler
21
+ {features}
22
+
23
+ ## Adım Adım Geliştirme Planı
24
+ 1. Proje yapısını oluştur
25
+ 2. Temel bileşenleri ve sayfaları tasarla
26
+ 3. Stil ve görsel tasarımı uygula
27
+ 4. Backend entegrasyonunu gerçekleştir (gerekirse)
28
+ 5. Veritabanı bağlantılarını kur (gerekirse)
29
+ 6. Kullanıcı etkileşimlerini ve işlevselliği ekle
30
+ 7. Responsive tasarımı optimize et
31
+ 8. Test et ve hataları düzelt
32
+ 9. Performans optimizasyonu yap
33
+ 10. Deployment için hazırla
34
+
35
+ ## Çıktı Formatı
36
+ - Tam kaynak kodu (HTML, CSS, JavaScript/Framework dosyaları)
37
+ - Dosya yapısı açıklaması
38
+ - Kurulum ve çalıştırma talimatları
39
+ - Kullanılan kaynaklar ve kütüphaneler listesi
40
+
41
+ ## Ek Notlar
42
+ {additional_notes}
43
+
44
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve kod örnekleri sağla.
45
+ """
46
+
47
+ # Mobil uygulama geliştirme için prompt şablonu
48
+ MOBILE_APP_TEMPLATE = """
49
+ # Mobil Uygulama Geliştirme Uzmanı Prompt
50
+
51
+ ## Proje Tanımı
52
+ {project_description}
53
+
54
+ ## Teknik Gereksinimler
55
+ - **Uygulama Türü**: {app_type} (Native/Hybrid/Cross-platform)
56
+ - **Platformlar**: {platforms} (iOS/Android/Her ikisi)
57
+ - **Geliştirme Framework'ü**: {framework}
58
+ - **Backend Gereksinimleri**: {backend_requirements}
59
+ - **Hedef Kullanıcı**: {target_audience}
60
+
61
+ ## İstenen Özellikler
62
+ {features}
63
+
64
+ ## Kullanıcı Arayüzü Gereksinimleri
65
+ {ui_requirements}
66
+
67
+ ## Adım Adım Geliştirme Planı
68
+ 1. Proje yapısını ve mimarisini oluştur
69
+ 2. UI/UX tasarımını uygula
70
+ 3. Temel işlevselliği geliştir
71
+ 4. Backend entegrasyonunu gerçekleştir
72
+ 5. Veri depolama ve yönetimini uygula
73
+ 6. Kullanıcı kimlik doğrulama ve yetkilendirmeyi ekle (gerekirse)
74
+ 7. Ek özellikleri entegre et
75
+ 8. Test et ve hataları düzelt
76
+ 9. Performans optimizasyonu yap
77
+ 10. Mağaza yayını için hazırla
78
+
79
+ ## Çıktı Formatı
80
+ - Tam kaynak kodu
81
+ - Dosya yapısı açıklaması
82
+ - Kurulum ve çalıştırma talimatları
83
+ - Kullanılan API'ler ve kütüphaneler listesi
84
+ - Test senaryoları
85
+
86
+ ## Ek Notlar
87
+ {additional_notes}
88
+
89
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve kod örnekleri sağla.
90
+ """
91
+
92
+ # Veri analizi için prompt şablonu
93
+ DATA_ANALYSIS_TEMPLATE = """
94
+ # Veri Analizi Uzmanı Prompt
95
+
96
+ ## Proje Tanımı
97
+ {project_description}
98
+
99
+ ## Veri Kaynağı Bilgileri
100
+ - **Veri Formatı**: {data_format}
101
+ - **Veri Boyutu**: {data_size}
102
+ - **Veri Kaynağı**: {data_source}
103
+ - **Zaman Aralığı**: {time_range}
104
+
105
+ ## Analiz Hedefleri
106
+ {analysis_goals}
107
+
108
+ ## İstenen Analizler
109
+ {required_analyses}
110
+
111
+ ## Görselleştirme Gereksinimleri
112
+ {visualization_requirements}
113
+
114
+ ## Adım Adım Analiz Planı
115
+ 1. Veri yükleme ve ön işleme
116
+ 2. Keşifsel veri analizi (EDA)
117
+ 3. Veri temizleme ve dönüştürme
118
+ 4. İstatistiksel analizler
119
+ 5. İleri analiz teknikleri uygulama (gerekirse)
120
+ 6. Görselleştirmeler oluşturma
121
+ 7. Bulguları yorumlama
122
+ 8. Sonuçları raporlama
123
+
124
+ ## Çıktı Formatı
125
+ - Tam analiz kodu (Python/R)
126
+ - Görselleştirmeler
127
+ - Bulgular ve yorumlar
128
+ - Metodoloji açıklaması
129
+ - Öneriler ve sonraki adımlar
130
+
131
+ ## Ek Notlar
132
+ {additional_notes}
133
+
134
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar, kod örnekleri ve görselleştirmeler sağla.
135
+ """
136
+
137
+ # Veri görselleştirme için prompt şablonu
138
+ DATA_VISUALIZATION_TEMPLATE = """
139
+ # Veri Görselleştirme Uzmanı Prompt
140
+
141
+ ## Proje Tanımı
142
+ {project_description}
143
+
144
+ ## Veri Kaynağı Bilgileri
145
+ - **Veri Formatı**: {data_format}
146
+ - **Veri Boyutu**: {data_size}
147
+ - **Veri Kaynağı**: {data_source}
148
+ - **Veri Türü**: {data_type}
149
+
150
+ ## Görselleştirme Hedefleri
151
+ {visualization_goals}
152
+
153
+ ## İstenen Görselleştirmeler
154
+ {required_visualizations}
155
+
156
+ ## Tasarım Gereksinimleri
157
+ {design_requirements}
158
+
159
+ ## Adım Adım Görselleştirme Planı
160
+ 1. Veri yükleme ve ön işleme
161
+ 2. Görselleştirme türlerini belirleme
162
+ 3. Temel görselleştirmeleri oluşturma
163
+ 4. İnteraktif özellikler ekleme (gerekirse)
164
+ 5. Görsel tasarımı iyileştirme
165
+ 6. Dashboard oluşturma (gerekirse)
166
+ 7. Görselleştirmeleri optimize etme
167
+ 8. Sonuçları paylaşılabilir formatta hazırlama
168
+
169
+ ## Çıktı Formatı
170
+ - Tam görselleştirme kodu (Python/R/JavaScript)
171
+ - Görselleştirme dosyaları (PNG, SVG, HTML, vb.)
172
+ - Kullanılan kütüphaneler ve araçlar
173
+ - Metodoloji açıklaması
174
+ - İnteraktif dashboard (gerekirse)
175
+
176
+ ## Ek Notlar
177
+ {additional_notes}
178
+
179
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve kod örnekleri sağla.
180
+ """
181
+
182
+ # Makine öğrenmesi modeli geliştirme için prompt şablonu
183
+ ML_MODEL_TEMPLATE = """
184
+ # Makine Öğrenmesi Uzmanı Prompt
185
+
186
+ ## Proje Tanımı
187
+ {project_description}
188
+
189
+ ## Veri ve Problem Bilgileri
190
+ - **Problem Türü**: {problem_type} (Sınıflandırma/Regresyon/Kümeleme/vb.)
191
+ - **Veri Seti Özellikleri**: {dataset_features}
192
+ - **Hedef Değişken**: {target_variable}
193
+ - **Değerlendirme Metrikleri**: {evaluation_metrics}
194
+
195
+ ## Model Gereksinimleri
196
+ {model_requirements}
197
+
198
+ ## Adım Adım Model Geliştirme Planı
199
+ 1. Veri yükleme ve keşifsel analiz
200
+ 2. Veri ön işleme ve özellik mühendisliği
201
+ 3. Veri setini eğitim/test olarak bölme
202
+ 4. Temel model oluşturma ve eğitme
203
+ 5. Model değerlendirme ve hata analizi
204
+ 6. Hiperparametre optimizasyonu
205
+ 7. Model iyileştirme ve yeniden eğitim
206
+ 8. Final model değerlendirmesi
207
+ 9. Model yorumlama ve açıklanabilirlik
208
+ 10. Deployment için hazırlama (gerekirse)
209
+
210
+ ## Çıktı Formatı
211
+ - Tam model kodu
212
+ - Model performans metrikleri
213
+ - Özellik önem analizi
214
+ - Model yorumları ve içgörüler
215
+ - Deployment talimatları (gerekirse)
216
+
217
+ ## Ek Notlar
218
+ {additional_notes}
219
+
220
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar, kod örnekleri ve görselleştirmeler sağla.
221
+ """
222
+
223
+ # Derin öğrenme modeli geliştirme için prompt şablonu
224
+ DEEP_LEARNING_TEMPLATE = """
225
+ # Derin Öğrenme Uzmanı Prompt
226
+
227
+ ## Proje Tanımı
228
+ {project_description}
229
+
230
+ ## Veri ve Problem Bilgileri
231
+ - **Problem Türü**: {problem_type} (Görüntü Sınıflandırma/Nesne Tespiti/NLP/vb.)
232
+ - **Veri Seti Özellikleri**: {dataset_features}
233
+ - **Veri Boyutu**: {data_size}
234
+ - **Değerlendirme Metrikleri**: {evaluation_metrics}
235
+
236
+ ## Model Gereksinimleri
237
+ {model_requirements}
238
+
239
+ ## Adım Adım Model Geliştirme Planı
240
+ 1. Veri yükleme ve ön işleme
241
+ 2. Veri artırma (augmentation) stratejileri
242
+ 3. Model mimarisini tasarlama
243
+ 4. Model eğitimi için hiperparametreleri ayarlama
244
+ 5. Model eğitimi ve validasyon
245
+ 6. Model değerlendirme ve hata analizi
246
+ 7. Model optimizasyonu ve fine-tuning
247
+ 8. Final model değerlendirmesi
248
+ 9. Model yorumlama ve görselleştirme
249
+ 10. Deployment için model dönüştürme (gerekirse)
250
+
251
+ ## Çıktı Formatı
252
+ - Tam model kodu (TensorFlow/PyTorch/vb.)
253
+ - Model mimarisi şeması
254
+ - Eğitim ve validasyon grafikleri
255
+ - Model performans metrikleri
256
+ - Deployment talimatları (gerekirse)
257
+
258
+ ## Ek Notlar
259
+ {additional_notes}
260
+
261
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar, kod örnekleri ve görselleştirmeler sağla.
262
+ """
263
+
264
+ # İçerik oluşturma için prompt şablonu
265
+ CONTENT_CREATION_TEMPLATE = """
266
+ # İçerik Oluşturma Uzmanı Prompt
267
+
268
+ ## İçerik Tanımı
269
+ {content_description}
270
+
271
+ ## İçerik Türü
272
+ - **Format**: {content_format} (Blog yazısı/Sosyal medya/E-posta/vb.)
273
+ - **Uzunluk**: {content_length}
274
+ - **Ton**: {tone} (Resmi/Samimi/Bilgilendirici/İkna edici/vb.)
275
+ - **Hedef Kitle**: {target_audience}
276
+
277
+ ## İçerik Hedefleri
278
+ {content_goals}
279
+
280
+ ## Anahtar Noktalar
281
+ {key_points}
282
+
283
+ ## SEO Gereksinimleri (varsa)
284
+ - **Anahtar Kelimeler**: {keywords}
285
+ - **Meta Açıklama**: {meta_description}
286
+
287
+ ## İçerik Yapısı
288
+ 1. Başlık
289
+ 2. Giriş
290
+ 3. Ana bölümler
291
+ 4. Alt başlıklar
292
+ 5. Sonuç
293
+ 6. Çağrı aksiyonu (CTA)
294
+
295
+ ## Referanslar ve Kaynaklar
296
+ {references}
297
+
298
+ ## Ek Notlar
299
+ {additional_notes}
300
+
301
+ Lütfen belirtilen gereksinimlere uygun, özgün ve etkileyici bir içerik oluştur.
302
+ """
303
+
304
+ # Oyun geliştirme için prompt şablonu
305
+ GAME_DEVELOPMENT_TEMPLATE = """
306
+ # Oyun Geliştirme Uzmanı Prompt
307
+
308
+ ## Proje Tanımı
309
+ {project_description}
310
+
311
+ ## Teknik Gereksinimler
312
+ - **Oyun Türü**: {game_type}
313
+ - **Platform**: {platform} (PC/Mobil/Konsol/Web)
314
+ - **Oyun Motoru**: {game_engine}
315
+ - **Grafik Stili**: {graphic_style}
316
+ - **Hedef Kitle**: {target_audience}
317
+
318
+ ## Oyun Mekanikleri
319
+ {game_mechanics}
320
+
321
+ ## Karakter ve Dünya Tasarımı
322
+ {character_world_design}
323
+
324
+ ## Adım Adım Geliştirme Planı
325
+ 1. Oyun konsepti ve tasarım dokümanı oluşturma
326
+ 2. Temel oyun mekaniklerini prototipleme
327
+ 3. Karakter ve dünya varlıklarını oluşturma
328
+ 4. Temel oynanış döngüsünü geliştirme
329
+ 5. Kullanıcı arayüzü tasarımı ve implementasyonu
330
+ 6. Ses ve müzik entegrasyonu
331
+ 7. Seviye tasarımı ve içerik oluşturma
332
+ 8. Test etme ve hata ayıklama
333
+ 9. Performans optimizasyonu
334
+ 10. Dağıtım için hazırlama
335
+
336
+ ## Çıktı Formatı
337
+ - Tam oyun kodu
338
+ - Varlık dosyaları (grafikler, sesler, vb.)
339
+ - Kurulum ve çalıştırma talimatları
340
+ - Oyun tasarım dokümanı
341
+ - Test senaryoları
342
+
343
+ ## Ek Notlar
344
+ {additional_notes}
345
+
346
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve kod örnekleri sağla.
347
+ """
348
+
349
+ # Eğitim içeriği oluşturma için prompt şablonu
350
+ EDUCATION_TEMPLATE = """
351
+ # Eğitim İçeriği Uzmanı Prompt
352
+
353
+ ## Proje Tanımı
354
+ {project_description}
355
+
356
+ ## Eğitim Bilgileri
357
+ - **Konu**: {subject}
358
+ - **Hedef Kitle**: {target_audience}
359
+ - **Zorluk Seviyesi**: {difficulty_level}
360
+ - **Format**: {format} (Video/Metin/İnteraktif/vb.)
361
+ - **Süre/Uzunluk**: {duration_length}
362
+
363
+ ## Öğrenme Hedefleri
364
+ {learning_objectives}
365
+
366
+ ## İçerik Yapısı
367
+ {content_structure}
368
+
369
+ ## Adım Adım Geliştirme Planı
370
+ 1. Konu araştırması ve kaynak toplama
371
+ 2. İçerik taslağı oluşturma
372
+ 3. Temel içeriği geliştirme
373
+ 4. Örnekler ve alıştırmalar ekleme
374
+ 5. Görsel ve multimedya öğeleri hazırlama
375
+ 6. Değerlendirme ve ölçme araçları oluşturma
376
+ 7. İçeriği gözden geçirme ve düzenleme
377
+ 8. Final içeriği hazırlama
378
+
379
+ ## Çıktı Formatı
380
+ - Tam eğitim içeriği
381
+ - Görsel ve multimedya dosyaları
382
+ - Alıştırmalar ve çözümleri
383
+ - Değerlendirme araçları
384
+ - Kaynakça
385
+
386
+ ## Ek Notlar
387
+ {additional_notes}
388
+
389
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve örnekler sağla.
390
+ """
391
+
392
+ # Finans analizi için prompt şablonu
393
+ FINANCE_TEMPLATE = """
394
+ # Finans Analizi Uzmanı Prompt
395
+
396
+ ## Proje Tanımı
397
+ {project_description}
398
+
399
+ ## Finansal Veri Bilgileri
400
+ - **Veri Türü**: {data_type} (Hisse Senedi/Finansal Tablolar/Ekonomik Göstergeler/vb.)
401
+ - **Veri Kaynağı**: {data_source}
402
+ - **Zaman Aralığı**: {time_range}
403
+ - **Analiz Kapsamı**: {analysis_scope}
404
+
405
+ ## Analiz Hedefleri
406
+ {analysis_objectives}
407
+
408
+ ## İstenen Analizler
409
+ {required_analyses}
410
+
411
+ ## Adım Adım Analiz Planı
412
+ 1. Veri toplama ve hazırlama
413
+ 2. Temel finansal analiz
414
+ 3. Trend ve patern analizi
415
+ 4. Risk değerlendirmesi
416
+ 5. Tahmin modelleri oluşturma (gerekirse)
417
+ 6. Senaryo analizi
418
+ 7. Bulguları yorumlama
419
+ 8. Sonuçları raporlama ve öneriler sunma
420
+
421
+ ## Çıktı Formatı
422
+ - Tam analiz raporu
423
+ - Finansal tablolar ve grafikler
424
+ - Risk değerlendirmesi
425
+ - Tahmin modelleri (gerekirse)
426
+ - Yatırım veya finansal stratejiler
427
+
428
+ ## Ek Notlar
429
+ {additional_notes}
430
+
431
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar, hesaplamalar ve görselleştirmeler sağla.
432
+ """
433
+
434
+ # Otomasyon için prompt şablonu
435
+ AUTOMATION_TEMPLATE = """
436
+ # Otomasyon Uzmanı Prompt
437
+
438
+ ## Proje Tanımı
439
+ {project_description}
440
+
441
+ ## Otomasyon Gereksinimleri
442
+ - **Otomasyon Türü**: {automation_type} (İş Akışı/Veri İşleme/Test/vb.)
443
+ - **Mevcut Sistemler**: {existing_systems}
444
+ - **Hedef Platformlar**: {target_platforms}
445
+ - **Kullanıcı Etkileşimi**: {user_interaction} (Tam Otomatik/Yarı Otomatik)
446
+
447
+ ## Otomasyon Hedefleri
448
+ {automation_objectives}
449
+
450
+ ## İş Akışı veya Süreç Detayları
451
+ {workflow_details}
452
+
453
+ ## Adım Adım Geliştirme Planı
454
+ 1. Mevcut süreçleri analiz etme
455
+ 2. Otomasyon stratejisi geliştirme
456
+ 3. Gerekli araçları ve teknolojileri seçme
457
+ 4. Otomasyon senaryolarını tasarlama
458
+ 5. Otomasyon kodunu veya betiklerini geliştirme
459
+ 6. Hata yönetimi ve istisna işleme mekanizmaları ekleme
460
+ 7. Test etme ve doğrulama
461
+ 8. Dokümantasyon ve kullanım talimatları hazırlama
462
+
463
+ ## Çıktı Formatı
464
+ - Tam otomasyon kodu veya betikleri
465
+ - Kurulum ve yapılandırma talimatları
466
+ - Kullanım kılavuzu
467
+ - Test senaryoları ve sonuçları
468
+ - Bakım ve sorun giderme rehberi
469
+
470
+ ## Ek Notlar
471
+ {additional_notes}
472
+
473
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve kod örnekleri sağla.
474
+ """
475
+
476
+ # Siber güvenlik için prompt şablonu
477
+ CYBERSECURITY_TEMPLATE = """
478
+ # Siber Güvenlik Uzmanı Prompt
479
+
480
+ ## Proje Tanımı
481
+ {project_description}
482
+
483
+ ## Güvenlik Gereksinimleri
484
+ - **Güvenlik Alanı**: {security_domain} (Ağ Güvenliği/Uygulama Güvenliği/vb.)
485
+ - **Hedef Sistemler**: {target_systems}
486
+ - **Tehdit Modeli**: {threat_model}
487
+ - **Uyumluluk Gereksinimleri**: {compliance_requirements}
488
+
489
+ ## Güvenlik Hedefleri
490
+ {security_objectives}
491
+
492
+ ## Mevcut Güvenlik Durumu
493
+ {current_security_state}
494
+
495
+ ## Adım Adım Güvenlik Planı
496
+ 1. Güvenlik değerlendirmesi ve risk analizi
497
+ 2. Güvenlik açıklarını belirleme
498
+ 3. Güvenlik stratejisi ve kontrolleri geliştirme
499
+ 4. Güvenlik çözümlerini uygulama
500
+ 5. Güvenlik testleri ve doğrulama
501
+ 6. İzleme ve tespit mekanizmaları kurma
502
+ 7. Olay müdahale planı oluşturma
503
+ 8. Dokümantasyon ve eğitim materyalleri hazırlama
504
+
505
+ ## Çıktı Formatı
506
+ - Güvenlik değerlendirme raporu
507
+ - Güvenlik kontrolleri ve çözümleri
508
+ - Test sonuçları ve kanıtları
509
+ - İzleme ve olay müdahale prosedürleri
510
+ - Güvenlik politikaları ve kılavuzları
511
+
512
+ ## Ek Notlar
513
+ {additional_notes}
514
+
515
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve örnekler sağla.
516
+ """
517
+
518
+ # DevOps için prompt şablonu
519
+ DEVOPS_TEMPLATE = """
520
+ # DevOps Uzmanı Prompt
521
+
522
+ ## Proje Tanımı
523
+ {project_description}
524
+
525
+ ## DevOps Gereksinimleri
526
+ - **Altyapı Türü**: {infrastructure_type} (On-premise/Cloud/Hybrid)
527
+ - **Teknoloji Yığını**: {technology_stack}
528
+ - **Ölçeklendirme Gereksinimleri**: {scaling_requirements}
529
+ - **CI/CD Gereksinimleri**: {cicd_requirements}
530
+
531
+ ## DevOps Hedefleri
532
+ {devops_objectives}
533
+
534
+ ## Mevcut Altyapı ve Süreçler
535
+ {current_infrastructure}
536
+
537
+ ## Adım Adım DevOps Planı
538
+ 1. Mevcut altyapı ve süreçleri değerlendirme
539
+ 2. DevOps stratejisi ve araçları belirleme
540
+ 3. Altyapı otomasyonu (IaC) geliştirme
541
+ 4. CI/CD pipeline'ları oluşturma
542
+ 5. İzleme ve günlük kaydı çözümleri uygulama
543
+ 6. Güvenlik entegrasyonu
544
+ 7. Otomasyon testleri ve doğrulama
545
+ 8. Dokümantasyon ve ekip eğitimi
546
+
547
+ ## Çıktı Formatı
548
+ - Altyapı kodu (Terraform, CloudFormation, vb.)
549
+ - CI/CD pipeline yapılandırmaları
550
+ - İzleme ve günlük kaydı çözümleri
551
+ - Otomasyon betikleri
552
+ - Dokümantasyon ve kılavuzlar
553
+
554
+ ## Ek Notlar
555
+ {additional_notes}
556
+
557
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve kod örnekleri sağla.
558
+ """
559
+
560
+ # IoT için prompt şablonu
561
+ IOT_TEMPLATE = """
562
+ # IoT Uzmanı Prompt
563
+
564
+ ## Proje Tanımı
565
+ {project_description}
566
+
567
+ ## IoT Gereksinimleri
568
+ - **Cihaz Türleri**: {device_types}
569
+ - **Bağlantı Gereksinimleri**: {connectivity_requirements}
570
+ - **Veri İşleme Gereksinimleri**: {data_processing_requirements}
571
+ - **Güvenlik Gereksinimleri**: {security_requirements}
572
+
573
+ ## IoT Hedefleri
574
+ {iot_objectives}
575
+
576
+ ## Sistem Mimarisi
577
+ {system_architecture}
578
+
579
+ ## Adım Adım Geliştirme Planı
580
+ 1. IoT sistem mimarisini tasarlama
581
+ 2. Cihaz yazılımı geliştirme
582
+ 3. Bulut altyapısını kurma
583
+ 4. Veri toplama ve işleme pipeline'ları oluşturma
584
+ 5. Kullanıcı arayüzü veya dashboard geliştirme
585
+ 6. Güvenlik önlemlerini uygulama
586
+ 7. Test etme ve doğrulama
587
+ 8. Deployment ve bakım planı hazırlama
588
+
589
+ ## Çıktı Formatı
590
+ - Cihaz yazılımı kodu
591
+ - Bulut altyapısı kodu
592
+ - Veri işleme pipeline'ları
593
+ - Kullanıcı arayüzü veya dashboard
594
+ - Dokümantasyon ve kılavuzlar
595
+
596
+ ## Ek Notlar
597
+ {additional_notes}
598
+
599
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve kod örnekleri sağla.
600
+ """
601
+
602
+ # Bulut bilişim için prompt şablonu
603
+ CLOUD_COMPUTING_TEMPLATE = """
604
+ # Bulut Bilişim Uzmanı Prompt
605
+
606
+ ## Proje Tanımı
607
+ {project_description}
608
+
609
+ ## Bulut Gereksinimleri
610
+ - **Bulut Sağlayıcısı**: {cloud_provider} (AWS/Azure/GCP/vb.)
611
+ - **Hizmet Modeli**: {service_model} (IaaS/PaaS/SaaS/Serverless)
612
+ - **Ölçeklendirme Gereksinimleri**: {scaling_requirements}
613
+ - **Bütçe Kısıtlamaları**: {budget_constraints}
614
+
615
+ ## Bulut Hedefleri
616
+ {cloud_objectives}
617
+
618
+ ## Mevcut Altyapı
619
+ {current_infrastructure}
620
+
621
+ ## Adım Adım Bulut Planı
622
+ 1. Bulut stratejisi ve mimarisi tasarlama
623
+ 2. Bulut kaynaklarını tanımlama (IaC)
624
+ 3. Ağ ve güvenlik yapılandırması
625
+ 4. Veritabanı ve depolama çözümleri
626
+ 5. Uygulama deployment stratejisi
627
+ 6. İzleme ve günlük kaydı çözümleri
628
+ 7. Maliyet optimizasyonu
629
+ 8. Felaket kurtarma ve yedekleme stratejisi
630
+
631
+ ## Çıktı Formatı
632
+ - Bulut mimarisi şeması
633
+ - Altyapı kodu (Terraform, CloudFormation, vb.)
634
+ - Güvenlik yapılandırmaları
635
+ - Deployment betikleri
636
+ - Maliyet tahminleri ve optimizasyon önerileri
637
+
638
+ ## Ek Notlar
639
+ {additional_notes}
640
+
641
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve kod örnekleri sağla.
642
+ """
643
+
644
+ # Blockchain için prompt şablonu
645
+ BLOCKCHAIN_TEMPLATE = """
646
+ # Blockchain Uzmanı Prompt
647
+
648
+ ## Proje Tanımı
649
+ {project_description}
650
+
651
+ ## Blockchain Gereksinimleri
652
+ - **Blockchain Türü**: {blockchain_type} (Public/Private/Hybrid)
653
+ - **Konsensüs Mekanizması**: {consensus_mechanism}
654
+ - **Akıllı Sözleşme Gereksinimleri**: {smart_contract_requirements}
655
+ - **Ölçeklendirme Gereksinimleri**: {scaling_requirements}
656
+
657
+ ## Blockchain Hedefleri
658
+ {blockchain_objectives}
659
+
660
+ ## Kullanım Senaryoları
661
+ {use_cases}
662
+
663
+ ## Adım Adım Geliştirme Planı
664
+ 1. Blockchain mimarisi tasarlama
665
+ 2. Ağ altyapısını kurma
666
+ 3. Akıllı sözleşmeleri geliştirme
667
+ 4. Kullanıcı arayüzü veya API'ler oluşturma
668
+ 5. Güvenlik denetimi ve test etme
669
+ 6. Performans optimizasyonu
670
+ 7. Deployment ve yönetim stratejisi
671
+ 8. Dokümantasyon ve kullanım kılavuzları hazırlama
672
+
673
+ ## Çıktı Formatı
674
+ - Blockchain konfigürasyonu
675
+ - Akıllı sözleşme kodu
676
+ - API veya kullanıcı arayüzü
677
+ - Güvenlik denetim raporu
678
+ - Dokümantasyon ve kılavuzlar
679
+
680
+ ## Ek Notlar
681
+ {additional_notes}
682
+
683
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve kod örnekleri sağla.
684
+ """
685
+
686
+ # Yapay zeka araştırmaları için prompt şablonu
687
+ AI_RESEARCH_TEMPLATE = """
688
+ # Yapay Zeka Araştırma Uzmanı Prompt
689
+
690
+ ## Araştırma Tanımı
691
+ {research_description}
692
+
693
+ ## Araştırma Alanı
694
+ - **AI Alt Alanı**: {ai_subfield} (NLP/CV/RL/vb.)
695
+ - **Araştırma Türü**: {research_type} (Teorik/Uygulamalı/Deneysel)
696
+ - **Mevcut Literatür Durumu**: {literature_state}
697
+ - **Araştırma Soruları**: {research_questions}
698
+
699
+ ## Araştırma Hedefleri
700
+ {research_objectives}
701
+
702
+ ## Metodoloji
703
+ {methodology}
704
+
705
+ ## Adım Adım Araştırma Planı
706
+ 1. Literatür taraması ve mevcut çalışmaları inceleme
707
+ 2. Araştırma hipotezlerini formüle etme
708
+ 3. Deneysel tasarım veya teorik çerçeve oluşturma
709
+ 4. Veri toplama veya model geliştirme
710
+ 5. Deneyleri yürütme veya teorik analiz yapma
711
+ 6. Sonuçları analiz etme ve yorumlama
712
+ 7. Bulguları literatürle karşılaştırma
713
+ 8. Araştırma makalesi veya raporu yazma
714
+
715
+ ## Çıktı Formatı
716
+ - Araştırma raporu veya makale
717
+ - Deneysel sonuçlar ve analizler
718
+ - Kod veya model (uygulamalı araştırma için)
719
+ - Literatür özeti
720
+ - Gelecek çalışmalar için öneriler
721
+
722
+ ## Ek Notlar
723
+ {additional_notes}
724
+
725
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve analizler sağla.
726
+ """
727
+
728
+ # SEO için prompt şablonu
729
+ SEO_TEMPLATE = """
730
+ # SEO Uzmanı Prompt
731
+
732
+ ## Proje Tanımı
733
+ {project_description}
734
+
735
+ ## SEO Gereksinimleri
736
+ - **Web Sitesi Türü**: {website_type}
737
+ - **Hedef Anahtar Kelimeler**: {target_keywords}
738
+ - **Hedef Pazar/Bölge**: {target_market}
739
+ - **Rekabet Analizi**: {competition_analysis}
740
+
741
+ ## SEO Hedefleri
742
+ {seo_objectives}
743
+
744
+ ## Mevcut SEO Durumu
745
+ {current_seo_state}
746
+
747
+ ## Adım Adım SEO Planı
748
+ 1. Kapsamlı SEO denetimi yapma
749
+ 2. Anahtar kelime araştırması ve analizi
750
+ 3. On-page SEO optimizasyonları
751
+ 4. Teknik SEO iyileştirmeleri
752
+ 5. İçerik stratejisi geliştirme
753
+ 6. Off-page SEO ve bağlantı kurma stratejisi
754
+ 7. Yerel SEO optimizasyonu (gerekirse)
755
+ 8. İzleme ve raporlama sistemi kurma
756
+
757
+ ## Çıktı Formatı
758
+ - SEO denetim raporu
759
+ - Anahtar kelime araştırma sonuçları
760
+ - On-page ve teknik SEO önerileri
761
+ - İçerik planı ve önerileri
762
+ - Bağlantı kurma stratejisi
763
+ - İzleme ve raporlama planı
764
+
765
+ ## Ek Notlar
766
+ {additional_notes}
767
+
768
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve öneriler sağla.
769
+ """
770
+
771
+ # Sosyal medya için prompt şablonu
772
+ SOCIAL_MEDIA_TEMPLATE = """
773
+ # Sosyal Medya Uzmanı Prompt
774
+
775
+ ## Proje Tanımı
776
+ {project_description}
777
+
778
+ ## Sosyal Medya Gereksinimleri
779
+ - **Platformlar**: {platforms} (Instagram/Twitter/Facebook/LinkedIn/TikTok/vb.)
780
+ - **Hedef Kitle**: {target_audience}
781
+ - **Marka Sesi**: {brand_voice}
782
+ - **İçerik Türleri**: {content_types}
783
+
784
+ ## Sosyal Medya Hedefleri
785
+ {social_media_objectives}
786
+
787
+ ## Mevcut Sosyal Medya Varlığı
788
+ {current_social_media_presence}
789
+
790
+ ## Adım Adım Sosyal Medya Planı
791
+ 1. Sosyal medya denetimi yapma
792
+ 2. Hedef kitle analizi
793
+ 3. İçerik stratejisi geliştirme
794
+ 4. İçerik takvimi oluşturma
795
+ 5. İçerik üretimi için kılavuzlar hazırlama
796
+ 6. Etkileşim ve topluluk yönetimi stratejisi
797
+ 7. Reklam ve tanıtım stratejisi (gerekirse)
798
+ 8. Analiz ve raporlama sistemi kurma
799
+
800
+ ## Çıktı Formatı
801
+ - Sosyal medya stratejisi
802
+ - İçerik takvimi
803
+ - İçerik örnekleri ve şablonları
804
+ - Topluluk yönetimi kılavuzu
805
+ - Analiz ve performans metrikleri
806
+
807
+ ## Ek Notlar
808
+ {additional_notes}
809
+
810
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve örnekler sağla.
811
+ """
812
+
813
+ # E-ticaret için prompt şablonu
814
+ E_COMMERCE_TEMPLATE = """
815
+ # E-Ticaret Uzmanı Prompt
816
+
817
+ ## Proje Tanımı
818
+ {project_description}
819
+
820
+ ## E-Ticaret Gereksinimleri
821
+ - **Platform**: {platform} (Shopify/WooCommerce/Magento/vb.)
822
+ - **Ürün Türleri**: {product_types}
823
+ - **Ödeme Yöntemleri**: {payment_methods}
824
+ - **Lojistik Gereksinimleri**: {logistics_requirements}
825
+
826
+ ## E-Ticaret Hedefleri
827
+ {ecommerce_objectives}
828
+
829
+ ## Mevcut E-Ticaret Durumu
830
+ {current_ecommerce_state}
831
+
832
+ ## Adım Adım E-Ticaret Planı
833
+ 1. E-ticaret platformu seçimi ve kurulumu
834
+ 2. Ürün kataloğu ve içerik oluşturma
835
+ 3. Ödeme ve lojistik entegrasyonları
836
+ 4. Kullanıcı deneyimi optimizasyonu
837
+ 5. SEO ve pazarlama stratejisi
838
+ 6. Güvenlik ve uyumluluk kontrolleri
839
+ 7. Test etme ve lansman hazırlığı
840
+ 8. Analiz ve optimizasyon planı
841
+
842
+ ## Çıktı Formatı
843
+ - E-ticaret platform kurulum ve yapılandırması
844
+ - Ürün kataloğu ve içerik stratejisi
845
+ - Ödeme ve lojistik entegrasyonları
846
+ - SEO ve pazarlama planı
847
+ - Analiz ve raporlama sistemi
848
+
849
+ ## Ek Notlar
850
+ {additional_notes}
851
+
852
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve öneriler sağla.
853
+ """
854
+
855
+ # Dijital pazarlama için prompt şablonu
856
+ DIGITAL_MARKETING_TEMPLATE = """
857
+ # Dijital Pazarlama Uzmanı Prompt
858
+
859
+ ## Proje Tanımı
860
+ {project_description}
861
+
862
+ ## Pazarlama Gereksinimleri
863
+ - **Pazarlama Kanalları**: {marketing_channels}
864
+ - **Hedef Kitle**: {target_audience}
865
+ - **Bütçe**: {budget}
866
+ - **Kampanya Süresi**: {campaign_duration}
867
+
868
+ ## Pazarlama Hedefleri
869
+ {marketing_objectives}
870
+
871
+ ## Mevcut Pazarlama Durumu
872
+ {current_marketing_state}
873
+
874
+ ## Adım Adım Pazarlama Planı
875
+ 1. Pazar ve rekabet analizi
876
+ 2. Hedef kitle segmentasyonu
877
+ 3. Pazarlama stratejisi geliştirme
878
+ 4. Kanal bazlı taktikler oluşturma
879
+ 5. İçerik ve yaratıcı stratejisi
880
+ 6. Kampanya takvimi hazırlama
881
+ 7. Bütçe dağılımı ve ROI tahminleri
882
+ 8. İzleme ve optimizasyon planı
883
+
884
+ ## Çıktı Formatı
885
+ - Dijital pazarlama stratejisi
886
+ - Kanal bazlı taktik planları
887
+ - İçerik ve yaratıcı örnekleri
888
+ - Kampanya takvimi
889
+ - Bütçe planı ve ROI tahminleri
890
+
891
+ ## Ek Notlar
892
+ {additional_notes}
893
+
894
+ Lütfen adım adım ilerle ve her aşamada detaylı açıklamalar ve öneriler sağla.
895
+ """
896
+
897
+ # Genel amaçlı prompt şablonu
898
+ GENERAL_PURPOSE_TEMPLATE = """
899
+ # Uzman Prompt
900
+
901
+ ## Görev Tanımı
902
+ {task_description}
903
+
904
+ ## Gereksinimler
905
+ {requirements}
906
+
907
+ ## Beklenen Çıktı
908
+ {expected_output}
909
+
910
+ ## Kısıtlamalar
911
+ {constraints}
912
+
913
+ ## Adım Adım Yaklaşım
914
+ 1. {step_1}
915
+ 2. {step_2}
916
+ 3. {step_3}
917
+ ...
918
+
919
+ ## Ek Bilgiler
920
+ {additional_info}
921
+
922
+ Lütfen belirtilen gereksinimlere uygun, detaylı ve kapsamlı bir çözüm sağla.
923
+ """
924
+
925
+ # Prompt şablonlarını bir sözlükte topla
926
+ PROMPT_TEMPLATES = {
927
+ "web_development": WEB_DEVELOPMENT_TEMPLATE,
928
+ "mobile_app": MOBILE_APP_TEMPLATE,
929
+ "data_analysis": DATA_ANALYSIS_TEMPLATE,
930
+ "data_visualization": DATA_VISUALIZATION_TEMPLATE,
931
+ "ml_model": ML_MODEL_TEMPLATE,
932
+ "deep_learning": DEEP_LEARNING_TEMPLATE,
933
+ "content_creation": CONTENT_CREATION_TEMPLATE,
934
+ "game_development": GAME_DEVELOPMENT_TEMPLATE,
935
+ "education": EDUCATION_TEMPLATE,
936
+ "finance": FINANCE_TEMPLATE,
937
+ "automation": AUTOMATION_TEMPLATE,
938
+ "cybersecurity": CYBERSECURITY_TEMPLATE,
939
+ "devops": DEVOPS_TEMPLATE,
940
+ "iot": IOT_TEMPLATE,
941
+ "cloud_computing": CLOUD_COMPUTING_TEMPLATE,
942
+ "blockchain": BLOCKCHAIN_TEMPLATE,
943
+ "ai_research": AI_RESEARCH_TEMPLATE,
944
+ "seo": SEO_TEMPLATE,
945
+ "social_media": SOCIAL_MEDIA_TEMPLATE,
946
+ "e_commerce": E_COMMERCE_TEMPLATE,
947
+ "digital_marketing": DIGITAL_MARKETING_TEMPLATE,
948
+ "general": GENERAL_PURPOSE_TEMPLATE
949
+ }
950
+
951
+ # Prompt kategorileri ve açıklamaları
952
+ PROMPT_CATEGORIES = {
953
+ "web_development": "Web sitesi geliştirme projeleri için",
954
+ "mobile_app": "Mobil uygulama geliştirme projeleri için",
955
+ "data_analysis": "Veri analizi ve işleme projeleri için",
956
+ "data_visualization": "Veri görselleştirme ve dashboard projeleri için",
957
+ "ml_model": "Makine öğrenmesi modeli geliştirme projeleri için",
958
+ "deep_learning": "Derin öğrenme ve sinir ağları projeleri için",
959
+ "content_creation": "Blog yazısı, sosyal medya içeriği vb. oluşturma için",
960
+ "game_development": "Oyun geliştirme ve tasarım projeleri için",
961
+ "education": "Eğitim içeriği ve materyal geliştirme için",
962
+ "finance": "Finansal analiz ve planlama projeleri için",
963
+ "automation": "İş süreçleri ve görev otomasyonu için",
964
+ "cybersecurity": "Siber güvenlik ve risk yönetimi için",
965
+ "devops": "DevOps ve sürekli entegrasyon/dağıtım için",
966
+ "iot": "Nesnelerin İnterneti (IoT) projeleri için",
967
+ "cloud_computing": "Bulut bilişim ve altyapı projeleri için",
968
+ "blockchain": "Blockchain ve dağıtık sistemler için",
969
+ "ai_research": "Yapay zeka araştırma ve geliştirme projeleri için",
970
+ "seo": "Arama motoru optimizasyonu stratejileri için",
971
+ "social_media": "Sosyal medya stratejisi ve içerik planlaması için",
972
+ "e_commerce": "E-ticaret platformu ve stratejisi geliştirme için",
973
+ "digital_marketing": "Dijital pazarlama kampanyaları ve stratejileri için",
974
+ "general": "Genel amaçlı görevler için"
975
+ }
976
+
977
+ # OpenAI modelleri
978
+ OPENAI_MODELS = [
979
+ "gpt-4o",
980
+ "gpt-4o-mini",
981
+ "gpt-4-turbo",
982
+ "gpt-4",
983
+ "gpt-4-32k",
984
+ "gpt-3.5-turbo",
985
+ "gpt-3.5-turbo-16k"
986
+ ]
987
+
988
+ # Gemini modelleri
989
+ GEMINI_MODELS = [
990
+ "gemini-2.5-pro-preview-03-25",
991
+ "gemini-2.0-flash",
992
+ "gemini-2.0-flash-lite",
993
+ "gemini-1.5-flash",
994
+ "gemini-1.5-flash-8b",
995
+ "gemini-1.5-pro",
996
+ "gemini-embedding-exp",
997
+ "imagen-3.0-generate-002",
998
+ "veo-2.0-generate-001",
999
+ "gemini-2.0-flash-live-001",
1000
+ "gemini-1.0-pro",
1001
+ "gemini-1.0-pro-vision",
1002
+ "gemini-1.0-pro-latest",
1003
+ "gemini-1.0-pro-vision-latest"
1004
+ ]
1005
+
1006
+ # OpenRouter modelleri
1007
+ OPENROUTER_MODELS = [
1008
+ # OpenAI modelleri
1009
+ "openai/gpt-4o",
1010
+ "openai/gpt-4o-mini",
1011
+ "openai/gpt-4-turbo",
1012
+ "openai/gpt-4",
1013
+ "openai/gpt-4-32k",
1014
+ "openai/gpt-3.5-turbo",
1015
+ "openai/gpt-3.5-turbo-16k",
1016
+
1017
+ # Anthropic modelleri
1018
+ "anthropic/claude-3.7-sonnet",
1019
+ "anthropic/claude-3.5-sonnet",
1020
+ "anthropic/claude-3-opus",
1021
+ "anthropic/claude-3-sonnet",
1022
+ "anthropic/claude-3-haiku",
1023
+ "anthropic/claude-2.1",
1024
+ "anthropic/claude-2",
1025
+ "anthropic/claude-instant-1.2",
1026
+
1027
+ # Google modelleri
1028
+ "google/gemini-2.5-pro-preview-03-25",
1029
+ "google/gemini-2.0-flash",
1030
+ "google/gemini-2.0-flash-lite",
1031
+ "google/gemini-1.5-flash",
1032
+ "google/gemini-1.5-flash-8b",
1033
+ "google/gemini-1.5-pro",
1034
+ "google/gemini-1.0-pro",
1035
+
1036
+ # Meta modelleri
1037
+ "meta-llama/llama-3-70b-instruct",
1038
+ "meta-llama/llama-3-8b-instruct",
1039
+ "meta-llama/llama-3.1-405b-instruct",
1040
+ "meta-llama/llama-3.1-70b-instruct",
1041
+ "meta-llama/llama-3.1-8b-instruct",
1042
+ "meta-llama/llama-2-70b-chat",
1043
+ "meta-llama/llama-2-13b-chat",
1044
+ "meta-llama/llama-2-7b-chat",
1045
+
1046
+ # Mistral modelleri
1047
+ "mistral/mistral-large-2",
1048
+ "mistral/mistral-large",
1049
+ "mistral/mistral-medium",
1050
+ "mistral/mistral-small",
1051
+ "mistral/mistral-7b-instruct",
1052
+
1053
+ # xAI modelleri
1054
+ "x-ai/grok-3-beta",
1055
+ "x-ai/grok-3-mini-beta",
1056
+ "x-ai/grok-2",
1057
+ "x-ai/grok-1.5-pro",
1058
+ "x-ai/grok-1",
1059
+
1060
+ # Cohere modelleri
1061
+ "cohere/command-r-plus",
1062
+ "cohere/command-r",
1063
+
1064
+ # Perplexity modelleri
1065
+ "perplexity/sonar-small-online",
1066
+ "perplexity/sonar-medium-online",
1067
+ "perplexity/sonar-medium-chat",
1068
+
1069
+ # NVIDIA modelleri
1070
+ "nvidia/llama-3.1-nemotron-ultra-253b-v1",
1071
+ "nvidia/llama-3.3-nemotron-super-49b-v1",
1072
+ "nvidia/llama-3.1-nemotron-nano-8b-v1",
1073
+
1074
+ # Moonshot AI modelleri
1075
+ "moonshotai/kimi-vl-a3b-thinking",
1076
+
1077
+ # Optimus modelleri
1078
+ "openrouter/optimus-alpha",
1079
+
1080
+ # Swallow modelleri
1081
+ "tokyotech-llm/llama-3.1-swallow-8b-instruct-v0.3",
1082
+
1083
+ # Meta Llama 4 modelleri
1084
+ "meta-llama/llama-4-maverick",
1085
+
1086
+ # Qwen modelleri
1087
+ "qwen/qwen-2-72b-instruct",
1088
+ "qwen/qwen-2-7b-instruct",
1089
+
1090
+ # Deepseek modelleri
1091
+ "deepseek/deepseek-coder-v2",
1092
+ "deepseek/deepseek-v2",
1093
+
1094
+ # Aleph Alpha modelleri
1095
+ "aleph-alpha/luminous-supreme",
1096
+ "aleph-alpha/luminous-base",
1097
+
1098
+ # Databricks modelleri
1099
+ "databricks/dbrx-instruct",
1100
+
1101
+ # Nous modelleri
1102
+ "nous/nous-hermes-2-mixtral-8x7b-dpo",
1103
+ "nous/nous-hermes-2-yi-34b",
1104
+
1105
+ # Jais modelleri
1106
+ "jais/jais-30b-chat",
1107
+ "jais/jais-13b-chat",
1108
+
1109
+ # Snowflake modelleri
1110
+ "snowflake/arctic",
1111
+
1112
+ # Adept modelleri
1113
+ "adept/fuyu-8b",
1114
+
1115
+ # Anyscale modelleri
1116
+ "anyscale/mistral-7b-instruct",
1117
+
1118
+ # Stability AI modelleri
1119
+ "stability/stable-code-3b",
1120
+
1121
+ # Fireworks modelleri
1122
+ "fireworks/firefunction-v2",
1123
+ "fireworks/firellava-13b",
1124
+
1125
+ # Voyage modelleri
1126
+ "voyage/voyage-2",
1127
+ "voyage/voyage-lite-2",
1128
+
1129
+ # Groq modelleri
1130
+ "groq/llama-3-70b-8192",
1131
+ "groq/mixtral-8x7b-32768",
1132
+
1133
+ # Reka modelleri
1134
+ "reka/reka-core",
1135
+ "reka/reka-flash",
1136
+
1137
+ # Quasar modelleri
1138
+ "quasar/quasar-alpha",
1139
+
1140
+ # Zypher modelleri
1141
+ "zypher/zypher-7b-beta",
1142
+
1143
+ # Inflection modelleri
1144
+ "inflection/inflection-2",
1145
+
1146
+ # Cloudflare modelleri
1147
+ "cloudflare/workers-ai-mistral-7b",
1148
+
1149
+ # Hugging Face modelleri
1150
+ "huggingface/zephyr-7b-beta",
1151
+
1152
+ # Replicate modelleri
1153
+ "replicate/llama-2-70b-chat",
1154
+
1155
+ # Together AI modelleri
1156
+ "together/yi-34b-chat",
1157
+ "together/llama-2-7b-chat",
1158
+
1159
+ # Phind modelleri
1160
+ "phind/phind-codellama-34b",
1161
+
1162
+ # Teknium modelleri
1163
+ "teknium/openhermes-2.5-mistral-7b",
1164
+
1165
+ # Gryphe modelleri
1166
+ "gryphe/mythomist-7b",
1167
+
1168
+ # Neversleep modelleri
1169
+ "neversleep/llama-2-13b-chat-hf",
1170
+
1171
+ # Mancer modelleri
1172
+ "mancer/weaver",
1173
+
1174
+ # Openchat modelleri
1175
+ "openchat/openchat-7b",
1176
+
1177
+ # Cognitivecomputations modelleri
1178
+ "cognitivecomputations/dolphin-2.5-mixtral-8x7b",
1179
+
1180
+ # Nousresearch modelleri
1181
+ "nousresearch/nous-hermes-llama2-13b",
1182
+
1183
+ # Lizpreciatior modelleri
1184
+ "lizpreciatior/lzlv-70b-fp16-hf",
1185
+
1186
+ # Pygmalionai modelleri
1187
+ "pygmalionai/mythalion-13b",
1188
+
1189
+ # Undi95 modelleri
1190
+ "undi95/remm-slerp-l2-13b",
1191
+
1192
+ # Jondurbin modelleri
1193
+ "jondurbin/airoboros-l2-70b-gpt4-1.4.1",
1194
+
1195
+ # Migtissera modelleri
1196
+ "migtissera/synthia-70b",
1197
+
1198
+ # Alpindale modelleri
1199
+ "alpindale/goliath-120b",
1200
+
1201
+ # Koboldai modelleri
1202
+ "koboldai/psyfighter-13b-2",
1203
+
1204
+ # Ehartford modelleri
1205
+ "ehartford/samantha-1.2-mistral-7b",
1206
+
1207
+ # Austism modelleri
1208
+ "austism/chronos-hermes-13b",
1209
+
1210
+ # Openaccess-ai-collective modelleri
1211
+ "openaccess-ai-collective/manticore-13b-chat",
1212
+
1213
+ # Lmsys modelleri
1214
+ "lmsys/vicuna-13b-v1.5",
1215
+
1216
+ # Databricks modelleri
1217
+ "databricks/dolly-v2-12b",
1218
+
1219
+ # Stabilityai modelleri
1220
+ "stabilityai/stablelm-tuned-alpha-7b",
1221
+
1222
+ # Togethercomputer modelleri
1223
+ "togethercomputer/redpajama-incite-7b-chat",
1224
+
1225
+ # Rwkv modelleri
1226
+ "rwkv/rwkv-4-raven-14b",
1227
+
1228
+ # Cerebras modelleri
1229
+ "cerebras/cerebras-gpt-13b",
1230
+
1231
+ # Mosaicml modelleri
1232
+ "mosaicml/mpt-7b-chat",
1233
+
1234
+ # Bigscience modelleri
1235
+ "bigscience/bloom-7b1",
1236
+
1237
+ # Eleutherai modelleri
1238
+ "eleutherai/gpt-neox-20b",
1239
+
1240
+ # Tiiuae modelleri
1241
+ "tiiuae/falcon-7b-instruct",
1242
+
1243
+ # Writer modelleri
1244
+ "writer/palmyra-e",
1245
+
1246
+ # Alibaba modelleri
1247
+ "alibaba/qwen-7b-chat",
1248
+
1249
+ # 01-ai modelleri
1250
+ "01-ai/yi-6b-chat",
1251
+
1252
+ # Baichuan modelleri
1253
+ "baichuan/baichuan-13b-chat",
1254
+
1255
+ # Internlm modelleri
1256
+ "internlm/internlm-7b",
1257
+
1258
+ # Chatglm modelleri
1259
+ "chatglm/chatglm2-6b",
1260
+
1261
+ # Thudm modelleri
1262
+ "thudm/chatglm-6b",
1263
+
1264
+ # Zhipu modelleri
1265
+ "zhipu/chatglm3-6b",
1266
+
1267
+ # Moonshot modelleri
1268
+ "moonshot/moonshot-v1-8k",
1269
+
1270
+ # Deepinfra modelleri
1271
+ "deepinfra/mistral-7b",
1272
+
1273
+ # Deepseek modelleri
1274
+ "deepseek/deepseek-llm-7b-chat",
1275
+
1276
+ # Upstage modelleri
1277
+ "upstage/solar-10.7b-instruct",
1278
+
1279
+ # Snorkelai modelleri
1280
+ "snorkelai/snorkel-mistral-7b",
1281
+
1282
+ # Recursal modelleri
1283
+ "recursal/rwkv-5-3b-ai-town",
1284
+
1285
+ # Allenai modelleri
1286
+ "allenai/tulu-2-dpo-7b",
1287
+
1288
+ # Databricks modelleri
1289
+ "databricks/dbrx-instruct",
1290
+
1291
+ # Snowflake modelleri
1292
+ "snowflake/arctic",
1293
+
1294
+ # Adept modelleri
1295
+ "adept/persimmon-8b-base",
1296
+
1297
+ # Anyscale modelleri
1298
+ "anyscale/mistral-7b-instruct",
1299
+
1300
+ # Stability AI modelleri
1301
+ "stability/stable-code-3b",
1302
+
1303
+ # Fireworks modelleri
1304
+ "fireworks/firefunction-v1",
1305
+
1306
+ # Voyage modelleri
1307
+ "voyage/voyage-2",
1308
+
1309
+ # Groq modelleri
1310
+ "groq/llama-3-70b-8192",
1311
+
1312
+ # Reka modelleri
1313
+ "reka/reka-core",
1314
+
1315
+ # Quasar modelleri
1316
+ "quasar/quasar-alpha",
1317
+
1318
+ # Zypher modelleri
1319
+ "zypher/zypher-7b-beta",
1320
+
1321
+ # Inflection modelleri
1322
+ "inflection/inflection-2",
1323
+
1324
+ # Cloudflare modelleri
1325
+ "cloudflare/workers-ai-mistral-7b",
1326
+
1327
+ # Hugging Face modelleri
1328
+ "huggingface/zephyr-7b-beta",
1329
+
1330
+ # Replicate modelleri
1331
+ "replicate/llama-2-70b-chat",
1332
+
1333
+ # Together AI modelleri
1334
+ "together/yi-34b-chat",
1335
+
1336
+ # Phind modelleri
1337
+ "phind/phind-codellama-34b",
1338
+
1339
+ # Teknium modelleri
1340
+ "teknium/openhermes-2.5-mistral-7b",
1341
+
1342
+ # Gryphe modelleri
1343
+ "gryphe/mythomist-7b",
1344
+
1345
+ # Neversleep modelleri
1346
+ "neversleep/llama-2-13b-chat-hf",
1347
+
1348
+ # Mancer modelleri
1349
+ "mancer/weaver",
1350
+
1351
+ # Openchat modelleri
1352
+ "openchat/openchat-7b",
1353
+
1354
+ # Cognitivecomputations modelleri
1355
+ "cognitivecomputations/dolphin-2.5-mixtral-8x7b",
1356
+
1357
+ # Nousresearch modelleri
1358
+ "nousresearch/nous-hermes-llama2-13b",
1359
+
1360
+ # Lizpreciatior modelleri
1361
+ "lizpreciatior/lzlv-70b-fp16-hf",
1362
+
1363
+ # Pygmalionai modelleri
1364
+ "pygmalionai/mythalion-13b",
1365
+
1366
+ # Undi95 modelleri
1367
+ "undi95/remm-slerp-l2-13b",
1368
+
1369
+ # Jondurbin modelleri
1370
+ "jondurbin/airoboros-l2-70b-gpt4-1.4.1",
1371
+
1372
+ # Migtissera modelleri
1373
+ "migtissera/synthia-70b",
1374
+
1375
+ # Alpindale modelleri
1376
+ "alpindale/goliath-120b",
1377
+
1378
+ # Koboldai modelleri
1379
+ "koboldai/psyfighter-13b-2",
1380
+
1381
+ # Ehartford modelleri
1382
+ "ehartford/samantha-1.2-mistral-7b",
1383
+
1384
+ # Austism modelleri
1385
+ "austism/chronos-hermes-13b",
1386
+
1387
+ # Openaccess-ai-collective modelleri
1388
+ "openaccess-ai-collective/manticore-13b-chat",
1389
+
1390
+ # Lmsys modelleri
1391
+ "lmsys/vicuna-13b-v1.5",
1392
+
1393
+ # Databricks modelleri
1394
+ "databricks/dolly-v2-12b",
1395
+
1396
+ # Stabilityai modelleri
1397
+ "stabilityai/stablelm-tuned-alpha-7b",
1398
+
1399
+ # Togethercomputer modelleri
1400
+ "togethercomputer/redpajama-incite-7b-chat",
1401
+
1402
+ # Rwkv modelleri
1403
+ "rwkv/rwkv-4-raven-14b",
1404
+
1405
+ # Cerebras modelleri
1406
+ "cerebras/cerebras-gpt-13b",
1407
+
1408
+ # Mosaicml modelleri
1409
+ "mosaicml/mpt-7b-chat",
1410
+
1411
+ # Bigscience modelleri
1412
+ "bigscience/bloom-7b1",
1413
+
1414
+ # Eleutherai modelleri
1415
+ "eleutherai/gpt-neox-20b",
1416
+
1417
+ # Tiiuae modelleri
1418
+ "tiiuae/falcon-7b-instruct",
1419
+
1420
+ # Writer modelleri
1421
+ "writer/palmyra-e",
1422
+
1423
+ # Alibaba modelleri
1424
+ "alibaba/qwen-7b-chat",
1425
+
1426
+ # 01-ai modelleri
1427
+ "01-ai/yi-6b-chat",
1428
+
1429
+ # Baichuan modelleri
1430
+ "baichuan/baichuan-13b-chat",
1431
+
1432
+ # Internlm modelleri
1433
+ "internlm/internlm-7b",
1434
+
1435
+ # Chatglm modelleri
1436
+ "chatglm/chatglm2-6b",
1437
+
1438
+ # Thudm modelleri
1439
+ "thudm/chatglm-6b",
1440
+
1441
+ # Zhipu modelleri
1442
+ "zhipu/chatglm3-6b",
1443
+
1444
+ # Moonshot modelleri
1445
+ "moonshot/moonshot-v1-8k"
1446
+ ]
1447
+
1448
+ # Prompt oluşturma fonksiyonu
1449
+ def create_prompt(category, params):
1450
+ """
1451
+ Belirli bir kategori ve parametreler için prompt oluşturur.
1452
+
1453
+ Args:
1454
+ category (str): Prompt kategorisi
1455
+ params (dict): Prompt parametreleri
1456
+
1457
+ Returns:
1458
+ str: Oluşturulan prompt
1459
+ """
1460
+ if category not in PROMPT_TEMPLATES:
1461
+ return "Geçersiz kategori. Lütfen geçerli bir kategori seçin."
1462
+
1463
+ template = PROMPT_TEMPLATES[category]
1464
+
1465
+ # Eksik parametreler için varsayılan değerler
1466
+ for key in [k for k in params.keys() if params[k] is None or params[k] == ""]:
1467
+ params[key] = "Belirtilmemiş"
1468
+
1469
+ # Format string ile prompt oluştur
1470
+ try:
1471
+ prompt = template.format(**params)
1472
+ return prompt
1473
+ except KeyError as e:
1474
+ return f"Eksik parametre: {e}"
1475
+ except Exception as e:
1476
+ return f"Prompt oluşturulurken hata oluştu: {e}"
1477
+
1478
+ # Prompt kategorisini tahmin etme fonksiyonu
1479
+ def predict_category(user_input):
1480
+ """
1481
+ Kullanıcı girdisine göre en uygun prompt kategorisini tahmin eder.
1482
+
1483
+ Args:
1484
+ user_input (str): Kullanıcı girdisi
1485
+
1486
+ Returns:
1487
+ str: Tahmini prompt kategorisi
1488
+ """
1489
+ # Basit anahtar kelime tabanlı kategori tahmini
1490
+ keywords = {
1491
+ "web_development": ["web", "site", "website", "html", "css", "javascript", "frontend", "backend", "responsive", "sayfa"],
1492
+ "mobile_app": ["mobil", "uygulama", "app", "android", "ios", "flutter", "react native", "swift", "kotlin"],
1493
+ "data_analysis": ["veri", "analiz", "data", "analysis", "istatistik", "statistics", "analitik", "analytics"],
1494
+ "data_visualization": ["görselleştirme", "visualization", "dashboard", "grafik", "chart", "veri görselleştirme", "data viz"],
1495
+ "ml_model": ["makine öğrenmesi", "machine learning", "model", "yapay zeka", "ai", "artificial intelligence", "tahmin", "prediction", "sınıflandırma", "classification"],
1496
+ "deep_learning": ["derin öğrenme", "deep learning", "neural network", "sinir ağı", "cnn", "rnn", "lstm", "transformer"],
1497
+ "content_creation": ["içerik", "yazı", "blog", "makale", "article", "sosyal medya", "social media", "metin", "text", "pazarlama", "marketing"],
1498
+ "game_development": ["oyun", "game", "unity", "unreal", "2d", "3d", "oyun geliştirme", "game dev"],
1499
+ "education": ["eğitim", "education", "öğretim", "teaching", "kurs", "course", "öğrenme", "learning"],
1500
+ "finance": ["finans", "finance", "finansal", "financial", "yatırım", "investment", "bütçe", "budget"],
1501
+ "automation": ["otomasyon", "automation", "bot", "script", "workflow", "iş akışı"],
1502
+ "cybersecurity": ["güvenlik", "security", "siber", "cyber", "hack", "sızma", "penetration", "güvenlik duvarı", "firewall"],
1503
+ "devops": ["devops", "ci/cd", "pipeline", "deployment", "docker", "kubernetes", "container"],
1504
+ "iot": ["iot", "nesnelerin interneti", "internet of things", "sensör", "sensor", "arduino", "raspberry pi"],
1505
+ "cloud_computing": ["bulut", "cloud", "aws", "azure", "gcp", "serverless", "saas", "paas", "iaas"],
1506
+ "blockchain": ["blockchain", "blok zinciri", "crypto", "kripto", "nft", "token", "smart contract", "akıllı sözleşme"],
1507
+ "ai_research": ["ai research", "yapay zeka araştırması", "ai paper", "research", "araştırma", "paper", "makale"],
1508
+ "seo": ["seo", "search engine optimization", "arama motoru optimizasyonu", "google", "ranking", "sıralama"],
1509
+ "social_media": ["sosyal medya", "social media", "instagram", "twitter", "facebook", "linkedin", "tiktok"],
1510
+ "e_commerce": ["e-ticaret", "ecommerce", "online satış", "online sales", "shopify", "woocommerce", "magento"],
1511
+ "digital_marketing": ["dijital pazarlama", "digital marketing", "online marketing", "çevrimiçi pazarlama", "ads", "reklamlar"]
1512
+ }
1513
+
1514
+ # Kullanıcı girdisini küçük harfe çevir
1515
+ user_input_lower = user_input.lower()
1516
+
1517
+ # Her kategori için eşleşen anahtar kelime sayısını hesapla
1518
+ category_scores = {}
1519
+ for category, category_keywords in keywords.items():
1520
+ score = sum(1 for keyword in category_keywords if keyword in user_input_lower)
1521
+ category_scores[category] = score
1522
+
1523
+ # En yüksek skora sahip kategoriyi bul
1524
+ max_score = max(category_scores.values())
1525
+ if max_score > 0:
1526
+ for category, score in category_scores.items():
1527
+ if score == max_score:
1528
+ return category
1529
+
1530
+ # Eşleşme bulunamazsa genel kategoriyi döndür
1531
+ return "general"
1532
+
1533
+ # Kullanıcı girdisinden parametreleri çıkarma fonksiyonu
1534
+ def extract_parameters(category, user_input):
1535
+ """
1536
+ Kullanıcı girdisinden prompt parametrelerini çıkarır.
1537
+
1538
+ Args:
1539
+ category (str): Prompt kategorisi
1540
+ user_input (str): Kullanıcı girdisi
1541
+
1542
+ Returns:
1543
+ dict: Çıkarılan parametreler
1544
+ """
1545
+ # Kategori bazlı parametre çıkarma
1546
+ if category == "web_development":
1547
+ params = {
1548
+ "project_description": user_input,
1549
+ "frontend_tech": "HTML, CSS, JavaScript (Özel teknolojiler belirtilmemişse)",
1550
+ "backend_tech": "Belirtilmemiş",
1551
+ "database": "Belirtilmemiş",
1552
+ "target_devices": "Masaüstü ve Mobil",
1553
+ "design_preferences": "Modern, kullanıcı dostu arayüz",
1554
+ "features": "- Kullanıcı dostu arayüz\n- Responsive tasarım\n- Hızlı yükleme süresi",
1555
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1556
+ }
1557
+
1558
+ elif category == "mobile_app":
1559
+ params = {
1560
+ "project_description": user_input,
1561
+ "app_type": "Cross-platform",
1562
+ "platforms": "iOS ve Android",
1563
+ "framework": "React Native veya Flutter",
1564
+ "backend_requirements": "Belirtilmemiş",
1565
+ "target_audience": "Genel kullanıcılar",
1566
+ "features": "- Kullanıcı kaydı ve girişi\n- Ana işlevsellik\n- Bildirimler",
1567
+ "ui_requirements": "Modern ve sezgisel kullanıcı arayüzü",
1568
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1569
+ }
1570
+
1571
+ elif category == "data_analysis":
1572
+ params = {
1573
+ "project_description": user_input,
1574
+ "data_format": "CSV veya Excel",
1575
+ "data_size": "Belirtilmemiş",
1576
+ "data_source": "Belirtilmemiş",
1577
+ "time_range": "Belirtilmemiş",
1578
+ "analysis_goals": "Veri içindeki temel eğilimleri ve ilişkileri keşfetmek",
1579
+ "required_analyses": "- Tanımlayıcı istatistikler\n- Korelasyon analizi\n- Zaman serisi analizi (uygunsa)",
1580
+ "visualization_requirements": "Temel grafikler ve interaktif dashboard",
1581
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1582
+ }
1583
+
1584
+ elif category == "data_visualization":
1585
+ params = {
1586
+ "project_description": user_input,
1587
+ "data_format": "CSV veya Excel",
1588
+ "data_size": "Belirtilmemiş",
1589
+ "data_source": "Belirtilmemiş",
1590
+ "data_type": "Belirtilmemiş",
1591
+ "visualization_goals": "Veri içindeki temel eğilimleri ve ilişkileri görsel olarak sunmak",
1592
+ "required_visualizations": "- Çizgi ve çubuk grafikleri\n- Dağılım grafikleri\n- Interaktif dashboard",
1593
+ "design_requirements": "Sade, anlaşılır ve profesyonel tasarım",
1594
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1595
+ }
1596
+
1597
+ elif category == "ml_model":
1598
+ params = {
1599
+ "project_description": user_input,
1600
+ "problem_type": "Belirtilmemiş",
1601
+ "dataset_features": "Belirtilmemiş",
1602
+ "target_variable": "Belirtilmemiş",
1603
+ "evaluation_metrics": "Doğruluk, Kesinlik, Duyarlılık, F1-skoru",
1604
+ "model_requirements": "- Yüksek doğruluk\n- Açıklanabilirlik\n- Hızlı çıkarım süresi",
1605
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1606
+ }
1607
+
1608
+ elif category == "deep_learning":
1609
+ params = {
1610
+ "project_description": user_input,
1611
+ "problem_type": "Belirtilmemiş",
1612
+ "dataset_features": "Belirtilmemiş",
1613
+ "data_size": "Belirtilmemiş",
1614
+ "evaluation_metrics": "Doğruluk, Kesinlik, Duyarlılık, F1-skoru",
1615
+ "model_requirements": "- Yüksek doğruluk\n- Verimli eğitim süresi\n- Hızlı çıkarım süresi",
1616
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1617
+ }
1618
+
1619
+ elif category == "content_creation":
1620
+ params = {
1621
+ "content_description": user_input,
1622
+ "content_format": "Blog yazısı",
1623
+ "content_length": "1000-1500 kelime",
1624
+ "tone": "Bilgilendirici ve samimi",
1625
+ "target_audience": "Genel okuyucular",
1626
+ "content_goals": "Bilgilendirmek ve ilgi çekmek",
1627
+ "key_points": "Kullanıcı girdisinden çıkarılacak",
1628
+ "keywords": "Belirtilmemiş",
1629
+ "meta_description": "Belirtilmemiş",
1630
+ "references": "Güvenilir kaynaklar kullanılmalıdır",
1631
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1632
+ }
1633
+
1634
+ elif category == "game_development":
1635
+ params = {
1636
+ "project_description": user_input,
1637
+ "game_type": "Belirtilmemiş",
1638
+ "platform": "PC",
1639
+ "game_engine": "Unity veya Unreal Engine",
1640
+ "graphic_style": "Belirtilmemiş",
1641
+ "target_audience": "Genel oyuncular",
1642
+ "game_mechanics": "Belirtilmemiş",
1643
+ "character_world_design": "Belirtilmemiş",
1644
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1645
+ }
1646
+
1647
+ elif category == "education":
1648
+ params = {
1649
+ "project_description": user_input,
1650
+ "subject": "Belirtilmemiş",
1651
+ "target_audience": "Belirtilmemiş",
1652
+ "difficulty_level": "Orta",
1653
+ "format": "Metin ve görsel",
1654
+ "duration_length": "Belirtilmemiş",
1655
+ "learning_objectives": "Belirtilmemiş",
1656
+ "content_structure": "Belirtilmemiş",
1657
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1658
+ }
1659
+
1660
+ elif category == "finance":
1661
+ params = {
1662
+ "project_description": user_input,
1663
+ "data_type": "Belirtilmemiş",
1664
+ "data_source": "Belirtilmemiş",
1665
+ "time_range": "Belirtilmemiş",
1666
+ "analysis_scope": "Belirtilmemiş",
1667
+ "analysis_objectives": "Belirtilmemiş",
1668
+ "required_analyses": "Belirtilmemiş",
1669
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1670
+ }
1671
+
1672
+ elif category == "automation":
1673
+ params = {
1674
+ "project_description": user_input,
1675
+ "automation_type": "Belirtilmemiş",
1676
+ "existing_systems": "Belirtilmemiş",
1677
+ "target_platforms": "Belirtilmemiş",
1678
+ "user_interaction": "Belirtilmemiş",
1679
+ "automation_objectives": "Belirtilmemiş",
1680
+ "workflow_details": "Belirtilmemiş",
1681
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1682
+ }
1683
+
1684
+ elif category == "cybersecurity":
1685
+ params = {
1686
+ "project_description": user_input,
1687
+ "security_domain": "Belirtilmemiş",
1688
+ "target_systems": "Belirtilmemiş",
1689
+ "threat_model": "Belirtilmemiş",
1690
+ "compliance_requirements": "Belirtilmemiş",
1691
+ "security_objectives": "Belirtilmemiş",
1692
+ "current_security_state": "Belirtilmemiş",
1693
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1694
+ }
1695
+
1696
+ elif category == "devops":
1697
+ params = {
1698
+ "project_description": user_input,
1699
+ "infrastructure_type": "Belirtilmemiş",
1700
+ "technology_stack": "Belirtilmemiş",
1701
+ "scaling_requirements": "Belirtilmemiş",
1702
+ "cicd_requirements": "Belirtilmemiş",
1703
+ "devops_objectives": "Belirtilmemiş",
1704
+ "current_infrastructure": "Belirtilmemiş",
1705
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1706
+ }
1707
+
1708
+ elif category == "iot":
1709
+ params = {
1710
+ "project_description": user_input,
1711
+ "device_types": "Belirtilmemiş",
1712
+ "connectivity_requirements": "Belirtilmemiş",
1713
+ "data_processing_requirements": "Belirtilmemiş",
1714
+ "security_requirements": "Belirtilmemiş",
1715
+ "iot_objectives": "Belirtilmemiş",
1716
+ "system_architecture": "Belirtilmemiş",
1717
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1718
+ }
1719
+
1720
+ elif category == "cloud_computing":
1721
+ params = {
1722
+ "project_description": user_input,
1723
+ "cloud_provider": "Belirtilmemiş",
1724
+ "service_model": "Belirtilmemiş",
1725
+ "scaling_requirements": "Belirtilmemiş",
1726
+ "budget_constraints": "Belirtilmemiş",
1727
+ "cloud_objectives": "Belirtilmemiş",
1728
+ "current_infrastructure": "Belirtilmemiş",
1729
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1730
+ }
1731
+
1732
+ elif category == "blockchain":
1733
+ params = {
1734
+ "project_description": user_input,
1735
+ "blockchain_type": "Belirtilmemiş",
1736
+ "consensus_mechanism": "Belirtilmemiş",
1737
+ "smart_contract_requirements": "Belirtilmemiş",
1738
+ "scaling_requirements": "Belirtilmemiş",
1739
+ "blockchain_objectives": "Belirtilmemiş",
1740
+ "use_cases": "Belirtilmemiş",
1741
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1742
+ }
1743
+
1744
+ elif category == "ai_research":
1745
+ params = {
1746
+ "research_description": user_input,
1747
+ "ai_subfield": "Belirtilmemiş",
1748
+ "research_type": "Belirtilmemiş",
1749
+ "literature_state": "Belirtilmemiş",
1750
+ "research_questions": "Belirtilmemiş",
1751
+ "research_objectives": "Belirtilmemiş",
1752
+ "methodology": "Belirtilmemiş",
1753
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1754
+ }
1755
+
1756
+ elif category == "seo":
1757
+ params = {
1758
+ "project_description": user_input,
1759
+ "website_type": "Belirtilmemiş",
1760
+ "target_keywords": "Belirtilmemiş",
1761
+ "target_market": "Belirtilmemiş",
1762
+ "competition_analysis": "Belirtilmemiş",
1763
+ "seo_objectives": "Belirtilmemiş",
1764
+ "current_seo_state": "Belirtilmemiş",
1765
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1766
+ }
1767
+
1768
+ elif category == "social_media":
1769
+ params = {
1770
+ "project_description": user_input,
1771
+ "platforms": "Belirtilmemiş",
1772
+ "target_audience": "Belirtilmemiş",
1773
+ "brand_voice": "Belirtilmemiş",
1774
+ "content_types": "Belirtilmemiş",
1775
+ "social_media_objectives": "Belirtilmemiş",
1776
+ "current_social_media_presence": "Belirtilmemiş",
1777
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1778
+ }
1779
+
1780
+ elif category == "e_commerce":
1781
+ params = {
1782
+ "project_description": user_input,
1783
+ "platform": "Belirtilmemiş",
1784
+ "product_types": "Belirtilmemiş",
1785
+ "payment_methods": "Belirtilmemiş",
1786
+ "logistics_requirements": "Belirtilmemiş",
1787
+ "ecommerce_objectives": "Belirtilmemiş",
1788
+ "current_ecommerce_state": "Belirtilmemiş",
1789
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1790
+ }
1791
+
1792
+ elif category == "digital_marketing":
1793
+ params = {
1794
+ "project_description": user_input,
1795
+ "marketing_channels": "Belirtilmemiş",
1796
+ "target_audience": "Belirtilmemiş",
1797
+ "budget": "Belirtilmemiş",
1798
+ "campaign_duration": "Belirtilmemiş",
1799
+ "marketing_objectives": "Belirtilmemiş",
1800
+ "current_marketing_state": "Belirtilmemiş",
1801
+ "additional_notes": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1802
+ }
1803
+
1804
+ else: # general
1805
+ params = {
1806
+ "task_description": user_input,
1807
+ "requirements": "Kullanıcı girdisinden çıkarılacak",
1808
+ "expected_output": "Detaylı ve kapsamlı bir çözüm",
1809
+ "constraints": "Belirtilmemiş",
1810
+ "step_1": "Problemi analiz et",
1811
+ "step_2": "Çözüm stratejisi geliştir",
1812
+ "step_3": "Adım adım uygula",
1813
+ "additional_info": "Kullanıcı tarafından ek bilgi sağlanmamıştır."
1814
+ }
1815
+
1816
+ return params
1817
+
1818
+ # Kullanıc�� girdisinden gelişmiş prompt oluşturma
1819
+ def generate_advanced_prompt(user_input):
1820
+ """
1821
+ Kullanıcı girdisinden gelişmiş bir prompt oluşturur.
1822
+
1823
+ Args:
1824
+ user_input (str): Kullanıcı girdisi
1825
+
1826
+ Returns:
1827
+ str: Oluşturulan gelişmiş prompt
1828
+ """
1829
+ # Kategori tahmini
1830
+ category = predict_category(user_input)
1831
+
1832
+ # Parametreleri çıkar
1833
+ params = extract_parameters(category, user_input)
1834
+
1835
+ # Prompt oluştur
1836
+ prompt = create_prompt(category, params)
1837
+
1838
+ return prompt, category, params
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ streamlit==1.44.1
2
+ openai==1.72.0
3
+ google-generativeai==0.8.4
4
+ requests==2.31.0
5
+ python-dotenv==1.1.0
streamlit_ui.py ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 Prompt Generator",
27
+ page_icon="🤖",
28
+ layout="wide",
29
+ initial_sidebar_state="expanded"
30
+ )
31
+
32
+ # Başlık ve açıklama
33
+ st.title("AI Prompt Generator")
34
+ st.markdown("Bu uygulama, AI modellerine verilecek detaylı promptlar oluşturmanıza yardımcı olur.")
35
+
36
+ # Sidebar - API anahtarları
37
+ with st.sidebar:
38
+ st.header("API Anahtarları")
39
+
40
+ st.info("API anahtarlarınızı girin. Bu anahtarlar oturum süresince saklanır ve sayfayı yenilediğinizde silinir.")
41
+
42
+ # OpenAI API anahtarı
43
+ openai_api_key = st.text_input(
44
+ "OpenAI API Anahtarı",
45
+ type="password",
46
+ value=os.getenv("OPENAI_API_KEY", "")
47
+ )
48
+
49
+ # Google Gemini API anahtarı
50
+ gemini_api_key = st.text_input(
51
+ "Google Gemini API Anahtarı",
52
+ type="password",
53
+ value=os.getenv("GEMINI_API_KEY", "")
54
+ )
55
+
56
+ # OpenRouter API anahtarı
57
+ openrouter_api_key = st.text_input(
58
+ "OpenRouter API Anahtarı",
59
+ type="password",
60
+ value=os.getenv("OPENROUTER_API_KEY", "")
61
+ )
62
+
63
+ # API anahtarlarını kaydet
64
+ if st.button("API Anahtarlarını Kaydet"):
65
+ # API anahtarlarını ayarla
66
+ api_manager.set_api_key("openai", openai_api_key)
67
+ api_manager.set_api_key("gemini", gemini_api_key)
68
+ api_manager.set_api_key("openrouter", openrouter_api_key)
69
+
70
+ # API işleyicilerine de anahtarları ayarla
71
+ openai_handler.set_api_key(openai_api_key)
72
+ gemini_handler.set_api_key(gemini_api_key)
73
+ openrouter_handler.set_api_key(openrouter_api_key)
74
+
75
+ # Chatbot'un AI prompt generator'ına da anahtarları ayarla
76
+ chatbot.ai_generator.set_api_key("openai", openai_api_key)
77
+ chatbot.ai_generator.set_api_key("gemini", gemini_api_key)
78
+ chatbot.ai_generator.set_api_key("openrouter", openrouter_api_key)
79
+
80
+ st.success("API anahtarları başarıyla kaydedildi!")
81
+
82
+ # AI modeli seçimi
83
+ st.header("AI Modeli Seçimi")
84
+
85
+ # API sağlayıcısı seçimi
86
+ provider = st.selectbox(
87
+ "API Sağlayıcısı",
88
+ ["OpenAI", "Google Gemini", "OpenRouter"],
89
+ index=0
90
+ )
91
+
92
+ # Seçilen sağlayıcıya göre model listesini al
93
+ provider_key = provider.lower().replace(" ", "_")
94
+ if provider_key == "google_gemini":
95
+ provider_key = "gemini"
96
+
97
+ # Modelleri al
98
+ models = []
99
+ if provider_key == "openai":
100
+ models = openai_handler.get_available_models()
101
+ elif provider_key == "gemini":
102
+ models = gemini_handler.get_available_models()
103
+ elif provider_key == "openrouter":
104
+ models = openrouter_handler.get_available_models()
105
+
106
+ # Model seçimi
107
+ selected_model = None
108
+ if models:
109
+ selected_model = st.selectbox("Model", models)
110
+
111
+ # Ana içerik
112
+ col1, col2 = st.columns([1, 1])
113
+
114
+ with col1:
115
+ st.header("Prompt Oluştur")
116
+
117
+ # Kullanıcı girdisi
118
+ user_input = st.text_area(
119
+ "Ne yapmak istediğinizi açıklayın:",
120
+ height=150,
121
+ placeholder="Örnek: Bir e-ticaret web sitesi yapmak istiyorum. Ürünleri listeleyebilmeli, sepete ekleyebilmeli ve ödeme alabilmeliyim."
122
+ )
123
+
124
+ # AI destekli prompt oluşturma seçeneği
125
+ use_ai_generation = st.checkbox("AI destekli prompt oluşturma kullan", value=True)
126
+
127
+ # Prompt oluştur butonu
128
+ if st.button("Prompt Oluştur"):
129
+ if user_input:
130
+ with st.spinner("Prompt oluşturuluyor..."):
131
+ # Prompt oluştur
132
+ provider_key = provider.lower().replace(" ", "_")
133
+ if provider_key == "google_gemini":
134
+ provider_key = "gemini"
135
+
136
+ prompt, category, params = chatbot.process_input(
137
+ user_input,
138
+ use_ai_generation=use_ai_generation,
139
+ provider=provider_key,
140
+ model=selected_model
141
+ )
142
+
143
+ # Sonuçları session state'e kaydet
144
+ st.session_state.prompt = prompt
145
+ st.session_state.category = category
146
+ st.session_state.params = params
147
+
148
+ # Sonuçları göster
149
+ st.success("Prompt başarıyla oluşturuldu!")
150
+ else:
151
+ st.error("Lütfen ne yapmak istediğinizi açıklayın.")
152
+
153
+ with col2:
154
+ st.header("Oluşturulan Prompt")
155
+
156
+ # Oluşturulan promptu göster
157
+ if "prompt" in st.session_state:
158
+ st.subheader(f"Kategori: {st.session_state.category}")
159
+
160
+ # Parametreleri göster
161
+ if st.session_state.params:
162
+ with st.expander("Parametreler", expanded=False):
163
+ for key, value in st.session_state.params.items():
164
+ st.write(f"**{key}:** {value}")
165
+
166
+ # Promptu göster
167
+ st.text_area(
168
+ "Prompt:",
169
+ value=st.session_state.prompt,
170
+ height=500,
171
+ disabled=True
172
+ )
173
+
174
+ # Promptu kopyala butonu
175
+ if st.button("Promptu Kopyala"):
176
+ st.code(st.session_state.prompt)
177
+ st.info("Yukarıdaki kodu seçip kopyalayabilirsiniz.")
178
+ else:
179
+ st.info("Henüz bir prompt oluşturulmadı. Sol taraftaki formu doldurup 'Prompt Oluştur' butonuna tıklayın.")
180
+
181
+ # Kategori bilgileri
182
+ st.header("Desteklenen Kategoriler")
183
+
184
+ # Kategorileri göster
185
+ categories_per_row = 3
186
+ categories = list(PROMPT_CATEGORIES.keys())
187
+
188
+ for i in range(0, len(categories), categories_per_row):
189
+ cols = st.columns(categories_per_row)
190
+ for j in range(categories_per_row):
191
+ if i + j < len(categories):
192
+ with cols[j]:
193
+ category = categories[i + j]
194
+ st.subheader(category)
195
+ st.write(PROMPT_CATEGORIES[category]["description"])
196
+
197
+ # Footer
198
+ st.markdown("---")
199
+ st.markdown("© 2025 AI Prompt Generator | Tüm hakları saklıdır.")
200
+
201
+ if __name__ == "__main__":
202
+ main()
todo.md ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Prompt Engineer Chatbot - Yapılacaklar Listesi
2
+
3
+ ## Gereksinim Analizi
4
+ - [x] Kullanıcı gereksinimlerini analiz et
5
+ - [x] Proje kapsamını belirle
6
+
7
+ ## Geliştirme Ortamı Kurulumu
8
+ - [x] Proje dizinini oluştur
9
+ - [x] Gerekli kütüphaneleri belirle
10
+ - [x] Gerekli kütüphaneleri yükle (streamlit, openai, google-generativeai, vb.)
11
+
12
+ ## Prompt Mühendisliği Bilgi Tabanı Oluşturma
13
+ - [x] Farklı kullanım senaryoları için prompt şablonları oluştur
14
+ - [x] Web sitesi geliştirme için prompt şablonları hazırla
15
+ - [x] Diğer yaygın senaryolar için prompt şablonları hazırla
16
+
17
+ ## Chatbot Backend Geliştirme
18
+ - [x] Prompt işleme mantığını oluştur
19
+ - [x] Kullanıcı girdisini analiz etme fonksiyonlarını geliştir
20
+ - [x] Dinamik prompt oluşturma algoritmasını geliştir
21
+
22
+ ## API Entegrasyonları
23
+ - [x] OpenAI API entegrasyonu
24
+ - [x] Google Gemini API entegrasyonu
25
+ - [x] OpenRouter API entegrasyonu
26
+ - [x] API anahtarı yönetimi
27
+
28
+ ## Kullanıcı Arayüzü Tasarımı
29
+ - [x] Arayüz bileşenlerini belirle
30
+ - [x] Kullanıcı giriş alanını oluştur
31
+ - [x] API seçim alanını oluştur
32
+ - [x] API anahtarı giriş alanını oluştur
33
+ - [x] Sonuç gösterim alanını oluştur
34
+
35
+ ## Deployment Dosyaları
36
+ - [x] app.py dosyasını oluştur
37
+ - [x] requirements.txt dosyasını oluştur
38
+
39
+ ## Test
40
+ - [x] Farklı senaryolarla chatbot'u test et
41
+ - [x] API entegrasyonlarını test et
42
+ - [x] Kullanıcı arayüzünü test et
43
+
44
+ ## Sonlandırma ve Deployment Hazırlığı
45
+ - [x] Kodu optimize et
46
+ - [x] Dokümantasyon ekle
47
+ - [x] Hugging Face deployment için hazırla