SpeakGPT é um assistente de IA de código aberto avançado e altamente intuitivo que utiliza as poderosas tecnologias OpenAI para fornecer desempenho e funcionalidade incomparáveis.
Esta é uma versão desktop do SpeakGPT criada usando ReactJS e Google Material Design 3.
Observação
Este projeto faz parte do meu Trabalho de Conclusão de Curso. A atribuição é necessária para usar este trabalho. Copyright (c) 2023-2024 Dmytro Ostapenko. Todos os direitos reservados.
Citar como: Dmytro Ostapenko (2024), Tese de Bacharelado "Review Program Automation Using Copilot Services", Universidade Técnica de Košice, 2024.
Inicie a web SpeakGPT: https://assistant.teslasoft.org/
Veja o SpeakGPT para Android: https://github.com/AndraxDev/speak-gpt.
Você pode incorporar o SpeakGPT em seu site ou aplicativo. Basta usar o seguinte 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 >
Implementação de reação:
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 ;
O assistente pode ser personalizado com uma carga útil. Payload é uma string JSON codificada em base64 que contém parâmetros. A carga útil vem depois de /embedded/ no URL. Exemplo:
< iframe src =" https://assistant.teslasoft.org/embedded?payload=eyJuYW1lIjoiRXhhbXBsZSBDaGF0IiwiaW5pdGlhbE1lc3NhZ2UiOiJIZWxsbywgaG93IGFyZSB5b3U%2FIiwiaW5pdGlhbFJlc3BvbnNlIjoiSSdtIGZpbmUsIHRoYW5rIHlvdS4iLCJzeXN0ZW1NZXNzYWdlIjoiVGhpcyBpcyBhbiBleGFtcGxlIGNoYXQuIFBsZWFzZSBiZSBwb2xpdGUuIiwiY2hhdExvY2F0aW9uIjoiZXhhbXBsZUNoYXQifQ%3D%3D " > </ iframe >
Para fazer o assistente funcionar corretamente, você deve codificar sua carga em URL.
let encodedPayload = encodeURIComponent ( btoa ( json ) ) ;
Exemplo 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
- nome que será exibido na parte superior da janela do assistenteicon
- URL para o ícone que será exibido na parte superior da janela do assistente quando a conversa estiver vaziadescription
- descrição que será exibida no topo da janela do assistente quando a conversa estiver vazia. Suporta HTMLinitialMessage
- uma mensagem que será enviada ao assistente quando ele for carregadoinitialResponse
- resposta do assistente para fazer a conversa funcionar corretamentesystemMessage
- uma mensagem com conteúdo adicional que não é mostrado no chat e anexada ao final do histórico do chat.chatLocation
- localização do chat no banco de dados indexado, não use espaços em branco ou caracteres especiaisMais parâmetros serão adicionados no futuro.
SpeakGPT usa API OpenAI para fornecer a melhor experiência. Usar chaves de API é mais seguro do que usar seu nome de usuário/senha. Suas informações pessoais não podem ser obtidas usando a chave API. OpenAI fornece acesso API barato aos seus serviços. Sua chave API é armazenada localmente no seu dispositivo e não é compartilhada com ninguém. SpeakGPT não coleta nenhum dado pessoal. SpeakGPT é de código aberto e você mesmo pode verificar o código. Cada versão do SpeakGPT é verificada no VirusTotal. Se você tiver alguma dúvida, pode revogar sua chave de API ou usar uma chave de API separada para SpeakGPT.
Para proteger sua chave de API, execute as seguintes etapas:
Por que ofuscamos nosso código nas versões de produção?
A ofuscação e a redução de recursos nos permitem otimizar o tamanho e o desempenho do aplicativo e protegê-lo contra engenharia reversa ou adulteração e garantir que suas credenciais, como chaves de API, estejam em um local seguro. Você pode solicitar uma compilação não ofuscada ou compilá-la sozinho para garantir que nosso aplicativo seja seguro.
Identidade do desenvolvedor
Nome do desenvolvedor: Dmytro Ostapenko (AndraxDev)
Contato: [email protected], +421951829517
Endereço legal: Južná Trya 4B, 04001 Košice, Eslováquia 04001
ID da pessoa 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.