Spaces:
Build error
Build error
Upload 8 files
Browse files- ai_prompt_generator.py +328 -0
- api_integrations.py +480 -0
- app.py +31 -0
- chatbot_backend.py +425 -0
- prompt_templates.py +1838 -0
- requirements.txt +5 -0
- streamlit_ui.py +382 -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,425 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
+
import re
|
| 9 |
+
from typing import Dict, Any, Tuple, List, Optional
|
| 10 |
+
import openai
|
| 11 |
+
from google import generativeai as genai
|
| 12 |
+
import requests
|
| 13 |
+
from dotenv import load_dotenv
|
| 14 |
+
|
| 15 |
+
# Prompt şablonlarını içe aktar
|
| 16 |
+
from prompt_templates import (
|
| 17 |
+
PROMPT_CATEGORIES,
|
| 18 |
+
predict_category,
|
| 19 |
+
extract_parameters,
|
| 20 |
+
create_prompt
|
| 21 |
+
)
|
| 22 |
+
|
| 23 |
+
# AI Prompt Generator'ı içe aktar
|
| 24 |
+
from ai_prompt_generator import AIPromptGenerator
|
| 25 |
+
|
| 26 |
+
# .env dosyasını yükle (varsa)
|
| 27 |
+
load_dotenv()
|
| 28 |
+
|
| 29 |
+
class PromptEngineerChatbot:
|
| 30 |
+
"""
|
| 31 |
+
Prompt mühendisliği chatbot sınıfı.
|
| 32 |
+
Bu sınıf, kullanıcı girdisini işleyerek dinamik promptlar oluşturur.
|
| 33 |
+
"""
|
| 34 |
+
|
| 35 |
+
def __init__(self):
|
| 36 |
+
"""
|
| 37 |
+
Chatbot'u başlat ve yapılandır.
|
| 38 |
+
"""
|
| 39 |
+
self.conversation_history = []
|
| 40 |
+
self.current_category = None
|
| 41 |
+
self.current_params = None
|
| 42 |
+
self.ai_generator = AIPromptGenerator()
|
| 43 |
+
|
| 44 |
+
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]]:
|
| 45 |
+
"""
|
| 46 |
+
Kullanıcı girdisini işler ve dinamik bir prompt oluşturur.
|
| 47 |
+
|
| 48 |
+
Args:
|
| 49 |
+
user_input (str): Kullanıcı girdisi
|
| 50 |
+
use_ai_generation (bool): AI destekli prompt oluşturmayı kullan
|
| 51 |
+
provider (str): AI sağlayıcısı ('openai', 'gemini', 'openrouter')
|
| 52 |
+
model (str, optional): Kullanılacak model
|
| 53 |
+
|
| 54 |
+
Returns:
|
| 55 |
+
Tuple[str, str, Dict[str, Any]]: Oluşturulan prompt, kategori ve parametreler
|
| 56 |
+
"""
|
| 57 |
+
# Kullanıcı girdisini kaydet
|
| 58 |
+
self.conversation_history.append({"role": "user", "content": user_input})
|
| 59 |
+
|
| 60 |
+
# Kategori tahmini
|
| 61 |
+
category = predict_category(user_input)
|
| 62 |
+
|
| 63 |
+
# Parametreleri çıkar
|
| 64 |
+
params = extract_parameters(category, user_input)
|
| 65 |
+
|
| 66 |
+
# Mevcut kategori ve parametreleri güncelle
|
| 67 |
+
self.current_category = category
|
| 68 |
+
self.current_params = params
|
| 69 |
+
|
| 70 |
+
# AI destekli prompt oluşturma kullanılıyorsa
|
| 71 |
+
if use_ai_generation:
|
| 72 |
+
# Şablon tabanlı promptu oluştur (referans için)
|
| 73 |
+
template_prompt = create_prompt(category, params)
|
| 74 |
+
|
| 75 |
+
# Kategori bilgisini ve şablon promptu kullanarak daha spesifik bir AI prompt oluştur
|
| 76 |
+
enhanced_user_input = f"""
|
| 77 |
+
Kategori: {category}
|
| 78 |
+
|
| 79 |
+
Kullanıcı İsteği: {user_input}
|
| 80 |
+
|
| 81 |
+
Lütfen bu istek için çok detaylı ve spesifik bir prompt oluştur.
|
| 82 |
+
Ş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:
|
| 83 |
+
|
| 84 |
+
{template_prompt}
|
| 85 |
+
|
| 86 |
+
Önemli: Yukarıdaki şablonu olduğu gibi kullanma, sadece yapı referansı olarak kullan.
|
| 87 |
+
İçeriği tamamen kullanıcının isteğine özel olarak oluştur ve çok daha detaylı, spesifik bilgiler ekle.
|
| 88 |
+
Örneğin, kullanıcı hava durumu uygulaması istiyorsa, hava durumu API'leri, hava verilerinin görselleştirilmesi,
|
| 89 |
+
hava tahminleri, konum takibi gibi spesifik detaylar ekle.
|
| 90 |
+
"""
|
| 91 |
+
|
| 92 |
+
# AI destekli prompt oluştur
|
| 93 |
+
result = self.ai_generator.generate_prompt(enhanced_user_input, provider, model)
|
| 94 |
+
|
| 95 |
+
if result["success"]:
|
| 96 |
+
prompt = result["prompt"]
|
| 97 |
+
else:
|
| 98 |
+
# AI prompt oluşturma başarısız olursa şablon promptu kullan
|
| 99 |
+
prompt = template_prompt
|
| 100 |
+
else:
|
| 101 |
+
# Şablon tabanlı prompt oluştur
|
| 102 |
+
prompt = create_prompt(category, params)
|
| 103 |
+
|
| 104 |
+
# Chatbot yanıtını kaydet
|
| 105 |
+
self.conversation_history.append({"role": "assistant", "content": prompt})
|
| 106 |
+
|
| 107 |
+
return prompt, category, params
|
| 108 |
+
|
| 109 |
+
def get_conversation_history(self) -> List[Dict[str, str]]:
|
| 110 |
+
"""
|
| 111 |
+
Konuşma geçmişini döndürür.
|
| 112 |
+
|
| 113 |
+
Returns:
|
| 114 |
+
List[Dict[str, str]]: Konuşma geçmişi
|
| 115 |
+
"""
|
| 116 |
+
return self.conversation_history
|
| 117 |
+
|
| 118 |
+
def clear_conversation_history(self) -> None:
|
| 119 |
+
"""
|
| 120 |
+
Konuşma geçmişini temizler.
|
| 121 |
+
"""
|
| 122 |
+
self.conversation_history = []
|
| 123 |
+
self.current_category = None
|
| 124 |
+
self.current_params = None
|
| 125 |
+
|
| 126 |
+
|
| 127 |
+
class AIModelInterface:
|
| 128 |
+
"""
|
| 129 |
+
Farklı AI API'leri için arayüz sınıfı.
|
| 130 |
+
Bu sınıf, OpenAI, Google Gemini ve OpenRouter API'leri ile etkileşim sağlar.
|
| 131 |
+
"""
|
| 132 |
+
|
| 133 |
+
def __init__(self):
|
| 134 |
+
"""
|
| 135 |
+
AI model arayüzünü başlat.
|
| 136 |
+
"""
|
| 137 |
+
self.api_keys = {
|
| 138 |
+
"openai": os.getenv("OPENAI_API_KEY", ""),
|
| 139 |
+
"gemini": os.getenv("GEMINI_API_KEY", ""),
|
| 140 |
+
"openrouter": os.getenv("OPENROUTER_API_KEY", "")
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
def set_api_key(self, provider: str, api_key: str) -> None:
|
| 144 |
+
"""
|
| 145 |
+
Belirli bir sağlayıcı için API anahtarını ayarlar.
|
| 146 |
+
|
| 147 |
+
Args:
|
| 148 |
+
provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
|
| 149 |
+
api_key (str): API anahtarı
|
| 150 |
+
"""
|
| 151 |
+
if provider in self.api_keys:
|
| 152 |
+
self.api_keys[provider] = api_key
|
| 153 |
+
|
| 154 |
+
def get_available_models(self, provider: str) -> List[str]:
|
| 155 |
+
"""
|
| 156 |
+
Belirli bir sağlayıcı için kullanılabilir modelleri döndürür.
|
| 157 |
+
|
| 158 |
+
Args:
|
| 159 |
+
provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
|
| 160 |
+
|
| 161 |
+
Returns:
|
| 162 |
+
List[str]: Kullanılabilir modeller listesi
|
| 163 |
+
"""
|
| 164 |
+
if provider == "openai":
|
| 165 |
+
return ["gpt-4o", "gpt-4-turbo", "gpt-4", "gpt-3.5-turbo"]
|
| 166 |
+
elif provider == "gemini":
|
| 167 |
+
return ["gemini-1.5-pro", "gemini-1.5-flash", "gemini-1.0-pro"]
|
| 168 |
+
elif provider == "openrouter":
|
| 169 |
+
return [
|
| 170 |
+
"openai/gpt-4o",
|
| 171 |
+
"openai/gpt-4-turbo",
|
| 172 |
+
"anthropic/claude-3-opus",
|
| 173 |
+
"anthropic/claude-3-sonnet",
|
| 174 |
+
"google/gemini-1.5-pro",
|
| 175 |
+
"meta-llama/llama-3-70b-instruct"
|
| 176 |
+
]
|
| 177 |
+
return []
|
| 178 |
+
|
| 179 |
+
def generate_with_openai(self, prompt: str, model: str = "gpt-3.5-turbo", api_key: Optional[str] = None) -> str:
|
| 180 |
+
"""
|
| 181 |
+
OpenAI API kullanarak yanıt oluşturur.
|
| 182 |
+
|
| 183 |
+
Args:
|
| 184 |
+
prompt (str): Gönderilecek prompt
|
| 185 |
+
model (str): Kullanılacak model
|
| 186 |
+
api_key (str, optional): Doğrudan kullanılacak API anahtarı
|
| 187 |
+
|
| 188 |
+
Returns:
|
| 189 |
+
str: Oluşturulan yanıt
|
| 190 |
+
"""
|
| 191 |
+
# Doğrudan API anahtarı verilmişse onu kullan, yoksa saklanan anahtarı kullan
|
| 192 |
+
current_api_key = api_key if api_key else self.api_keys["openai"]
|
| 193 |
+
|
| 194 |
+
if not current_api_key:
|
| 195 |
+
return "OpenAI API anahtarı ayarlanmamış."
|
| 196 |
+
|
| 197 |
+
try:
|
| 198 |
+
# Geçici olarak API anahtarını ayarla
|
| 199 |
+
openai.api_key = current_api_key
|
| 200 |
+
|
| 201 |
+
response = openai.chat.completions.create(
|
| 202 |
+
model=model,
|
| 203 |
+
messages=[{"role": "user", "content": prompt}],
|
| 204 |
+
temperature=0.7,
|
| 205 |
+
max_tokens=2000
|
| 206 |
+
)
|
| 207 |
+
return response.choices[0].message.content
|
| 208 |
+
except Exception as e:
|
| 209 |
+
return f"OpenAI API hatası: {str(e)}"
|
| 210 |
+
|
| 211 |
+
def generate_with_gemini(self, prompt: str, model: str = "gemini-1.5-pro", api_key: Optional[str] = None) -> str:
|
| 212 |
+
"""
|
| 213 |
+
Google Gemini API kullanarak yanıt oluşturur.
|
| 214 |
+
|
| 215 |
+
Args:
|
| 216 |
+
prompt (str): Gönderilecek prompt
|
| 217 |
+
model (str): Kullanılacak model
|
| 218 |
+
api_key (str, optional): Doğrudan kullanılacak API anahtarı
|
| 219 |
+
|
| 220 |
+
Returns:
|
| 221 |
+
str: Oluşturulan yanıt
|
| 222 |
+
"""
|
| 223 |
+
# Doğrudan API anahtarı verilmişse onu kullan, yoksa saklanan anahtarı kullan
|
| 224 |
+
current_api_key = api_key if api_key else self.api_keys["gemini"]
|
| 225 |
+
|
| 226 |
+
if not current_api_key:
|
| 227 |
+
return "Gemini API anahtarı ayarlanmamış."
|
| 228 |
+
|
| 229 |
+
try:
|
| 230 |
+
# Geçici olarak API anahtarını ayarla
|
| 231 |
+
genai.configure(api_key=current_api_key)
|
| 232 |
+
|
| 233 |
+
model_obj = genai.GenerativeModel(model)
|
| 234 |
+
response = model_obj.generate_content(prompt)
|
| 235 |
+
return response.text
|
| 236 |
+
except Exception as e:
|
| 237 |
+
return f"Gemini API hatası: {str(e)}"
|
| 238 |
+
|
| 239 |
+
def generate_with_openrouter(self, prompt: str, model: str = "openai/gpt-4-turbo", api_key: Optional[str] = None) -> str:
|
| 240 |
+
"""
|
| 241 |
+
OpenRouter API kullanarak yanıt oluşturur.
|
| 242 |
+
|
| 243 |
+
Args:
|
| 244 |
+
prompt (str): Gönderilecek prompt
|
| 245 |
+
model (str): Kullanılacak model
|
| 246 |
+
api_key (str, optional): Doğrudan kullanılacak API anahtarı
|
| 247 |
+
|
| 248 |
+
Returns:
|
| 249 |
+
str: Oluşturulan yanıt
|
| 250 |
+
"""
|
| 251 |
+
# Doğrudan API anahtarı verilmişse onu kullan, yoksa saklanan anahtarı kullan
|
| 252 |
+
current_api_key = api_key if api_key else self.api_keys["openrouter"]
|
| 253 |
+
|
| 254 |
+
if not current_api_key:
|
| 255 |
+
return "OpenRouter API anahtarı ayarlanmamış."
|
| 256 |
+
|
| 257 |
+
try:
|
| 258 |
+
headers = {
|
| 259 |
+
"Content-Type": "application/json",
|
| 260 |
+
"Authorization": f"Bearer {current_api_key}"
|
| 261 |
+
}
|
| 262 |
+
|
| 263 |
+
data = {
|
| 264 |
+
"model": model,
|
| 265 |
+
"messages": [{"role": "user", "content": prompt}],
|
| 266 |
+
"temperature": 0.7,
|
| 267 |
+
"max_tokens": 2000
|
| 268 |
+
}
|
| 269 |
+
|
| 270 |
+
response = requests.post(
|
| 271 |
+
"https://openrouter.ai/api/v1/chat/completions",
|
| 272 |
+
headers=headers,
|
| 273 |
+
json=data
|
| 274 |
+
)
|
| 275 |
+
|
| 276 |
+
if response.status_code == 200:
|
| 277 |
+
return response.json()["choices"][0]["message"]["content"]
|
| 278 |
+
else:
|
| 279 |
+
return f"OpenRouter API hatası: {response.status_code} - {response.text}"
|
| 280 |
+
except Exception as e:
|
| 281 |
+
return f"OpenRouter API hatası: {str(e)}"
|
| 282 |
+
|
| 283 |
+
def generate_code_templates(self, response: str) -> Dict[str, Any]:
|
| 284 |
+
"""
|
| 285 |
+
AI yanıtından kod şablonları, dizin yapısı ve uygulama adımlarını çıkarır.
|
| 286 |
+
|
| 287 |
+
Args:
|
| 288 |
+
response (str): AI yanıtı
|
| 289 |
+
|
| 290 |
+
Returns:
|
| 291 |
+
Dict[str, Any]: Kod şablonları, dizin yapısı ve uygulama adımları
|
| 292 |
+
"""
|
| 293 |
+
result = {
|
| 294 |
+
"directory_structure": [],
|
| 295 |
+
"code_templates": [],
|
| 296 |
+
"implementation_steps": []
|
| 297 |
+
}
|
| 298 |
+
|
| 299 |
+
# Dizin yapısını çıkar
|
| 300 |
+
dir_structure_pattern = r"```(?:bash|shell|plaintext)?\s*((?:├──|└──|│\s+|(?:\w+/)+\w+|\w+\.\w+|[\w\-\.\/]+\s*)+)\s*```"
|
| 301 |
+
dir_matches = re.findall(dir_structure_pattern, response, re.DOTALL)
|
| 302 |
+
|
| 303 |
+
if dir_matches:
|
| 304 |
+
for match in dir_matches:
|
| 305 |
+
if any(x in match for x in ['├──', '└──', '│', '/']):
|
| 306 |
+
result["directory_structure"].append(match.strip())
|
| 307 |
+
|
| 308 |
+
# Kod şablonlarını çıkar
|
| 309 |
+
code_pattern = r"```(\w+)?\s*([\s\S]*?)```"
|
| 310 |
+
code_matches = re.findall(code_pattern, response, re.DOTALL)
|
| 311 |
+
|
| 312 |
+
for lang, code in code_matches:
|
| 313 |
+
if lang and lang.lower() not in ['bash', 'shell', 'plaintext', '']:
|
| 314 |
+
result["code_templates"].append({
|
| 315 |
+
"language": lang.strip() if lang else "unknown",
|
| 316 |
+
"code": code.strip()
|
| 317 |
+
})
|
| 318 |
+
|
| 319 |
+
# Uygulama adımlarını çıkar
|
| 320 |
+
steps_pattern = r"(?:##|###)\s*(?:Adım|Step|İmplementasyon|Uygulama).*?(?=(?:##|###)|$)"
|
| 321 |
+
steps_matches = re.findall(steps_pattern, response, re.DOTALL | re.IGNORECASE)
|
| 322 |
+
|
| 323 |
+
if steps_matches:
|
| 324 |
+
result["implementation_steps"] = [step.strip() for step in steps_matches]
|
| 325 |
+
else:
|
| 326 |
+
# Numaralı adımları ara
|
| 327 |
+
numbered_steps = re.findall(r"\d+\.\s+[^\n]+(?:\n(?!\d+\.).*?)*", response, re.DOTALL)
|
| 328 |
+
if numbered_steps:
|
| 329 |
+
result["implementation_steps"] = [step.strip() for step in numbered_steps]
|
| 330 |
+
|
| 331 |
+
return result
|
| 332 |
+
|
| 333 |
+
def generate_response_with_code_templates(self, provider: str, prompt: str, model: Optional[str] = None, api_key: Optional[str] = None) -> Dict[str, Any]:
|
| 334 |
+
"""
|
| 335 |
+
Belirli bir sağlayıcı ve model kullanarak yanıt ve kod şablonları oluşturur.
|
| 336 |
+
|
| 337 |
+
Args:
|
| 338 |
+
provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
|
| 339 |
+
prompt (str): Gönderilecek prompt
|
| 340 |
+
model (str, optional): Kullanılacak model
|
| 341 |
+
api_key (str, optional): Doğrudan kullanılacak API anahtarı
|
| 342 |
+
|
| 343 |
+
Returns:
|
| 344 |
+
Dict[str, Any]: Yanıt ve kod şablonları
|
| 345 |
+
"""
|
| 346 |
+
# Promptu geliştir - kod şablonları, dizin yapısı ve uygulama adımları isteyelim
|
| 347 |
+
enhanced_prompt = f"""
|
| 348 |
+
{prompt}
|
| 349 |
+
|
| 350 |
+
Lütfen yanıtında aşağıdakileri mutlaka içer:
|
| 351 |
+
|
| 352 |
+
1. Detaylı bir dizin yapısı (klasör ve dosya hiyerarşisi)
|
| 353 |
+
2. Önemli dosyaların kod şablonları (HTML, CSS, JavaScript, Python vb.)
|
| 354 |
+
3. Adım adım uygulama talimatları
|
| 355 |
+
|
| 356 |
+
Dizin yapısını ```bash veya ```plaintext içinde göster.
|
| 357 |
+
Kod şablonlarını ```html, ```css, ```javascript, ```python gibi uygun dil belirteçleriyle göster.
|
| 358 |
+
Uygulama adımlarını numaralandırılmış liste olarak veya ## Adım başlıkları altında göster.
|
| 359 |
+
"""
|
| 360 |
+
|
| 361 |
+
# Yanıt oluştur
|
| 362 |
+
response = self.generate_response(provider, enhanced_prompt, model, api_key)
|
| 363 |
+
|
| 364 |
+
# Yanıttan kod şablonlarını çıkar
|
| 365 |
+
templates = self.generate_code_templates(response)
|
| 366 |
+
|
| 367 |
+
return {
|
| 368 |
+
"response": response,
|
| 369 |
+
"templates": templates
|
| 370 |
+
}
|
| 371 |
+
|
| 372 |
+
def generate_response(self, provider: str, prompt: str, model: Optional[str] = None, api_key: Optional[str] = None) -> str:
|
| 373 |
+
"""
|
| 374 |
+
Belirli bir sağlayıcı ve model kullanarak yanıt oluşturur.
|
| 375 |
+
|
| 376 |
+
Args:
|
| 377 |
+
provider (str): API sağlayıcısı ('openai', 'gemini', 'openrouter')
|
| 378 |
+
prompt (str): Gönderilecek prompt
|
| 379 |
+
model (str, optional): Kullanılacak model
|
| 380 |
+
api_key (str, optional): Doğrudan kullanılacak API anahtarı
|
| 381 |
+
|
| 382 |
+
Returns:
|
| 383 |
+
str: Oluşturulan yanıt
|
| 384 |
+
"""
|
| 385 |
+
if provider == "openai":
|
| 386 |
+
if model is None:
|
| 387 |
+
model = "gpt-3.5-turbo"
|
| 388 |
+
return self.generate_with_openai(prompt, model, api_key)
|
| 389 |
+
elif provider == "gemini":
|
| 390 |
+
if model is None:
|
| 391 |
+
model = "gemini-1.5-pro"
|
| 392 |
+
return self.generate_with_gemini(prompt, model, api_key)
|
| 393 |
+
elif provider == "openrouter":
|
| 394 |
+
if model is None:
|
| 395 |
+
model = "openai/gpt-4-turbo"
|
| 396 |
+
return self.generate_with_openrouter(prompt, model, api_key)
|
| 397 |
+
else:
|
| 398 |
+
return "Geçersiz sağlayıcı. Lütfen 'openai', 'gemini' veya 'openrouter' seçin."
|
| 399 |
+
|
| 400 |
+
|
| 401 |
+
# Chatbot ve AI model arayüzü örneklerini oluştur
|
| 402 |
+
chatbot = PromptEngineerChatbot()
|
| 403 |
+
ai_interface = AIModelInterface()
|
| 404 |
+
|
| 405 |
+
# Test fonksiyonu
|
| 406 |
+
def test_chatbot():
|
| 407 |
+
"""
|
| 408 |
+
Chatbot'u test eder.
|
| 409 |
+
"""
|
| 410 |
+
test_input = "Bir e-ticaret web sitesi yapmak istiyorum. Ürünleri listeleyebilmeli, sepete ekleyebilmeli ve ödeme alabilmeliyim."
|
| 411 |
+
prompt, category, params = chatbot.process_input(test_input, use_ai_generation=True)
|
| 412 |
+
|
| 413 |
+
print(f"Kategori: {category}")
|
| 414 |
+
print(f"Parametreler: {json.dumps(params, indent=2, ensure_ascii=False)}")
|
| 415 |
+
print("\nOluşturulan Prompt:")
|
| 416 |
+
print(prompt)
|
| 417 |
+
|
| 418 |
+
# API yanıtı test (API anahtarı varsa)
|
| 419 |
+
if ai_interface.api_keys["openai"]:
|
| 420 |
+
print("\nOpenAI Yanıtı:")
|
| 421 |
+
response = ai_interface.generate_response("openai", prompt)
|
| 422 |
+
print(response)
|
| 423 |
+
|
| 424 |
+
if __name__ == "__main__":
|
| 425 |
+
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,382 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
+
# Session state başlatma
|
| 33 |
+
if "api_keys" not in st.session_state:
|
| 34 |
+
st.session_state.api_keys = {
|
| 35 |
+
"openai": os.getenv("OPENAI_API_KEY", ""),
|
| 36 |
+
"gemini": os.getenv("GEMINI_API_KEY", ""),
|
| 37 |
+
"openrouter": os.getenv("OPENROUTER_API_KEY", "")
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
# Başlık ve açıklama
|
| 41 |
+
st.title("AI Prompt Generator")
|
| 42 |
+
st.markdown("Bu uygulama, AI modellerine verilecek detaylı promptlar oluşturmanıza yardımcı olur.")
|
| 43 |
+
|
| 44 |
+
# Sidebar - API anahtarları
|
| 45 |
+
with st.sidebar:
|
| 46 |
+
st.header("API Anahtarları")
|
| 47 |
+
|
| 48 |
+
st.info("API anahtarlarınızı girin. Bu anahtarlar oturum süresince saklanır ve sayfayı yenilediğinizde silinir.")
|
| 49 |
+
|
| 50 |
+
# OpenAI API anahtarı
|
| 51 |
+
openai_api_key = st.text_input(
|
| 52 |
+
"OpenAI API Anahtarı",
|
| 53 |
+
type="password",
|
| 54 |
+
value=st.session_state.api_keys.get("openai", "")
|
| 55 |
+
)
|
| 56 |
+
|
| 57 |
+
# Google Gemini API anahtarı
|
| 58 |
+
gemini_api_key = st.text_input(
|
| 59 |
+
"Google Gemini API Anahtarı",
|
| 60 |
+
type="password",
|
| 61 |
+
value=st.session_state.api_keys.get("gemini", "")
|
| 62 |
+
)
|
| 63 |
+
|
| 64 |
+
# OpenRouter API anahtarı
|
| 65 |
+
openrouter_api_key = st.text_input(
|
| 66 |
+
"OpenRouter API Anahtarı",
|
| 67 |
+
type="password",
|
| 68 |
+
value=st.session_state.api_keys.get("openrouter", "")
|
| 69 |
+
)
|
| 70 |
+
|
| 71 |
+
# API anahtarlarını kaydet
|
| 72 |
+
if st.button("API Anahtarlarını Kaydet"):
|
| 73 |
+
# Session state'e API anahtarlarını kaydet
|
| 74 |
+
st.session_state.api_keys = {
|
| 75 |
+
"openai": openai_api_key,
|
| 76 |
+
"gemini": gemini_api_key,
|
| 77 |
+
"openrouter": openrouter_api_key
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
# API anahtarlarını ayarla
|
| 81 |
+
api_manager.set_api_key("openai", openai_api_key)
|
| 82 |
+
api_manager.set_api_key("gemini", gemini_api_key)
|
| 83 |
+
api_manager.set_api_key("openrouter", openrouter_api_key)
|
| 84 |
+
|
| 85 |
+
# API işleyicilerine de anahtarları ayarla
|
| 86 |
+
openai_handler.set_api_key(openai_api_key)
|
| 87 |
+
gemini_handler.set_api_key(gemini_api_key)
|
| 88 |
+
openrouter_handler.set_api_key(openrouter_api_key)
|
| 89 |
+
|
| 90 |
+
# Chatbot'un AI prompt generator'ına da anahtarları ayarla
|
| 91 |
+
chatbot.ai_generator.set_api_key("openai", openai_api_key)
|
| 92 |
+
chatbot.ai_generator.set_api_key("gemini", gemini_api_key)
|
| 93 |
+
chatbot.ai_generator.set_api_key("openrouter", openrouter_api_key)
|
| 94 |
+
|
| 95 |
+
st.success("API anahtarları başarıyla kaydedildi!")
|
| 96 |
+
|
| 97 |
+
# API anahtarlarının durumunu göster
|
| 98 |
+
with st.expander("API Anahtarı Durumu", expanded=False):
|
| 99 |
+
openai_status = "✅ Ayarlandı" if st.session_state.api_keys.get("openai") else "❌ Ayarlanmadı"
|
| 100 |
+
gemini_status = "✅ Ayarlandı" if st.session_state.api_keys.get("gemini") else "❌ Ayarlanmadı"
|
| 101 |
+
openrouter_status = "✅ Ayarlandı" if st.session_state.api_keys.get("openrouter") else "❌ Ayarlanmadı"
|
| 102 |
+
|
| 103 |
+
st.write(f"OpenAI API: {openai_status}")
|
| 104 |
+
st.write(f"Gemini API: {gemini_status}")
|
| 105 |
+
st.write(f"OpenRouter API: {openrouter_status}")
|
| 106 |
+
|
| 107 |
+
# AI modeli seçimi
|
| 108 |
+
st.header("AI Modeli Seçimi")
|
| 109 |
+
|
| 110 |
+
# API sağlayıcısı seçimi
|
| 111 |
+
provider = st.selectbox(
|
| 112 |
+
"API Sağlayıcısı",
|
| 113 |
+
["OpenAI", "Google Gemini", "OpenRouter"],
|
| 114 |
+
index=0
|
| 115 |
+
)
|
| 116 |
+
|
| 117 |
+
# Seçilen sağlayıcıya göre model listesini al
|
| 118 |
+
provider_key = provider.lower().replace(" ", "_")
|
| 119 |
+
if provider_key == "google_gemini":
|
| 120 |
+
provider_key = "gemini"
|
| 121 |
+
|
| 122 |
+
# Modelleri al
|
| 123 |
+
models = []
|
| 124 |
+
if provider_key == "openai":
|
| 125 |
+
models = openai_handler.get_available_models()
|
| 126 |
+
elif provider_key == "gemini":
|
| 127 |
+
models = gemini_handler.get_available_models()
|
| 128 |
+
elif provider_key == "openrouter":
|
| 129 |
+
models = openrouter_handler.get_available_models()
|
| 130 |
+
|
| 131 |
+
# Model seçimi
|
| 132 |
+
selected_model = None
|
| 133 |
+
if models:
|
| 134 |
+
selected_model = st.selectbox("Model", models)
|
| 135 |
+
|
| 136 |
+
# Ana içerik
|
| 137 |
+
col1, col2 = st.columns([1, 1])
|
| 138 |
+
|
| 139 |
+
with col1:
|
| 140 |
+
st.header("Prompt Oluştur")
|
| 141 |
+
|
| 142 |
+
# Kullanıcı girdisi
|
| 143 |
+
user_input = st.text_area(
|
| 144 |
+
"Ne yapmak istediğinizi açıklayın:",
|
| 145 |
+
height=150,
|
| 146 |
+
placeholder="Örnek: Bir e-ticaret web sitesi yapmak istiyorum. Ürünleri listeleyebilmeli, sepete ekleyebilmeli ve ödeme alabilmeliyim."
|
| 147 |
+
)
|
| 148 |
+
|
| 149 |
+
# AI destekli prompt oluşturma seçeneği
|
| 150 |
+
if "use_ai_generation" not in st.session_state:
|
| 151 |
+
st.session_state.use_ai_generation = True
|
| 152 |
+
|
| 153 |
+
use_ai_generation = st.checkbox(
|
| 154 |
+
"AI destekli prompt oluşturma kullan",
|
| 155 |
+
value=st.session_state.use_ai_generation,
|
| 156 |
+
key="use_ai_generation_checkbox"
|
| 157 |
+
)
|
| 158 |
+
|
| 159 |
+
# Checkbox değiştiğinde session state'i güncelle
|
| 160 |
+
st.session_state.use_ai_generation = use_ai_generation
|
| 161 |
+
|
| 162 |
+
# API anahtarı kontrolü ve uyarı
|
| 163 |
+
selected_provider_key = provider.lower().replace(" ", "_")
|
| 164 |
+
if selected_provider_key == "google_gemini":
|
| 165 |
+
selected_provider_key = "gemini"
|
| 166 |
+
|
| 167 |
+
if use_ai_generation and not st.session_state.api_keys.get(selected_provider_key):
|
| 168 |
+
st.warning(f"AI destekli prompt oluşturma için {provider} API anahtarı gereklidir. Lütfen API anahtarınızı girin ve 'API Anahtarlarını Kaydet' butonuna tıklayın.")
|
| 169 |
+
|
| 170 |
+
# Prompt oluştur butonu
|
| 171 |
+
if st.button("Prompt Oluştur"):
|
| 172 |
+
if user_input:
|
| 173 |
+
with st.spinner("Prompt oluşturuluyor..."):
|
| 174 |
+
# Prompt oluştur
|
| 175 |
+
provider_key = provider.lower().replace(" ", "_")
|
| 176 |
+
if provider_key == "google_gemini":
|
| 177 |
+
provider_key = "gemini"
|
| 178 |
+
|
| 179 |
+
# API anahtarı kontrolü
|
| 180 |
+
if use_ai_generation and not st.session_state.api_keys.get(provider_key):
|
| 181 |
+
st.error(f"AI destekli prompt oluşturma için {provider} API anahtarı gereklidir. Lütfen API anahtarınızı girin ve 'API Anahtarlarını Kaydet' butonuna tıklayın.")
|
| 182 |
+
else:
|
| 183 |
+
# Debug bilgisi
|
| 184 |
+
st.session_state.debug_info = {
|
| 185 |
+
"use_ai_generation": use_ai_generation,
|
| 186 |
+
"provider": provider_key,
|
| 187 |
+
"model": selected_model,
|
| 188 |
+
"api_key_set": bool(st.session_state.api_keys.get(provider_key))
|
| 189 |
+
}
|
| 190 |
+
|
| 191 |
+
prompt, category, params = chatbot.process_input(
|
| 192 |
+
user_input,
|
| 193 |
+
use_ai_generation=use_ai_generation,
|
| 194 |
+
provider=provider_key,
|
| 195 |
+
model=selected_model
|
| 196 |
+
)
|
| 197 |
+
|
| 198 |
+
# Sonuçları session state'e kaydet
|
| 199 |
+
st.session_state.prompt = prompt
|
| 200 |
+
st.session_state.category = category
|
| 201 |
+
st.session_state.params = params
|
| 202 |
+
|
| 203 |
+
# Sonuçları göster
|
| 204 |
+
st.success("Prompt başarıyla oluşturuldu!")
|
| 205 |
+
else:
|
| 206 |
+
st.error("Lütfen ne yapmak istediğinizi açıklayın.")
|
| 207 |
+
|
| 208 |
+
with col2:
|
| 209 |
+
st.header("Oluşturulan Prompt")
|
| 210 |
+
|
| 211 |
+
# Debug bilgisi (geliştirme aşamasında)
|
| 212 |
+
if "debug_info" in st.session_state:
|
| 213 |
+
with st.expander("Debug Bilgisi", expanded=False):
|
| 214 |
+
st.write(st.session_state.debug_info)
|
| 215 |
+
|
| 216 |
+
# Oluşturulan promptu göster
|
| 217 |
+
if "prompt" in st.session_state:
|
| 218 |
+
st.subheader(f"Kategori: {st.session_state.category}")
|
| 219 |
+
|
| 220 |
+
# Parametreleri göster
|
| 221 |
+
if st.session_state.params:
|
| 222 |
+
with st.expander("Parametreler", expanded=False):
|
| 223 |
+
for key, value in st.session_state.params.items():
|
| 224 |
+
st.write(f"**{key}:** {value}")
|
| 225 |
+
|
| 226 |
+
# Promptu göster
|
| 227 |
+
st.text_area(
|
| 228 |
+
"Prompt:",
|
| 229 |
+
value=st.session_state.prompt,
|
| 230 |
+
height=400,
|
| 231 |
+
disabled=True
|
| 232 |
+
)
|
| 233 |
+
|
| 234 |
+
# Promptu kopyala butonu
|
| 235 |
+
if st.button("Promptu Kopyala"):
|
| 236 |
+
st.code(st.session_state.prompt)
|
| 237 |
+
st.info("Yukarıdaki kodu seçip kopyalayabilirsiniz.")
|
| 238 |
+
|
| 239 |
+
# AI ile Test Et bölümü
|
| 240 |
+
st.subheader("AI ile Test Et")
|
| 241 |
+
|
| 242 |
+
# Test için API sağlayıcısı seçimi
|
| 243 |
+
test_provider = st.selectbox(
|
| 244 |
+
"Test için API Sağlayıcısı",
|
| 245 |
+
["OpenAI", "Google Gemini", "OpenRouter"],
|
| 246 |
+
index=0,
|
| 247 |
+
key="test_provider"
|
| 248 |
+
)
|
| 249 |
+
|
| 250 |
+
# Test için model seçimi
|
| 251 |
+
test_provider_key = test_provider.lower().replace(" ", "_")
|
| 252 |
+
if test_provider_key == "google_gemini":
|
| 253 |
+
test_provider_key = "gemini"
|
| 254 |
+
|
| 255 |
+
# Test için modelleri al
|
| 256 |
+
test_models = []
|
| 257 |
+
if test_provider_key == "openai":
|
| 258 |
+
test_models = openai_handler.get_available_models()
|
| 259 |
+
elif test_provider_key == "gemini":
|
| 260 |
+
test_models = gemini_handler.get_available_models()
|
| 261 |
+
elif test_provider_key == "openrouter":
|
| 262 |
+
test_models = openrouter_handler.get_available_models()
|
| 263 |
+
|
| 264 |
+
# Test için model seçimi
|
| 265 |
+
test_selected_model = None
|
| 266 |
+
if test_models:
|
| 267 |
+
test_selected_model = st.selectbox("Test için Model", test_models, key="test_model")
|
| 268 |
+
|
| 269 |
+
# Test için API anahtarı giriş alanı
|
| 270 |
+
st.markdown("### Test için API Anahtarı")
|
| 271 |
+
st.info("Test için API anahtarını doğrudan buraya girebilirsiniz.")
|
| 272 |
+
|
| 273 |
+
test_api_key = st.text_input(
|
| 274 |
+
f"{test_provider} API Anahtarı (Test için)",
|
| 275 |
+
type="password",
|
| 276 |
+
key="test_api_key"
|
| 277 |
+
)
|
| 278 |
+
|
| 279 |
+
# Kod şablonları oluşturma seçeneği
|
| 280 |
+
generate_code_templates = st.checkbox("Kod şablonları ve dizin yapısı oluştur", value=True, key="generate_code_templates")
|
| 281 |
+
|
| 282 |
+
# AI ile Test Et butonu
|
| 283 |
+
if st.button("AI ile Test Et"):
|
| 284 |
+
if "prompt" in st.session_state:
|
| 285 |
+
if not test_api_key:
|
| 286 |
+
st.error(f"Lütfen test için {test_provider} API anahtarını girin.")
|
| 287 |
+
else:
|
| 288 |
+
with st.spinner("AI yanıtı alınıyor..."):
|
| 289 |
+
if generate_code_templates:
|
| 290 |
+
# Kod şablonları ile yanıt al
|
| 291 |
+
result = ai_interface.generate_response_with_code_templates(
|
| 292 |
+
test_provider_key,
|
| 293 |
+
st.session_state.prompt,
|
| 294 |
+
test_selected_model,
|
| 295 |
+
test_api_key
|
| 296 |
+
)
|
| 297 |
+
|
| 298 |
+
# Yanıtı ve şablonları session state'e kaydet
|
| 299 |
+
st.session_state.ai_response = result["response"]
|
| 300 |
+
st.session_state.code_templates = result["templates"]
|
| 301 |
+
else:
|
| 302 |
+
# Sadece yanıt al
|
| 303 |
+
response = ai_interface.generate_response(
|
| 304 |
+
test_provider_key,
|
| 305 |
+
st.session_state.prompt,
|
| 306 |
+
test_selected_model,
|
| 307 |
+
test_api_key
|
| 308 |
+
)
|
| 309 |
+
|
| 310 |
+
# Yanıtı session state'e kaydet
|
| 311 |
+
st.session_state.ai_response = response
|
| 312 |
+
if "code_templates" in st.session_state:
|
| 313 |
+
del st.session_state.code_templates
|
| 314 |
+
|
| 315 |
+
# Yanıtı göster
|
| 316 |
+
st.success("AI yanıtı başarıyla alındı!")
|
| 317 |
+
else:
|
| 318 |
+
st.error("Lütfen önce bir prompt oluşturun.")
|
| 319 |
+
|
| 320 |
+
# AI yanıtını göster
|
| 321 |
+
if "ai_response" in st.session_state:
|
| 322 |
+
st.subheader("AI Yanıtı")
|
| 323 |
+
st.text_area(
|
| 324 |
+
"Yanıt:",
|
| 325 |
+
value=st.session_state.ai_response,
|
| 326 |
+
height=400,
|
| 327 |
+
disabled=True
|
| 328 |
+
)
|
| 329 |
+
|
| 330 |
+
# Kod şablonları ve dizin yapısı varsa göster
|
| 331 |
+
if "code_templates" in st.session_state:
|
| 332 |
+
templates = st.session_state.code_templates
|
| 333 |
+
|
| 334 |
+
# Dizin yapısı
|
| 335 |
+
if templates["directory_structure"]:
|
| 336 |
+
with st.expander("📁 Dizin Yapısı", expanded=True):
|
| 337 |
+
for structure in templates["directory_structure"]:
|
| 338 |
+
st.code(structure, language="bash")
|
| 339 |
+
|
| 340 |
+
# Kod şablonları
|
| 341 |
+
if templates["code_templates"]:
|
| 342 |
+
with st.expander("💻 Kod Şablonları", expanded=True):
|
| 343 |
+
for template in templates["code_templates"]:
|
| 344 |
+
st.subheader(f"{template['language'].capitalize()} Dosyası")
|
| 345 |
+
st.code(template["code"], language=template["language"])
|
| 346 |
+
|
| 347 |
+
# Uygulama adımları
|
| 348 |
+
if templates["implementation_steps"]:
|
| 349 |
+
with st.expander("📝 Uygulama Adımları", expanded=True):
|
| 350 |
+
for i, step in enumerate(templates["implementation_steps"]):
|
| 351 |
+
if not step.startswith(f"{i+1}.") and not step.startswith("##"):
|
| 352 |
+
st.markdown(f"**Adım {i+1}:** {step}")
|
| 353 |
+
else:
|
| 354 |
+
st.markdown(step)
|
| 355 |
+
else:
|
| 356 |
+
st.info("Henüz bir prompt oluşturulmadı. Sol taraftaki formu doldurup 'Prompt Oluştur' butonuna tıklayın.")
|
| 357 |
+
|
| 358 |
+
# Kategori bilgileri
|
| 359 |
+
st.header("Desteklenen Kategoriler")
|
| 360 |
+
|
| 361 |
+
# Kategorileri göster
|
| 362 |
+
categories_per_row = 3
|
| 363 |
+
categories = list(PROMPT_CATEGORIES.keys())
|
| 364 |
+
|
| 365 |
+
for i in range(0, len(categories), categories_per_row):
|
| 366 |
+
cols = st.columns(categories_per_row)
|
| 367 |
+
for j in range(categories_per_row):
|
| 368 |
+
if i + j < len(categories):
|
| 369 |
+
with cols[j]:
|
| 370 |
+
category = categories[i + j]
|
| 371 |
+
st.subheader(category)
|
| 372 |
+
if isinstance(PROMPT_CATEGORIES[category], dict) and "description" in PROMPT_CATEGORIES[category]:
|
| 373 |
+
st.write(PROMPT_CATEGORIES[category]["description"])
|
| 374 |
+
else:
|
| 375 |
+
st.write("Bu kategori için açıklama bulunmuyor.")
|
| 376 |
+
|
| 377 |
+
# Footer
|
| 378 |
+
st.markdown("---")
|
| 379 |
+
st.markdown("© 2025 AI Prompt Generator | Tüm hakları saklıdır.")
|
| 380 |
+
|
| 381 |
+
if __name__ == "__main__":
|
| 382 |
+
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
|