Selamat datang di repositori obrolan API asisten openai! Aplikasi obrolan yang inovatif ini memungkinkan pengguna untuk berinteraksi dengan asisten AI yang ditenagai oleh model "GPT-4-1106-preview" terbaru Openai. Ini adalah ruang yang menarik di mana teknologi bertemu percakapan, menawarkan pengalaman unik interaksi AI.
Harap dicatat bahwa aplikasi ini saat ini dalam fase beta dan terus berkembang. Kami bekerja dengan rajin untuk meningkatkan pengalaman pengguna dan menambahkan fitur baru. Selama fase ini, Anda mungkin mengalami beberapa cegukan atau perilaku yang tidak terduga.
Aplikasi ini siap digunakan dengan Vercel, platform cloud untuk situs statis dan fungsi tanpa server. Vercel menyediakan cara mudah untuk menggunakan aplikasi Anda langsung dari repositori Anda.
Untuk menggunakan aplikasi ini dengan Vercel, klik tombol "Menyebarkan dengan Vercel" di bawah ini. Ini akan membawa Anda ke platform Vercel di mana Anda akan dipandu melalui proses penempatan.
Harap dicatat bahwa Anda harus menyediakan kunci API OpenAI Anda selama proses penempatan. Kunci ini digunakan untuk mengotentikasi permintaan aplikasi Anda ke API OpenAI.
Selain kunci API OpenAI, Anda juga dapat menentukan ID asisten default selama proses penempatan. ID ini menentukan asisten AI mana yang digunakan dalam aplikasi obrolan. Jika Anda mengatur ID ini, aplikasi akan menggunakan asisten ini untuk obrolan. Jika Anda tidak mengatur ID ini, aplikasi akan meminta pengguna untuk memasukkan detail asisten.
Untuk menggunakan aplikasi dengan kunci API OpenAI dan ID Asisten Hardcoded, klik tombol "Deploy with Vercel" di bawah ini. Anda akan diminta untuk memasukkan Kunci API OpenAI Anda dan ID Asisten Anda.
Asisten AI yang dipersonalisasi : Kustomisasi nama, model, dan deskripsi asisten untuk pengalaman obrolan yang unik.
Pengalaman obrolan interaktif : Terlibat dalam percakapan dinamis dengan asisten AI.
Respons AI yang kuat : Memanfaatkan model "GPT-4-1106-preview" Openai (konteks 128k) untuk tanggapan obrolan yang cerdas dan sadar konteks.
Unggah File : Pengguna dapat mengunggah file untuk dianalisis dengan asisten.
GPT-4 Visi Integrasi : Kirim gambar ke AI, dan itu akan menjelaskan apa yang dilihatnya, memberikan wawasan dan pemahaman tentang konten visual. (Versi yang ditingkatkan segera)
Panggilan fungsi : (segera hadir) mengalami fungsionalitas interaktif seperti panggilan API berdasarkan konteks obrolan.
Interpretasi kode : (segera hadir) Asisten dapat menjalankan kode Pytho.
git clone https://github.com/admineral/OpenAI-Assistant-API-Chat.git
npm install
.env
di direktori root dan tambahkan kunci API openai Anda: OPENAI_API_KEY=your_openai_api_key
npm run dev
Kontribusi Anda membuat proyek ini berkembang. Apakah itu melaporkan bug, menyarankan fitur, atau mengirimkan perubahan kode, setiap sedikit bantuan sangat dihargai.
Kami berharap dapat menumbuhkan proyek ini dengan dukungan dan kreativitas masyarakat!
ChatManager.ts
)startAssistant
: Inisialisasi asisten obrolan, mengelola unggahan file, dan menangani pembuatan utas.sendMessage
: Mengirim pesan pengguna ke asisten dan memperbarui obrolan.getChatState
: Mengambil keadaan obrolan saat ini, termasuk pesan dan status asisten.api.js
)uploadImageAndGetDescription
: Unggah gambar dan mendapat deskripsi menggunakan API Visi GPT-4.createAssistant
, createThread
, runAssistant
: Menangani Asisten Penciptaan, Manajemen Utas, dan Operasi Asisten.assistantModules.ts
)prepareUploadFile
: Mempersiapkan dan mengunggah file untuk asisten obrolan.initializeAssistant
: Menginisialisasi asisten obrolan dengan detail spesifik.createChatThread
: Membuat utas obrolan dengan pesan awal.chatModules.ts
)submitUserMessage
: Kirim pesan pengguna ke obrolan.fetchAssistantResponse
: Ambil pesan terbaru dari asisten.updateChatState
: Memperbarui status obrolan dengan pesan baru. ChatManager.ts
)ChatManager
mengelola keadaan obrolan dan operasi.api.js
)useChatState.ts
untuk manajemen negara.InputForm
dan MessageList
berinteraksi dengan ChatManager
untuk menampilkan pesan dan menangani input pengguna.ChatManager.ts
) : Komponen pusat yang mengelola keadaan obrolan dan operasi.api.js
) : Perantara untuk interaksi API.assistantModules.ts
) : Menangani tugas yang terkait dengan asisten obrolan.chatModules.ts
) : Mengelola fungsi obrolan. ChatManager.ts
Ini adalah kelas inti yang mengelola keadaan dan operasi obrolan.
class ChatManager {
private state : ChatState ;
private static instance : ChatManager | null = null ;
// Singleton pattern to ensure a single ChatManager instance
private constructor ( setChatMessages : ( messages : any [ ] ) => void , setStatusMessage : ( message : string ) => void ) {
this . state = {
/* State initialization */
} ;
console . log ( 'ChatManager initialized' ) ;
}
// Method to get the current instance of ChatManager
public static getInstance ( setChatMessages : ( messages : any [ ] ) => void , setStatusMessage : ( message : string ) => void ) : ChatManager {
if ( this . instance === null ) {
this . instance = new ChatManager ( setChatMessages , setStatusMessage ) ;
}
return this . instance ;
}
// Method to start the assistant
async startAssistant ( assistantDetails : any , file : File | null , initialMessage : string ) : Promise < void > {
// ... Function logic including API calls to initialize assistant and create chat thread
}
// Method to send a message
async sendMessage ( input : string ) : Promise < void > {
// ... Function logic to handle message sending
}
// Method to get the current chat state
getChatState ( ) : ChatState {
console . log ( 'Getting chat state' ) ;
return this . state ;
}
}
ChatManager
yang dibuat.startAssistant
: Memulai asisten dan mengatur utas obrolan.sendMessage
: Menangani mengirim pesan ke asisten.getChatState
: Mengambil keadaan obrolan saat ini.api.js
Modul ini berisi fungsi untuk berbagai interaksi API yang diperlukan oleh aplikasi obrolan.
// Example of an API function
export const uploadImageAndGetDescription = async ( base64Image ) => {
// Code to upload an image and get a description using the OpenAI API
} ;
export const createAssistant = async ( assistantDetails ) => {
// Code to create an assistant
} ;
// Other API functions like 'createThread', 'runAssistant', etc.
uploadImageAndGetDescription
: Unggah gambar yang dikodekan base64 dan mendapat deskripsi.createAssistant
: Membuat instance asisten baru.assistantModules.ts
Berisi fungsi yang terkait dengan mempersiapkan dan mengelola asisten obrolan.
export const prepareUploadFile = async ( file : File , setStatusMessage : ( message : string ) => void ) : Promise < string > => {
// Logic to prepare and upload a file for the chat assistant
} ;
export const initializeAssistant = async ( assistantDetails , fileId ) : Promise < string > => {
// Logic to initialize an assistant with given details
} ;
export const createChatThread = async ( inputMessage : string ) : Promise < string > => {
// Logic to create a chat thread
} ;
chatModules.ts
Mengelola fungsionalitas terkait obrolan, terutama berurusan dengan pesan.
export const submitUserMessage = async ( input : string , threadId : string ) : Promise < void > => {
// Logic to submit a user's message to the chat
} ;
export const fetchAssistantResponse = async ( runId : string , threadId : string ) : Promise < string > => {
// Logic to fetch the latest messages from the assistant
} ;
export const updateChatState = ( prevMessages : Message [ ] , newMessages : Message [ ] , setChatMessages : ( messages : any [ ] ) => void ) : Promise < void > => {
// Logic to update the chat state with new messages
} ;
WelcomeForm
, InputForm
, dan MessageList
adalah komponen bereaksi yang membangun antarmuka pengguna dari aplikasi obrolan.Mereka menggunakan kait dan status untuk mengelola interaksi pengguna dan menampilkan pesan obrolan.
/api/*.ts
)File -file ini menentukan berbagai rute API untuk menangani tugas -tugas seperti membuat asisten, mencantumkan pesan, memeriksa status menjalankan, dll. Mereka berinteraksi dengan API OpenAI dan menyediakan titik akhir untuk dihubungi frontend.