SpeakGPT est un assistant d'IA open source avancé et hautement intuitif qui utilise les puissantes technologies OpenAI pour vous offrir des performances et des fonctionnalités inégalées.
Il s'agit d'une version de bureau de SpeakGPT créée à l'aide de ReactJS et Google Material Design 3.
Note
Ce projet fait partie de ma thèse de licence. L'attribution est requise pour utiliser cette œuvre. Copyright (c) 2023-2024 Dmytro Ostapenko. Tous droits réservés.
Citer comme : Dmytro Ostapenko (2024), Thèse de licence "Review Program Automation Using Copilot Services", Université technique de Košice, 2024.
Lancez SpeakGPT Web : https://assistant.teslasoft.org/
Consultez SpeakGPT pour Android : https://github.com/AndraxDev/speak-gpt.
Vous pouvez intégrer SpeakGPT dans votre site Web ou votre application. Utilisez simplement le code suivant :
< style >
/* Can be customized depending on your needs */
.assistant-embedded {
width: 500px;
height: calc(100vh - 128px);
background-color: rgba(50, 50, 50, 0.4);
position: fixed;
right: 24px;
top: 100px;
z-index: 100000;
border-radius: 48px;
}
.assistant-iframe {
width: 100%;
height: 100%;
border: none;
background-color: transparent;
}
</ style >
...
< div class =" assistant-embedded " id =" speakgpt " style =" display: none; " >
< iframe src =" https://assistant.teslasoft.org/embedded " class =" assistant-iframe " > </ iframe >
</ div >
...
< script >
function switchAssistant ( ) {
if ( localStorage . getItem ( "assistantOpened" ) === "true" ) {
document . getElementById ( "speakgpt" ) . style . display = "none" ;
localStorage . setItem ( "assistantOpened" , "false" )
} else {
document . getElementById ( "speakgpt" ) . style . display = "block" ;
localStorage . setItem ( "assistantOpened" , "true" )
}
}
function loadAssistant ( ) {
if ( localStorage . getItem ( "assistantOpened" ) === "true" ) {
document . getElementById ( "speakgpt" ) . style . display = "block" ;
} else {
document . getElementById ( "speakgpt" ) . style . display = "none" ;
}
}
loadAssistant ( ) ;
</ script >
Implémentation de Réagir :
import React , { useState } from "react" ;
function MyComponent ( ) {
const [ assistantIsOpened , setAssistantIsOpened ] = useState ( false ) ;
return (
< div >
< button className = { "btn" } onClick = { ( ) => {
if ( assistantIsOpened ) {
setAssistantIsOpened ( false ) ;
} else {
setAssistantIsOpened ( true ) ;
}
} } > { assistantIsOpened ? "Close Assistant" : "Open Assistant" }
< / button >
{
assistantIsOpened ? < div className = { "assistant-embedded" } >
< iframe src = { "https://assistant.teslasoft.org/embedded" } className = { "assistant-iframe" } title = { "SpeakGPT" } / >
< / div > : null
}
< / div >
) ;
}
export default MyComponent ;
L'assistant peut être personnalisé avec une charge utile. Payload est une chaîne JSON codée en base64 qui contient des paramètres. La charge utile va après /embedded/ dans l'URL. Exemple:
< iframe src =" https://assistant.teslasoft.org/embedded?payload=eyJuYW1lIjoiRXhhbXBsZSBDaGF0IiwiaW5pdGlhbE1lc3NhZ2UiOiJIZWxsbywgaG93IGFyZSB5b3U%2FIiwiaW5pdGlhbFJlc3BvbnNlIjoiSSdtIGZpbmUsIHRoYW5rIHlvdS4iLCJzeXN0ZW1NZXNzYWdlIjoiVGhpcyBpcyBhbiBleGFtcGxlIGNoYXQuIFBsZWFzZSBiZSBwb2xpdGUuIiwiY2hhdExvY2F0aW9uIjoiZXhhbXBsZUNoYXQifQ%3D%3D " > </ iframe >
Pour que l'assistant fonctionne correctement, vous devez encoder l'URL de votre charge utile.
let encodedPayload = encodeURIComponent ( btoa ( json ) ) ;
Exemple de charge utile :
{
"name" : " Example Chat " ,
"icon" : " https://example.com/icon.png " ,
"description" : " This assistant can provide you with relevant responses based on ... " ,
"initialMessage" : " Hello, how are you? " ,
"initialResponse" : " I'm fine, thank you. " ,
"systemMessage" : " This is an example chat. Please be polite. " ,
"chatLocation" : " exampleLocation "
}
name
- nom qui sera affiché en haut de la fenêtre de l'assistanticon
- URL vers l'icône qui sera affichée en haut de la fenêtre de l'assistant lorsque la conversation est videdescription
- description qui sera affichée en haut de la fenêtre de l'assistant lorsque la conversation est vide. Prend en charge HTMLinitialMessage
- un message qui sera envoyé à l'assistant lors de son chargementinitialResponse
- réponse de l'assistant pour que la conversation fonctionne correctementsystemMessage
- un message avec du contenu supplémentaire qui n'est pas affiché dans le chat et ajouté à la fin de l'historique du chat.chatLocation
- emplacement du chat dans la base de données indexée, n'utilisez pas d'espaces ni de caractères spéciauxD'autres paramètres seront ajoutés à l'avenir.
SpeakGPT utilise l'API OpenAI pour vous offrir la meilleure expérience. L'utilisation de clés API est plus sécurisée que l'utilisation de votre nom d'utilisateur/mot de passe. Vos informations personnelles ne peuvent pas être obtenues à l'aide de la clé API. OpenAI fournit un accès API bon marché à leurs services. Votre clé API est stockée localement sur votre appareil et n'est partagée avec personne. SpeakGPT ne collecte aucune donnée personnelle. SpeakGPT est open source et vous pouvez vérifier le code vous-même. Chaque version de SpeakGPT est vérifiée sur VirusTotal. Si vous avez des inquiétudes, vous pouvez soit révoquer votre clé API, soit utiliser une clé API distincte pour SpeakGPT.
Pour sécuriser votre clé API, procédez comme suit :
Pourquoi obscurcissons-nous notre code dans les versions de production ?
L'obscurcissement et la réduction des ressources nous permettent d'optimiser la taille de l'application, ses performances, de la sécuriser contre l'ingénierie inverse ou la falsification et de garantir que vos informations d'identification, telles que les clés API, sont conservées en lieu sûr. Vous pouvez demander une version non masquée ou la compiler vous-même pour vous assurer que notre application est sécurisée.
Identité du développeur
Nom du développeur : Dmytro Ostapenko (AndraxDev)
Contact : [email protected], +421951829517
Adresse légale : Južná trya 4B, 04001 Košice, Slovaquie 04001
ID d’entité juridique : 55545386
Copyright (c) 2023-2024 Dmytro Ostapenko. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.