Equityone commited on
Commit
aa1079e
·
verified ·
1 Parent(s): 97a29ae

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +55 -75
app.py CHANGED
@@ -2,95 +2,75 @@ import gradio as gr
2
 
3
  class PromptExpert:
4
  def __init__(self):
5
- self.templates = {
6
- "expert": {
7
- "structure": """Description technique détaillée:
8
- {prompt}
9
-
10
- Paramètres techniques:
11
- - Résolution: {quality}%
12
- - Éclairage: précis et équilibré
13
- - Niveau de détail: maximum
14
- - Format: ultra-haute définition
15
-
16
- Exigences:
17
- 1. Composition professionnelle
18
- 2. Netteté exceptionnelle
19
- 3. Rendu photoréaliste
20
- 4. Respect des standards professionnels""",
21
- "focus": ["Qualité technique", "Précision", "Standards pro"]
22
- },
23
- "creative": {
24
- "structure": """Vision créative:
25
- {prompt}
26
-
27
- Style artistique:
28
- - Innovation: {quality}%
29
- - Approche: expérimentale
30
- - Expression: libre
31
- - Ambiance: {mood}
32
-
33
- Éléments créatifs:
34
- 1. {creative_element1}
35
- 2. {creative_element2}
36
- 3. {creative_element3}
37
-
38
- Focus artistique:
39
- 1. Composition unique
40
- 2. Effets visuels innovants
41
- 3. Impact émotionnel""",
42
- "moods": ["dramatique", "onirique", "dynamique", "serein"],
43
- "elements": [
44
- "Jeu de lumières spectaculaire",
45
- "Perspective originale",
46
- "Textures complexes",
47
- "Mouvement fluide",
48
- "Atmosphère immersive",
49
- "Contraste saisissant"
50
- ]
51
- }
52
  }
53
 
54
- def _get_creative_elements(self, base_prompt):
55
- import random
56
- elements = self.templates["creative"]["elements"]
57
- chosen = random.sample(elements, 3)
58
- return chosen
 
59
 
60
- def _get_mood(self, base_prompt):
61
- import random
62
- return random.choice(self.templates["creative"]["moods"])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
 
64
  def optimize(self, prompt, mode, complexity):
65
- if mode == "creative":
66
- template = self.templates[mode]["structure"]
67
- mood = self._get_mood(prompt)
68
- elements = self._get_creative_elements(prompt)
69
- return template.format(
70
- prompt=prompt,
71
- quality=complexity,
72
- mood=mood,
73
- creative_element1=elements[0],
74
- creative_element2=elements[1],
75
- creative_element3=elements[2]
76
- )
77
  else:
78
- return self.templates["expert"]["structure"].format(
79
- prompt=prompt,
80
- quality=complexity
81
- )
82
 
83
  def create_interface():
84
  expert = PromptExpert()
85
 
86
- with gr.Blocks(title="Optimiseur de Prompts IA") as demo:
87
  gr.Markdown("# Optimiseur de Prompts IA")
88
 
89
  with gr.Row():
90
  with gr.Column():
91
  input_prompt = gr.Textbox(
92
  label="Prompt Initial",
93
- placeholder="Décrivez votre image..."
 
94
  )
95
 
96
  mode = gr.Radio(
@@ -102,8 +82,8 @@ def create_interface():
102
  complexity = gr.Slider(
103
  minimum=0,
104
  maximum=100,
105
- value=75,
106
- label="Niveau de Complexité"
107
  )
108
 
109
  optimize_btn = gr.Button("Optimiser")
 
2
 
3
  class PromptExpert:
4
  def __init__(self):
5
+ self.expert_intros = {
6
+ "étude": "En tant qu'analyste stratégique spécialisé dans",
7
+ "marché": "En qualité d'expert en études de marché focalisé sur",
8
+ "image": "En tant que directeur artistique spécialisé dans",
9
+ "technique": "En tant qu'expert technique dans le domaine de",
10
+ "recherche": "En qualité de chercheur spécialisé dans",
11
+ "développement": "En tant que développeur expert en",
12
+ "business": "En qualité de consultant stratégique spécialisé en",
13
+ "default": "En tant qu'expert dans le domaine de"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  }
15
 
16
+ def _detect_domain(self, prompt):
17
+ prompt_lower = prompt.lower()
18
+ for key in self.expert_intros.keys():
19
+ if key in prompt_lower:
20
+ return key
21
+ return "default"
22
 
23
+ def _add_expert_context(self, domain, topic):
24
+ context_templates = {
25
+ "étude": f"{topic}, je souhaite mener une analyse approfondie couvrant :\n\n" +
26
+ "1. L'état actuel du marché et ses tendances\n" +
27
+ "2. Les opportunités et menaces identifiées\n" +
28
+ "3. Les facteurs clés de succès\n" +
29
+ "4. Les recommandations stratégiques\n\n" +
30
+ "L'analyse devra être basée sur des données quantitatives et qualitatives récentes.",
31
+
32
+ "image": f"{topic}, avec les caractéristiques suivantes :\n\n" +
33
+ "1. Style visuel ultra-détaillé et photoréaliste\n" +
34
+ "2. Composition dynamique et équilibrée\n" +
35
+ "3. Éclairage cinématographique\n" +
36
+ "4. Rendu en ultra-haute définition\n\n" +
37
+ "Le résultat doit captiver visuellement et transmettre une émotion forte.",
38
+
39
+ "default": f"{topic}, en mettant l'accent sur :\n\n" +
40
+ "1. Une approche méthodologique rigoureuse\n" +
41
+ "2. Des données et arguments solides\n" +
42
+ "3. Des conclusions actionnables\n" +
43
+ "4. Des recommandations concrètes\n\n" +
44
+ "L'analyse doit être exhaustive et orientée résultats."
45
+ }
46
+ return context_templates.get(domain, context_templates["default"])
47
 
48
  def optimize(self, prompt, mode, complexity):
49
+ domain = self._detect_domain(prompt)
50
+ intro = self.expert_intros[domain]
51
+ expert_context = self._add_expert_context(domain, prompt)
52
+
53
+ if mode == "expert":
54
+ return f"{intro} {expert_context}\n\n" + \
55
+ f"Niveau de détail: {complexity}%\n" + \
56
+ "Objectif: Produire une analyse exhaustive et actionnable."
 
 
 
 
57
  else:
58
+ return f"Approche créative pour {prompt}\n\n" + \
59
+ f"Innovation: {complexity}%\n" + \
60
+ "Focus: Explorer des angles nouveaux et non conventionnels."
 
61
 
62
  def create_interface():
63
  expert = PromptExpert()
64
 
65
+ with gr.Blocks() as demo:
66
  gr.Markdown("# Optimiseur de Prompts IA")
67
 
68
  with gr.Row():
69
  with gr.Column():
70
  input_prompt = gr.Textbox(
71
  label="Prompt Initial",
72
+ placeholder="Décrivez votre demande...",
73
+ lines=3
74
  )
75
 
76
  mode = gr.Radio(
 
82
  complexity = gr.Slider(
83
  minimum=0,
84
  maximum=100,
85
+ value=85,
86
+ label="Niveau de Détail"
87
  )
88
 
89
  optimize_btn = gr.Button("Optimiser")