Spaces:
Running
Running
Upload 8 files
Browse files- ai_prompt_generator.py +328 -0
- api_integrations.py +480 -0
- app.py +31 -0
- chatbot_backend.py +318 -0
- prompt_templates.py +1838 -0
- requirements.txt +5 -0
- streamlit_ui.py +202 -0
- 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
|