Abmacode12 commited on
Commit
df47c2a
·
verified ·
1 Parent(s): 4b67936

Script exemple pour Agent IA (React + API IA)

Browse files

import React, { useState } from 'react';

// Fonction simulant un appel à une API IA pour générer une explication
async function generateExplanation(query) {
// Ici, vous pouvez intégrer un appel réel à une API IA (ex: OpenAI GPT)
// Pour l'exemple, on retourne un texte statique ou simulé
return new Promise((resolve) => {
setTimeout(() => {
resolve(`Voici une explication détaillée pour votre demande : "${query}".
L'agent IA analyse votre requête et génère un contenu complet adapté à votre projet.`);
}, 1500);
});
}

function AgentIA() {
const [userQuery, setUserQuery] = useState('');
const [explanation, setExplanation] = useState('');
const [loading, setLoading] = useState(false);

// Message d'accueil fixe pour la deuxième colonne
const welcomeMessage = "Bonjour, je suis votre assistante Agent IA, comment puis-je vous aider avec votre projet aujourd'hui ?";

const handleSubmit = async (e) => {
e.preventDefault();
if (!userQuery.trim()) return;

setLoading(true);
const result = await generateExplanation(userQuery);
setExplanation(result);
setLoading(false);
};

return (
<div style={{ display: 'flex', gap: '20px' }}>
{/* Première colonne : saisie utilisateur */}
<div style={{ flex: 1 }}>
<h3>Votre demande</h3>
<form onSubmit={handleSubmit}>
<textarea
rows="5"
value={userQuery}
onChange={(e) => setUserQuery(e.target.value)}
placeholder="Entrez votre demande ici..."
style={{ width: '100%' }}
/>
<button type="submit" disabled={loading} style={{ marginTop: '10px' }}>
{loading ? 'Génération en cours...' : 'Envoyer'}
</button>
</form>
</div>

{/* Deuxième colonne : message d'accueil + explication */}
<div style={{ flex: 1, border: '1px solid #ccc', padding: '10px', minHeight: '150px' }}>
<h3>Agent IA - Assistance</h3>
{!explanation ? (
<p>{welcomeMessage}</p>
) : (
<p>{explanation}</p>
)}
</div>

{/* Troisième colonne : aperçu (placeholder pour futur média) */}
<div style={{ flex: 1, border: '1px solid #ccc', padding: '10px', minHeight: '150px' }}>
<h3>Aperçu média</h3>
{/* Ici vous pouvez intégrer la génération d'images ou vidéos */}
<p>Échec de chargement de l’aperçu. La génération automatique de médias sera intégrée ici.</p>
</div>
</div>
);
}

export default AgentIA;
Explications du script
Trois colonnes en flexbox :

1ère colonne : zone de saisie pour la demande utilisateur.
2ème colonne : affiche un message d’accueil par défaut, puis l’explication générée.
3ème colonne : placeholder pour l’aperçu média (image/vidéo).
Fonction generateExplanation : simule un appel à une API IA qui génère une explication détaillée à partir de la requête utilisateur.

Gestion de l’état React :

userQuery pour stocker la demande.
explanation pour stocker la réponse générée.
loading pour indiquer le chargement.
Étapes suivantes pour votre développeur
Remplacer la fonction generateExplanation par un appel réel à une API IA (ex: OpenAI GPT-4) pour générer des réponses dynamiques.
Intégrer la génération d’images ou vidéos dans la troisième colonne, via une API de génération multimédia.
Personnaliser le style et le nom de l’agent (ici "Agent IA") selon votre charte graphique et besoins.
Ajouter la gestion des erreurs et fallback pour la génération média.
Si vous souhaitez, je peux aussi vous fournir un exemple de code pour l’intégration d’une API IA spécifique ou pour la génération d’images/vidéos. N’hésitez pas à me le demander.

Files changed (2) hide show
  1. components/ai-agent.js +139 -0
  2. index.html +2 -1
