Este é um projeto de integração com Java e OpenAI desenvolvido com Maven e Java. projeto consiste em criar um aplicação utilizando Java e algumas bibliotecas que vão facilitar nosso objetivo de integrar a aplicação com essa API e usar os recursos dessa ferramenta.
Implementação de prompt engineering (engenharia de prompts) e prompt template (template de prompts) para otimizar essas mensagens enviadas na hora de integrar a nossa aplicação com a API.
Utilização da versão 3.5 Turbo.
- Integração do Java com a API da OpenAI
- Engenharia de Prompt e template
- Modelos GPT e seus Custos
- Contagem de Tokens
- Categorizador de Produtos
- Identificador de perfil de chatGPT a ser utilizado (3.5 Turbo, 3.5 Turbo 16k ...etc)
- categorizador de descrição do usuário sobre o produto
- Tratamento de Erros
- Contados de Tokens e seus seus custos ao usuário ao fazer requisições a API do chatGPT
- Categorizador de produtos onde ha uma separação e uma categorização de produtos automática
- Identificador de perfil e escolha da melhor API a ser utilizada para o sistema com base nos custos de operação
- Analizador de reviews de usuários, onde vários usuários fazem suas analises e a API lê todas e faz uma analise geral do produto, classificando as analises em POSITIVAS, NEGATIVAS ou NEUTRAS e também classificado 3 pontos positivos e 3 pontos negativos do produto com base nas analises dos usuários
A proposta é desenvolver um assistente virtual para responder às dúvidas comuns que as clientes possam ter durante a navegação. Desenvolveremos esse projeto e as respostas que o chatbot vai devolver serão todas geradas pela Inteligência Artificial da OpenAI.
- Função que faz a leitura de arquivos externo do sistema e retorna a resposta para o usuário com base na pergunta feita
- Função que faz a chamada de uma função do sistema e retorna a resposta para o usuário com base na pergunta feita
Antes de começar, certifique-se de ter as seguintes ferramentas e tecnologias instaladas em seu ambiente de desenvolvimento:
-
Ter experiência com a linguagem Java e seus recursos básicos, como classes, objetos, interfaces, herança, polimorfismo, exceções, coleções e generics
-
Ter conhecimento de SQL e acesso a um banco de dados relacional, como MySQL, PostgreSQL ou H2
-
Ter uma IDE de desenvolvimento, como Eclipse, IntelliJ IDEA ou Visual Studio Code
-
Ter um gerenciador de dependências, como Maven ou Gradle
Java: A linguagem de programação Java para desenvolvimento backend.
Maven: Gerenciador de Dependências.
Siga estas etapas para configurar e executar o projeto:
- Clone o repositório do GitHub:
git clone https://github.com/DaniloADamasceno/GPT-e-Java- Crie uma conta para utilização da OpenAI: https://openai.com/product
- Baixe a Biblioteca do OpenAI para Java no github: https://github.com/TheoKanning/openai-java e siga as instruções de utilização no Readme
- Ao adicionar a Dependência da biblioteca ao maven uma alteração devera ser feita no ARTIFACTID para somente service e adicionar o numero da versão para 0.18.2 como o exemplo a baixo:
<artifactId>service</artifactId>
<version>0.18.2</version>- Adicione as dependências do Maven para o projeto:
<dependencies>
<!--*# Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--*# Spring Boot Thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--*# Spring Boot WebFlux -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<!--*# Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--*# Spring Boot Starter Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--*# OpenAi API -->
<dependency>
<groupId>com.theokanning.openai-gpt3-java</groupId>
<artifactId>service</artifactId>
<version>0.18.2</version>
</dependency>
<!--*# Contador e Tokens -->
<dependency>
<groupId>com.knuddels</groupId>
<artifactId>jtokkit</artifactId>
<version>0.6.1</version>
</dependency>
<!--*# Spring Boot DevTools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!--*# Reactor Test -->
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
<!--*# Swagger -->
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-models</artifactId>
<version>2.2.8</version>
</dependency>
<!--*# Swagger -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.15</version>
</dependency>
</dependencies>- Adicione no playground do OpenAI a seguinte configuração para o seu projeto:
{
"model": "gpt-3.5-turbo",
"max_tokens": 100,
"temperature": 0.7,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0,
"stop": ["\n", "Human:", "AI:"]
}- Adicione no playground do OpenAI na area de add Function a função de calculo de frete para o seu projeto:
{
"name": "calculate Shipping",
"parameters": {
"type": "object",
"properties": {
"quantityOfProducts": {
"type": "number",
"description": "Quantidade de produtos"
},
"uf": {
"type": "string",
"description": "UF da cidade do cliente",
"enum": [
"AC",
"AL",
"AP",
"AM",
"BA",
"CE",
"DF",
"ES",
"GO",
"MA",
"MT",
"MS",
"MG",
"PA",
"PB",
"PR",
"PE",
"PI",
"RJ",
"RN",
"RS",
"RO",
"RR",
"SC",
"SP",
"SE",
"TO"
]
}
},
"required": [
"quantityProducts",
"StatesUF"
]
},
"description": "Calcula o frete de acordo com a quantidade de produtos e a UF do cliente"
}- Adicione no playground do OpenAI na area de Files os dois arquivos da pasta resources/softway do projeto:
- informacoes.md
- politicas.md
Este é um projeto de código aberto e estou aberto a contribuições da comunidade. Se desejar contribuir para este projeto, siga estas etapas:
- Faça um fork do repositório.
- Crie um branch para sua feature ou correção de bug: git checkout -b minha-feature.
- Faça suas alterações e adicione suas melhorias.
- Commit suas alterações: git commit -m 'Adicionando nova feature'.
- Envie para o branch principal do repositório original: git push origin main.
- Abra um pull request no GitHub.
- Desenvolvimento do projeto ChatBot.
- BACK-END em desenvolvimento.
- --> Desenvolvimento das Funções Knowledge Retrieval e Function Calling
- Desenvolvimento do projeto ChatBot.
- BACK-END em desenvolvimento.
- --> DESENVOLVIMENTO INICIAL
- Desenvolvimento do projeto.
- BACK-END em desenvolvimento.
- --> TRATAMENTO DE ERROS
- Desenvolvimento Inicial do projeto.
- BACK-END em desenvolvimento.
- --> PROJETO EM DESENVOLVIMENTO.