SpeakGPT es un asistente de IA de código abierto avanzado y altamente intuitivo que utiliza las potentes tecnologías OpenAI para brindarle un rendimiento y una funcionalidad incomparables.
Esta es una versión de escritorio de SpeakGPT creada con ReactJS y Google Material Design 3.
Nota
Este proyecto es parte de mi Tesis de Licenciatura. Se requiere atribución para utilizar este trabajo. Copyright (c) 2023-2024 Dmytro Ostapenko. Reservados todos los derechos.
Citar como: Dmytro Ostapenko (2024), Tesis de licenciatura "Revisar la automatización de programas utilizando servicios Copilot", Universidad Técnica de Košice, 2024.
Inicie la web de SpeakGPT: https://assistant.teslasoft.org/
Ver SpeakGPT para Android: https://github.com/AndraxDev/speak-gpt.
Puede integrar SpeakGPT en su sitio web o aplicación. Simplemente use el siguiente código:
< 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 >
Implementación de reacción:
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 ;
El asistente se puede personalizar con una carga útil. La carga útil es una cadena JSON codificada en base64 que contiene parámetros. La carga útil va después de /embedded/ en la URL. Ejemplo:
< iframe src =" https://assistant.teslasoft.org/embedded?payload=eyJuYW1lIjoiRXhhbXBsZSBDaGF0IiwiaW5pdGlhbE1lc3NhZ2UiOiJIZWxsbywgaG93IGFyZSB5b3U%2FIiwiaW5pdGlhbFJlc3BvbnNlIjoiSSdtIGZpbmUsIHRoYW5rIHlvdS4iLCJzeXN0ZW1NZXNzYWdlIjoiVGhpcyBpcyBhbiBleGFtcGxlIGNoYXQuIFBsZWFzZSBiZSBwb2xpdGUuIiwiY2hhdExvY2F0aW9uIjoiZXhhbXBsZUNoYXQifQ%3D%3D " > </ iframe >
Para que el asistente funcione correctamente, debe codificar la URL de su carga útil.
let encodedPayload = encodeURIComponent ( btoa ( json ) ) ;
Ejemplo de carga útil:
{
"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
: nombre que se mostrará en la parte superior de la ventana del asistenteicon
: URL del icono que se mostrará en la parte superior de la ventana del asistente cuando la conversación esté vacíadescription
: descripción que se mostrará en la parte superior de la ventana del asistente cuando la conversación esté vacía. Soporta HTMLinitialMessage
: un mensaje que se enviará al asistente cuando se cargueinitialResponse
: respuesta del asistente para que la conversación funcione correctamentesystemMessage
: un mensaje con contenido adicional que no se muestra en el chat y se agrega al final del historial de chat.chatLocation
: ubicación del chat en la base de datos indexada, no utilice espacios en blanco ni caracteres especialesSe agregarán más parámetros en el futuro.
SpeakGPT utiliza la API OpenAI para brindarle la mejor experiencia. Usar claves API es más seguro que usar su nombre de usuario/contraseña. Su información personal no se puede obtener mediante la clave API. OpenAI proporciona acceso API económico a sus servicios. Su clave API se almacena localmente en su dispositivo y no se comparte con nadie. SpeakGPT no recopila ningún dato personal. SpeakGPT es de código abierto y puedes comprobar el código tú mismo. Cada versión de SpeakGPT se verifica en VirusTotal. Si tiene alguna inquietud, puede revocar su clave API o utilizar una clave API separada para SpeakGPT.
Para proteger su clave API, realice los siguientes pasos:
¿Por qué ofuscamos nuestro código en las versiones de producción?
La ofuscación y la reducción de recursos nos permiten optimizar el tamaño de la aplicación, su rendimiento y protegerla contra ingeniería inversa o manipulación y garantizar que sus credenciales, como las claves API, estén en un lugar seguro. Puede solicitar una compilación sin ofuscaciones o compilarla usted mismo para asegurarse de que nuestra aplicación sea segura.
Identidad del desarrollador
Nombre del desarrollador: Dmytro Ostapenko (AndraxDev)
Contacto: [email protected], +421951829517
Dirección legal: Južná trya 4B, 04001 Košice, Eslovaquia 04001
RUT persona jurídica: 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.