SpeakGPT adalah asisten AI sumber terbuka yang canggih dan sangat intuitif yang memanfaatkan teknologi OpenAI yang kuat untuk memberi Anda kinerja dan fungsionalitas tak tertandingi.
Ini adalah SpeakGPT versi desktop yang dibuat menggunakan ReactJS dan Google Material Design 3.
Catatan
Proyek ini adalah bagian dari Tesis Sarjana saya. Atribusi diperlukan untuk menggunakan karya ini. Hak Cipta (c) 2023-2024 Dmytro Ostapenko. Semua hak dilindungi undang-undang.
Dikutip sebagai: Dmytro Ostapenko (2024), "Review Otomatisasi Program Menggunakan Layanan Kopilot" Tesis Sarjana, Universitas Teknik Košice, 2024.
Luncurkan web SpeakGPT: https://assistant.teslasoft.org/
Lihat SpeakGPT untuk Android: https://github.com/AndraxDev/speak-gpt.
Anda dapat menyematkan SpeakGPT ke situs web atau aplikasi Anda. Cukup gunakan kode berikut:
< 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 >
Implementasi reaksi:
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 ;
Asisten dapat dikustomisasi dengan muatan. Payload adalah string JSON berkode base64 yang berisi params. Payload berada setelah /embedded/ di URL. Contoh:
< iframe src =" https://assistant.teslasoft.org/embedded?payload=eyJuYW1lIjoiRXhhbXBsZSBDaGF0IiwiaW5pdGlhbE1lc3NhZ2UiOiJIZWxsbywgaG93IGFyZSB5b3U%2FIiwiaW5pdGlhbFJlc3BvbnNlIjoiSSdtIGZpbmUsIHRoYW5rIHlvdS4iLCJzeXN0ZW1NZXNzYWdlIjoiVGhpcyBpcyBhbiBleGFtcGxlIGNoYXQuIFBsZWFzZSBiZSBwb2xpdGUuIiwiY2hhdExvY2F0aW9uIjoiZXhhbXBsZUNoYXQifQ%3D%3D " > </ iframe >
Agar asisten berfungsi dengan baik, Anda harus menyandikan URL payload Anda.
let encodedPayload = encodeURIComponent ( btoa ( json ) ) ;
Contoh muatan:
{
"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
- nama yang akan ditampilkan di bagian atas jendela asistenicon
- URL ke ikon yang akan ditampilkan di bagian atas jendela asisten saat percakapan kosongdescription
- deskripsi yang akan ditampilkan di bagian atas jendela asisten saat percakapan kosong. Mendukung HTMLinitialMessage
- pesan yang akan dikirim ke asisten saat dimuatinitialResponse
- respons asisten agar percakapan berfungsi dengan baiksystemMessage
- pesan dengan konten tambahan yang tidak ditampilkan dalam obrolan dan ditambahkan ke akhir riwayat obrolan.chatLocation
- lokasi obrolan di database yang diindeks, tidak menggunakan spasi atau karakter khususParam lainnya akan ditambahkan di masa mendatang.
SpeakGPT menggunakan OpenAI API untuk memberi Anda pengalaman terbaik. Menggunakan kunci API lebih aman daripada menggunakan nama pengguna/kata sandi Anda. Informasi pribadi Anda tidak dapat diperoleh menggunakan kunci API. OpenAI menyediakan akses API murah ke layanan mereka. Kunci API Anda disimpan secara lokal di perangkat Anda dan tidak dibagikan kepada siapa pun. SpeakGPT tidak mengumpulkan data pribadi apa pun. SpeakGPT adalah sumber terbuka dan Anda dapat memeriksa sendiri kodenya. Setiap rilis SpeakGPT diperiksa di VirusTotal. Jika Anda memiliki kekhawatiran, Anda dapat mencabut kunci API Anda atau menggunakan kunci API terpisah untuk SpeakGPT.
Untuk mengamankan kunci API Anda, lakukan langkah-langkah berikut:
Mengapa kami mengaburkan kode kami dalam rilis produksi?
Kebingungan dan penyusutan sumber daya memungkinkan kami mengoptimalkan ukuran aplikasi, kinerjanya, dan mengamankannya dari rekayasa balik atau gangguan, serta memastikan kredensial Anda seperti kunci API berada di tempat yang aman. Anda dapat meminta build yang tidak dikaburkan atau mengkompilasinya sendiri untuk memastikan aplikasi kami aman.
Identitas pengembang
Nama pengembang: Dmytro Ostapenko (AndraxDev)
Hubungi: [email protected], +421951829517
Alamat resmi: Južná trya 4B, 04001 Košice, Slovakia 04001
ID Badan Hukum: 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.