Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jorgeluisreis/askconsole
AskConsole é uma aplicação que une a simplicidade do CLI com a complexidade de uma IA (LLM), trazendo a oportunidade ter conversas com o Gemini da Google.
https://github.com/jorgeluisreis/askconsole
cli ia java json llm
Last synced: about 1 month ago
JSON representation
AskConsole é uma aplicação que une a simplicidade do CLI com a complexidade de uma IA (LLM), trazendo a oportunidade ter conversas com o Gemini da Google.
- Host: GitHub
- URL: https://github.com/jorgeluisreis/askconsole
- Owner: Jorgeluisreis
- License: mit
- Created: 2024-09-11T17:45:21.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2024-09-21T20:14:34.000Z (about 2 months ago)
- Last Synced: 2024-10-15T16:03:47.504Z (about 1 month ago)
- Topics: cli, ia, java, json, llm
- Language: Java
- Homepage: https://github.com/Jorgeluisreis/AskConsole
- Size: 33.2 KB
- Stars: 17
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# AskConsole
🚀 **AskConsole** é uma aplicação Java interativa que permite criar e gerenciar conversas com uma interface de linha de comando (CLI). Desenvolvido com o intuito de oferecer uma experiência robusta para interação e salvamento de conversas, o AskConsole é ideal para quem busca uma ferramenta prática e eficiente para comunicação textual em ambiente de console.
## 📚 Conceito
O AskConsole foi criado com o intuito de utilizar a estrutura simples do CLI com uma aplicação escalável, no caso, um ecossistema de consumo de uma LLM, sendo o Gemini do Google. Há diversos conceitos implícitos nesta aplicação, desde uma simples interação no chat até a possibilidade de continuar uma conversa de onde parou.
## 🛠️ Tecnologias Utilizadas
- ![Java](https://img.shields.io/badge/Java-21-blue) - Linguagem de programação utilizada
- ![Jansi](https://img.shields.io/badge/Jansi-2.4.1-blue) - Biblioteca para manipulação de cores no console
- ![Google Cloud AI Platform](https://img.shields.io/badge/Google_Cloud_AI_Platform-3.49.0-blue) - API utilizada para interação com modelos de IA
- ![ConsoleClear](https://img.shields.io/badge/ConsoleClear-1.0.0-blue) - Biblioteca personalizada para limpar o console criada por mim
- ![Jackson](https://img.shields.io/badge/Jackson-2.17.2-blue) - Biblioteca para manipulação de JSON
- ![JSON](https://img.shields.io/badge/JSON-20240303-blue) - Biblioteca para manipulação de JSON
- ![Google Auth Library](https://img.shields.io/badge/Google_Auth_Library-1.24.1-blue) - Biblioteca para autenticação OAuth2## 🏛️ Arquitetura da Aplicação
## 📐 Padrões e Metodologias Utilizadas
- **SOLID Principles**:
- **Single Responsibility Principle (SRP)**
- **Open/Closed Principle (OCP)**: O sistema está projetado para permitir a adição de novas funcionalidades sem modificar o código existente, utilizando extensões de classes e interfaces.
- **Liskov Substitution Principle (LSP)**: As subclasses podem substituir as classes base sem alterar o comportamento esperado do sistema, garantindo consistência nas implementações.
- **Interface Segregation Principle (ISP)**: Interfaces são projetadas para serem específicas e focadas, evitando interfaces grandes e abrangentes e permitindo que as classes implementem apenas os métodos necessários.
- **Dependency Inversion Principle (DIP)**: Dependências são abstraídas por meio de interfaces, em vez de depender diretamente de implementações concretas, facilitando a substituição e o teste das dependências.- **Dependency Injection** - Para promover a inversão de controle e facilitar a gestão de dependências, permitindo uma arquitetura mais modular e testável.
- **Asynchronous Programming** - Utilizado para melhorar a performance e a escalabilidade da aplicação, especialmente em operações de rede e I/O.
- **Command Pattern** - Utilizado para encapsular todas as informações necessárias para executar uma ação, permitindo o uso de comandos de forma desacoplada e flexível.## 🌐 Funcionalidades
- **Criar Conversas Interativas** - Permite iniciar e gerenciar conversas com uma interface de linha de comando.
- **Salvar Conversas** - Guarda o histórico das conversas para consultas futuras.
- **Continuar Conversas** - Retoma conversas de onde pararam.
- **Importar Chave API** - Necessário para autenticação e uso da aplicação.
## 📥 Requisitos Mínimos
- **JRE 1.4.0** - Necessário para rodar a aplicação.
- **Internet** - Necessário conexão com a internet.
- **Chave API** - Obrigatória para autenticação e funcionamento da aplicação.## 🛠️ Instalação
**OBS:** Clique [aqui](https://makersuite.google.com/app/apikey?hl=pt-br) para adquirir a sua chave API de forma gratuita para usar a aplicação.
- É altamente recomendado habilitar o encoding UTF-8 do seu computador. Caso não saiba, clique [aqui](https://cursos.alura.com.br/forum/topico-problemas-de-codificacao-de-caracteres-na-saida-282140).### Windows
1. Faça o download da aplicação clicando [aqui](https://github.com/Jorgeluisreis/AskConsole/releases)
2. Descompacte o arquivo baixado usando o WinRAR ou 7-Zip.
3. Mova a pasta descompactada para um local do seu computador.
**Observação:** Caso mova para a pasta "Arquivos de Programas", certifique-se de que as permissões de modificação da pasta estão adequadas.
4. Ao abrir a aplicação pela primeira vez, será solicitado um arquivo `.ini` com a chave API. A estrutura do arquivo deve ser:
```text
API=(Sua API Aqui)
```
Por exemplo:
```text
API=AzKj231Azi8AqweKa
```### Linux
1. Faça o download da aplicação clicando [aqui](https://github.com/Jorgeluisreis/AskConsole/releases)
2. Descompacte o arquivo baixado usando o `unzip` ou qualquer outra ferramenta de descompactação de sua preferência.
3. Mova a pasta descompactada para um local de sua escolha no sistema.
4. Torne o arquivo executável e execute a aplicação com os seguinte comando
```text
chmod +x AskConsole.jar
```5. Execute a aplicação
```text
java -jar AskConsole.jar
```7. Ao abrir a aplicação pela primeira vez, será solicitado um arquivo `.ini` com a chave API. A estrutura do arquivo deve ser:
```text
API=(Sua API Aqui)
```
Por exemplo:
```text
API=AzKj231Azi8AqweKa
```