components/ai-agent.js ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class AIAgent extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ this.state = {
6
+ userQuery: '',
7
+ explanation: '',
8
+ loading: false
9
+ };
10
+ }
11
+
12
+ connectedCallback() {
13
+ this.render();
14
+ this.setupEventListeners();
15
+ }
16
+
17
+ async generateExplanation(query) {
18
+ // Simulate API call
19
+ return new Promise(resolve => {
20
+ setTimeout(() => {
21
+ resolve(`Voici une explication détaillée pour votre demande : "${query}".
22
+ L'agent IA analyse votre requête et génère un contenu complet adapté à votre projet.`);
23
+ }, 1500);
24
+ });
25
+ }
26
+
27
+ async handleSubmit(e) {
28
+ e.preventDefault();
29
+ if (!this.state.userQuery.trim()) return;
30
+
31
+ this.setState({ loading: true });
32
+ const result = await this.generateExplanation(this.state.userQuery);
33
+ this.setState({
34
+ explanation: result,
35
+ loading: false
36
+ });
37
+ }
38
+
39
+ setState(newState) {
40
+ this.state = { ...this.state, ...newState };
41
+ this.render();
42
+ }
43
+
44
+ setupEventListeners() {
45
+ const form = this.shadowRoot.querySelector('form');
46
+ const textarea = this.shadowRoot.querySelector('textarea');
47
+
48
+ textarea.addEventListener('input', (e) => {
49
+ this.setState({ userQuery: e.target.value });
50
+ });
51
+
52
+ form.addEventListener('submit', (e) => this.handleSubmit(e));
53
+ }
54
+
55
+ render() {
56
+ const welcomeMessage = "Bonjour, je suis votre assistante Agent IA, comment puis-je vous aider avec votre projet aujourd'hui ?";
57
+
58
+ this.shadowRoot.innerHTML = `
59
+ <style>
60
+ :host {
61
+ display: block;
62
+ width: 100%;
63
+ }
64
+ .container {
65
+ display: flex;
66
+ gap: 20px;
67
+ padding: 20px;
68
+ }
69
+ .column {
70
+ flex: 1;
71
+ background: var(--bg-color, #1e293b);
72
+ border-radius: 8px;
73
+ padding: 16px;
74
+ color: var(--text-color, #f8fafc);
75
+ }
76
+ textarea {
77
+ width: 100%;
78
+ min-height: 120px;
79
+ padding: 12px;
80
+ border-radius: 6px;
81
+ border: 1px solid #334155;
82
+ background: #0f172a;
83
+ color: #f8fafc;
84
+ resize: vertical;
85
+ }
86
+ button {
87
+ background: #3b82f6;
88
+ color: white;
89
+ border: none;
90
+ padding: 8px 16px;
91
+ border-radius: 6px;
92
+ cursor: pointer;
93
+ transition: background 0.2s;
94
+ }
95
+ button:hover {
96
+ background: #2563eb;
97
+ }
98
+ button:disabled {
99
+ background: #64748b;
100
+ cursor: not-allowed;
101
+ }
102
+ h3 {
103
+ margin-top: 0;
104
+ color: #94a3b8;
105
+ }
106
+ </style>
107
+
108
+ <div class="container">
109
+ <!-- First Column: User Input -->
110
+ <div class="column">
111
+ <h3>Votre demande</h3>
112
+ <form>
113
+ <textarea
114
+ placeholder="Entrez votre demande ici..."
115
+ value="${this.state.userQuery}"
116
+ ></textarea>
117
+ <button type="submit" ${this.state.loading ? 'disabled' : ''}>
118
+ ${this.state.loading ? 'Génération en cours...' : 'Envoyer'}
119
+ </button>
120
+ </form>
121
+ </div>
122
+
123
+ <!-- Second Column: AI Response -->
124
+ <div class="column">
125
+ <h3>Agent IA - Assistance</h3>
126
+ <p>${this.state.explanation || welcomeMessage}</p>
127
+ </div>
128
+
129
+ <!-- Third Column: Media Preview -->
130
+ <div class="column">
131
+ <h3>Aperçu média</h3>
132
+ <p>Échec de chargement de l'aperçu. La génération automatique de médias sera intégrée ici.</p>
133
+ </div>
134
+ </div>
135
+ `;
136
+ }
137
+ }
138
+
139
+ customElements.define('ai-agent', AIAgent);
index.html CHANGED
@@ -274,6 +274,7 @@ recognition.onerror = (event) => {
274
  }
275
  });
276
  </script>
277
- <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
 
278
  </body>
279
  </html>
 
274
  }
275
  });
276
  </script>
277
+ <script src="components/ai-agent.js"></script>
278
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
279
  </body>
280
  </html>