SpeakGPT 是一款先进且高度直观的开源 AI 助手,它利用强大的 OpenAI 技术为您提供无与伦比的性能和功能。
这是使用 ReactJS 和 Google Material Design 3 创建的 SpeakGPT 桌面版本。
笔记
这个项目是我的学士论文的一部分。使用本作品需要注明出处。版权所有 (c) 2023-2024 德米特罗·奥斯塔彭科。版权所有。
引用为:Dmytro Ostapenko (2024),“使用副驾驶服务审查程序自动化”学士论文,科希策技术大学,2024 年。
启动 SpeakGPT 网站:https://assistant.teslasoft.org/
查看 Android 版 SpeakGPT: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 ;
可以使用有效负载来定制助手。有效负载是包含参数的 base64 编码的 JSON 字符串。有效负载位于 URL 中的 /embedded/ 之后。例子:
< 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
- 当对话为空时将显示在助手窗口顶部的图标的 URLdescription
- 当对话为空时,将显示在助手窗口顶部的描述。支持HTMLinitialMessage
- 加载助手时将发送给助手的消息initialResponse
- 助理的响应以使对话正常进行systemMessage
- 带有附加内容的消息,这些内容未显示在聊天中,并附加到聊天历史记录的末尾。chatLocation
- 索引数据库中聊天的位置,不要使用空格或特殊字符将来会添加更多参数。
SpeakGPT 使用 OpenAI API 为您提供最佳体验。使用 API 密钥比使用您的用户名/密码更安全。无法使用 API 密钥获取您的个人信息。 OpenAI 提供廉价的 API 访问其服务。您的 API 密钥存储在您的设备本地,不会与任何人共享。 SpeakGPT 不收集任何个人数据。 SpeakGPT 是开源的,你可以自己查看代码。 SpeakGPT 的每个版本都会在 VirusTotal 上进行检查。如果您有任何疑虑,可以撤销您的 API 密钥或为 SpeakGPT 使用单独的 API 密钥。
要保护您的 API 密钥,请执行以下步骤:
为什么我们在生产版本中混淆代码?
混淆和资源缩减使我们能够优化应用程序大小、性能并确保其免受逆向工程或篡改,并确保您的凭证(例如 API 密钥)存放在安全的地方。您可以请求未混淆的构建或自行编译,以确保我们的应用程序是安全的。
开发者身份
开发者名称:Dmytro Ostapenko (AndraxDev)
联系方式:[email protected],+421951829517
法定地址:Južná Tryda 4B, 04001 Košice, Slovakia 04001
法人 ID: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.