- 📍 Visão Geral
- ⚙️ Funcionalidades
- 📂 Estrutura do Projeto
- 🧩 Módulos
- 🚀 Começando
- 🤝 Contribuir
- 📄 Licença
- 👏 Agradecimentos
O projeto permite aos utilizadores carregar vídeos, transcreve-los para texto e gerar conclusões com as IAs da OpenAI, baseados em prompts pre-definidos. A proposta de valor do projeto consiste em tirar partido da IA para gerar conclusões eficientes e de alta qualidade para vários fins, como a criação de títulos e descrições apelativos para vídeos do YouTube. Em geral, oferece uma interface de fácil utilização para os utilizadores interagirem com sistemas de conclusão alimentados por IA.
Ele foi criado durante a NLW AI da Rocketseat porém possuí algumas diferenças minimas de visual e comportamento adicionadas por mim.
Destaque para: OpenAI API (Whisper e GPT-3.5 turbo 16k), FFmpeg WASM.
| Feature | Description |
|---|---|
| ⚙️ Arquitetura | base de código segue uma arquitetura servidor-cliente com uma API de backend construída em Fastify e um frontend construído em React. O backend usa Prisma como ORM para interagir com uma base de dados SQLite. |
| 📖 Documentação | 🧩 Clique aqui. |
| 🔗 Dependências | O sistema depende de bibliotecas externas como Fastify, React, Prisma, Tailwind CSS, OpenAI e axios. Estas bibliotecas fornecem funcionalidades essenciais para servir a API, construir o frontend, operações ORM, gerir estilos, processamento de PNL e efetuar chamadas à API. |
| 🧩 Modularidade | A base de código está organizada em vários componentes, rotas e bibliotecas. Cada componente tem uma responsabilidade específica e pode ser trocado ou reutilizado facilmente. No entanto, é possível melhorar a separação de preocupações e reduzir as dependências entre componentes. |
| ✔️ Testes | O código não tem uma estratégia de teste abrangente como Jest ou Cypress. Possui no entanto algumas rotas HTTP no backend para uma verificação manual do comportamento do servidor. |
| ⚡️ Performance | A performance varia dependendo do tamanho do vídeo. A IA pode ser otimizada. |
| 🔐 Segurança | Indisponível no momento. |
| 🔀 Controlo de versões | Este repositório. |
| 🔌 Integrações | A API do sistema interage com OpenAI para serviços de processamento de linguagem natural, Prisma para operações de bases de dados e FFmpeg com Web Assembly para processamento de vídeo e áudio. |
| 📶 Escalabilidade | Indisponível no momento. |
web/: Frontend.api/: Backend.
| File | Summary |
|---|---|
| routes.http | Um arquivo com as possível rotas da aplicação. |
| App.tsx | UI da aplicação onde o usuário irá carregar o vídeo e selecionar o prompt desejado. |
| create-transcription.ts | Rota POST para gerar a transcrição de um determinado vídeo. Ele valida os parâmetros e o corpo do pedido, busca os detalhes do vídeo, processa o arquivo de áudio, envia-o para a API de transcrição da OpenAI, armazena o resultado no banco de dados e retorna o texto da transcrição como resposta. |
| generate-ai-completion.ts | Rota POST que lida com a geração de IA para um determinado vídeo. Valida a entrada, obtém os dados do vídeo, gera uma mensagem de aviso e utiliza o modelo GPT da OpenAI para gerar uma conclusão. A conclusão gerada é então transmitida de volta como uma stream para ser lida pelo front-end, token a token. |
| get-all-prompts.ts | Rota GET que, quando um pedido é feito, ele recupera todos os prompts do banco de dados usando o Prisma. |
| upload-video.ts | Rota POST para carregar vídeos MP3 usando o Fastify. Ele valida o tipo de arquivo, salva-o em um local temporário e armazena as informações do vídeo em um banco de dados usando o Prisma. |
- Clonar o repositório:
git clone https://github.com/zF4ke/nlw-ai- Mudar para o diretório
web/do projeto:
cd nlw-ai/web- Instalar dependências:
npm install- Mudar para o diretório
api/do projeto:
cd ../api- Instalar dependências:
npm installEm web/:
npm run devEm api/:
npm run devIndisponível.As contribuições são sempre bem-vindas! Por favor, siga os seguintes passos:
- Bifurcar o repositório do projeto. Isto cria uma cópia do projeto na sua conta que pode modificar sem afetar o projeto original.
- Clone o repositório bifurcado para a sua máquina local usando um cliente Git como o Git ou o GitHub Desktop.
- Crie um novo branch com um nome descritivo (por exemplo,
new-feature-branchoubugfix-issue-123).
git checkout -b new-feature-branch- Faça alterações na base de código do projeto.
- Faça o commit das suas alterações no seu branch local com uma mensagem de commit clara que explique as alterações que você fez.
git commit -m 'Implementou nova funcionalidade.'- Envie suas alterações para o repositório bifurcado no GitHub usando o seguinte comando
git push origin new-feature-branch- Crie uma nova pull request para o repositório original do projeto. No pull request, descreva as alterações que você fez e por que elas são necessárias. Os mantenedores do projeto revisarão suas alterações e fornecerão feedback ou as mesclarão no branch principal.
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para informações adicionais.
ℹ️ Rocketseat - rocketseat.com.br

