SpeakGPT는 강력한 OpenAI 기술을 활용하여 비교할 수 없는 성능과 기능을 제공하는 매우 직관적인 고급 오픈 소스 AI 도우미입니다.
이것은 ReactJS 및 Google Material Design 3을 사용하여 만든 SpeakGPT의 데스크톱 버전입니다.
메모
이 프로젝트는 내 학사 논문의 일부입니다. 이 저작물을 사용하려면 저작자 표시가 필요합니다. 저작권 (c) 2023-2024 Dmytro Ostapenko. 모든 권리 보유.
인용: Dmytro Ostapenko(2024), "Copilot 서비스를 사용한 프로그램 자동화 검토" 학사 논문, Košice 기술 대학, 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
- 대화가 비어있을 때 보조창 상단에 표시될 설명입니다. HTML을 지원합니다initialMessage
- 로드될 때 어시스턴트에게 전송될 메시지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á trya 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.