Bem -vindo ao Repositório de Chat API Assistente do Openai! Este aplicativo de bate-papo inovador permite que os usuários interajam com um assistente de IA alimentado pelo mais recente modelo "GPT-4-1106-PREVEIGE". É um espaço emocionante em que a tecnologia encontra conversas, oferecendo uma experiência única de interação de IA.
Observe que este aplicativo está atualmente na fase beta e está em evolução continuamente. Estamos trabalhando diligentemente para aprimorar a experiência do usuário e adicionar novos recursos. Durante esta fase, você pode encontrar alguns soluços ou comportamento inesperado.
Este aplicativo está pronto para ser implantado com a Vercel, uma plataforma em nuvem para sites estáticos e funções sem servidor. A Vercel fornece uma maneira fácil de implantar seus aplicativos diretamente do seu repositório.
Para implantar este aplicativo com o Vercel, clique no botão "Implantar com vercel" abaixo. Isso o levará à plataforma Vercel, onde você será guiado pelo processo de implantação.
Observe que você precisará fornecer sua chave da API do OpenAI durante o processo de implantação. Essa chave é usada para autenticar as solicitações do seu aplicativo para a API OpenAI.
Além da chave da API do OpenAI, você também pode especificar um ID de assistente padrão durante o processo de implantação. Este ID determina qual assistente de IA é usado no aplicativo de bate -papo. Se você definir este ID, o aplicativo usará esse assistente para o bate -papo. Se você não definir esse ID, o aplicativo solicitará ao usuário inserir os detalhes do assistente.
Para implantar o aplicativo com a tecla API OpenAI e um ID de assistente codificado, clique no botão "Implantar com vercel" abaixo. Você será solicitado a inserir sua chave da API do OpenAI e seu ID de assistente.
Assistente de IA personalizado : Personalize o nome, modelo e descrição do assistente para uma experiência de bate -papo exclusiva.
Experiência interativa de bate -papo : envolva -se em conversas dinâmicas com o assistente de IA.
Respostas robustas da IA : Aproveitando o modelo "GPT-4-1106-PREVEIA" do OpenAI (contexto de 128K) para respostas inteligentes e com reconhecimento de contexto.
Upload de arquivos : os usuários podem fazer upload de arquivos para o assistente analisar.
Integração da visão do GPT-4 : Envie fotos para a IA e descreverá o que vê, fornecendo informações e compreensão do conteúdo visual. (Versão improvada em breve)
Chamadas de função : (em breve) Experimente funcionalidades interativas, como chamadas de API com base no contexto de bate -papo.
Interpretação de código : (em breve) o assistente pode executar o código PyTo.
git clone https://github.com/admineral/OpenAI-Assistant-API-Chat.git
npm install
.env
no diretório raiz e adicione sua tecla API OpenAI: OPENAI_API_KEY=your_openai_api_key
npm run dev
Suas contribuições tornam este projeto prosperar. Seja relatando bugs, sugerindo recursos ou enviando alterações de código, toda a ajuda é muito apreciada.
Estamos ansiosos para aumentar esse projeto com o apoio e a criatividade da comunidade!
ChatManager.ts
)startAssistant
: inicializa o assistente de bate -papo, gerencia uploads de arquivos e lida com a criação de threads.sendMessage
: envia mensagens do usuário para o assistente e atualiza o bate -papo.getChatState
: Recupera o estado atual do bate -papo, incluindo mensagens e status de assistente.api.js
)uploadImageAndGetDescription
: carrega imagens e obtém descrições usando a API de visão GPT-4.createAssistant
, createThread
, runAssistant
: lida com a criação assistente, gerenciamento de threads e operações assistentes.assistantModules.ts
)prepareUploadFile
: prepara e carrega arquivos para o assistente de bate -papo.initializeAssistant
: inicializa um assistente de bate -papo com detalhes específicos.createChatThread
: cria um tópico de bate -papo com uma mensagem inicial.chatModules.ts
)submitUserMessage
: envia mensagens do usuário para o bate -papo.fetchAssistantResponse
: busca as mensagens mais recentes do assistente.updateChatState
: atualiza o estado de bate -papo com novas mensagens. ChatManager.ts
)ChatManager
gerencia o estado de bate -papo e as operações.api.js
)useChatState.ts
para gerenciamento de estado.InputForm
e MessageList
interagem com ChatManager
para exibir mensagens e lidar com entradas do usuário.ChatManager.ts
) : Componente central Gerenciando o estado de bate -papo e operações.api.js
) : Intermediário para interações da API.assistantModules.ts
) : lida com tarefas relacionadas ao assistente de bate -papo.chatModules.ts
) : gerencia as funcionalidades do bate -papo. ChatManager.ts
Esta é a classe principal que gerencia o estado e as operações do bate -papo.
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
seja criada.startAssistant
: inicia o assistente e configura o thread de bate -papo.sendMessage
: alças enviando mensagens para o assistente.getChatState
: recupera o estado atual do bate -papo.api.js
Este módulo contém funções para várias interações da API exigidas pelo aplicativo de bate -papo.
// 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
: carrega uma imagem codificada Base64 e obtém uma descrição.createAssistant
: cria uma nova instância de assistente.assistantModules.ts
Contém funções relacionadas à preparação e gerenciamento do assistente de bate -papo.
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
Gerencia as funcionalidades relacionadas ao bate-papo, lidando principalmente com mensagens.
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
e MessageList
são componentes do React que criam a interface do usuário do aplicativo de bate -papo.Eles usam ganchos e estados para gerenciar as interações do usuário e exibir mensagens de bate -papo.
/api/*.ts
)Esses arquivos definem várias rotas de API para lidar com tarefas, como criar assistentes, listar mensagens, verificar status de execução, etc. Eles interagem com a API do OpenAI e fornecem pontos de extremidade para o front -end.