https://github.com/alves-dev/ai-extraction
Projeto que visa usar IA's para extrair informações de áudio e mensagens de texto
https://github.com/alves-dev/ai-extraction
ai amqp docker gradle java mongodb rabbitmq spring thymeleaf
Last synced: 2 months ago
JSON representation
Projeto que visa usar IA's para extrair informações de áudio e mensagens de texto
- Host: GitHub
- URL: https://github.com/alves-dev/ai-extraction
- Owner: alves-dev
- License: gpl-3.0
- Created: 2024-03-25T21:08:12.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-06-28T21:32:23.000Z (12 months ago)
- Last Synced: 2026-04-12T01:42:37.941Z (2 months ago)
- Topics: ai, amqp, docker, gradle, java, mongodb, rabbitmq, spring, thymeleaf
- Language: Java
- Size: 119 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
AI Extraction
Projeto que visa usar IA's para extrair informações de áudio e mensagens de texto
O objetivo do projeto é entender os possíveis potências dos LLM.
### Caso de uso
Dado um áudio, o transformar em texto, e depois extrair dele um `json`
contendo as informações; logicamente com o json em mãos sua criatividade é o limite.
### Como foi feito
Para auxiliar no processo de desenvolvimento decidi usar o projeto [Spring AI](https://spring.io/projects/spring-ai)
que disponibiliza uma série de classes prontas para lidar com vários modelos, dentre eles os modelos da [OpenAI](https://openai.com/).
Para a transcrição do áudio estou usando o modelo `whisper-1`, e para a análise do texto uso o `gpt-3.5-turbo-0125`.
### Detalhes de implementação
Nao tem segredo para realizar a transcrição, basta enviar o áudio para a API utilizando a classe `OpenAiAudioTranscriptionClient`
e voce ira obter o texto de retorno.
Já para a extração do `json` voce deve usar a `OpenAiChatClient`; e funciona assim:
Primeiramente crie o seu prompt, como algo assim:
```java
private static final String POMPT_STRING = """
Quero que você extraia do texto: {text}
as seguintes intenções: {intents}
apenas caso encontre elas no texto.
{format}
""";
```
Injete o texto extraído e suas `intents`.
Com a ajuda do spring você cria um `BeanOutputParser`, esta é a classe que representa
qual o tipo de retorno você desejá, então no lugar de `{format}`
o spring injeta uma descrição informando que o retorno dado pelo LLM deve ser apenas um `json` valido
e nada mais do que isso, depois é só converter a string em json para o seu objeto.
### Possíveis evoluções
Como evolução do projeto você poderia rodar algum modelo disponível na sua própria infra (eu até tentei, mas minha maquina pediu para sair).
O projeto foi construído de uma forma que os modelos utilizados possam ser substituídos facilmente,
que tal tentar outros modelos no mercado?
E que tal treinar o seu próprio modelo?
O projeto salva todas as interações no banco de dados [MongoDB](https://www.mongodb.com/pt-br),
assim voce tem os dados que podem ser utilizados para tal.
---
**Atualizado em:** 2025-06-28 18:32