SpeakGPT — это продвинутый и интуитивно понятный помощник искусственного интеллекта с открытым исходным кодом, который использует мощные технологии OpenAI, чтобы предоставить вам непревзойденную производительность и функциональность.
Это настольная версия SpeakGPT, созданная с использованием ReactJS и Google Material Design 3.
Примечание
Этот проект является частью моей дипломной работы. Для использования этой работы требуется указание авторства. Copyright (c) 2023-2024 Дмитрий Остапенко. Все права защищены.
Цитируйте как: Дмитрий Остапенко (2024 г.), «Автоматизация программ анализа с использованием служб второго пилота», бакалаврская работа, Технический университет Кошице, 2024 г.
Запустите сайт SpeakGPT: https://assistant.teslasoft.org/.
Посмотреть SpeakGPT для Android: https://github.com/AndraxDev/speak-gpt.
Вы можете встроить SpeakGPT на свой веб-сайт или в приложение. Просто используйте следующий код:
< 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 >
Реагировать на реализацию:
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 ;
Помощник можно настроить с помощью полезной нагрузки. Полезная нагрузка — это строка JSON в кодировке Base64, содержащая параметры. Полезная нагрузка идет после /embedded/ в URL-адресе. Пример:
< iframe src =" https://assistant.teslasoft.org/embedded?payload=eyJuYW1lIjoiRXhhbXBsZSBDaGF0IiwiaW5pdGlhbE1lc3NhZ2UiOiJIZWxsbywgaG93IGFyZSB5b3U%2FIiwiaW5pdGlhbFJlc3BvbnNlIjoiSSdtIGZpbmUsIHRoYW5rIHlvdS4iLCJzeXN0ZW1NZXNzYWdlIjoiVGhpcyBpcyBhbiBleGFtcGxlIGNoYXQuIFBsZWFzZSBiZSBwb2xpdGUuIiwiY2hhdExvY2F0aW9uIjoiZXhhbXBsZUNoYXQifQ%3D%3D " > </ iframe >
Чтобы помощник работал правильно, вы должны URL-кодировать вашу полезную нагрузку.
let encodedPayload = encodeURIComponent ( btoa ( json ) ) ;
Пример полезной нагрузки:
{
"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
- имя, которое будет отображаться вверху окна помощникаicon
— URL-адрес значка, который будет отображаться в верхней части окна помощника, когда разговор пуст.description
- описание, которое будет отображаться вверху окна помощника, когда беседа пуста. Поддерживает HTMLinitialMessage
— сообщение, которое будет отправлено помощнику при его загрузкеinitialResponse
- ответ помощника, чтобы разговор работал правильноsystemMessage
— сообщение с дополнительным содержимым, которое не отображается в чате и добавляется в конец истории чата.chatLocation
— расположение чата в индексируемой базе данных, не используйте пробелы и специальные символы.В будущем будут добавлены дополнительные параметры.
SpeakGPT использует API OpenAI, чтобы предоставить вам лучший опыт. Использование API-ключей более безопасно, чем использование вашего имени пользователя и пароля. Ваша личная информация не может быть получена с помощью ключа API. OpenAI предоставляет дешевый API-доступ к своим сервисам. Ваш ключ API хранится локально на вашем устройстве и никому не передается. SpeakGPT не собирает никаких личных данных. SpeakGPT имеет открытый исходный код, и вы можете проверить код самостоятельно. Каждый выпуск SpeakGPT проверяется на VirusTotal. Если у вас есть какие-либо опасения, вы можете либо отозвать свой ключ API, либо использовать отдельный ключ API для SpeakGPT.
Чтобы защитить свой ключ API, выполните следующие действия:
Почему мы запутываем наш код в производственных версиях?
Обфускация и сокращение ресурсов позволяют нам оптимизировать размер приложения, его производительность, защитить его от обратного проектирования или взлома, а также обеспечить хранение ваших учетных данных, таких как ключи API, в безопасном месте. Вы можете запросить незапутанную сборку или скомпилировать ее самостоятельно, чтобы убедиться в безопасности нашего приложения.
Личность разработчика
Имя разработчика: Дмитрий Остапенко (AndraxDev)
Контакт: dostapенко[email protected], +421951829517
Юридический адрес: Южна Трида 4Б, 04001 Кошице, Словакия 04001
Код юридического лица: 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.