Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

ALTERNATIVA GRATUITA A OPENAI | Implementar Google Gemini

Hola! Quería dejar una pequeña ayuda para los que no tienen la oportunidad de abonar el servicio de OpenAI, ya que yo pasé por este mismo problema al querer realizar el curso. De este modo podrán realizar el curso sin inconvenientes.

Google Gemini tiene uso gratuito en su modelo de solo texto, para implementarlo en lugar de OpenAI pueden hacerlo del siguiente modo:

  1. Generar la API KEY a través de https://aistudio.google.com/api-keys (pueden accederla en cualquier momento, así que no hace falta guardarla en un lugar seguro).

  2. Al realizar el start.spring.io, en lugar de añadir la dependencia de OpenAI, hay que agregar la que se llama Google GenAI (Van a necesitar marcar que la versión de Spring Boot sea 3.X.X en lugar de 4.X.X, pero eso no va a traer ningún problema para este curso).

  3. Si ya tienen su proyecto creado con OpenAI, solo modifiquen en el pom.xml la dependencia, cambiándola por la siguiente:

<dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-google-genai</artifactId>
</dependency>
  1. También hay que modificar el application.properties del siguiente modo:
spring.ai.google.genai.api-key=${GEMINI_API_KEY}

spring.ai.google.genai.chat.options.model=gemini-flash-latest

Y listo!

Pueden continuar el curso tal cual nos guía Genesys sin ningún tipo de percance. Solo recuerden utilizar el Playground de Google en lugar de OpenAI.

Pueden acceder desde el siguiente link: https://aistudio.google.com/prompts/new_chat

1 respuesta
solución!

✦ • AÑADIDO DEL CONTADOR DE TOKENS • ✦

Google Gemini tiene un contador de tokens incorporado, así que no hace falta agregar nuevas dependencias. Pero el método para llamar al contador es más bien complejo, así que se los dejaré por si tienen dificultades con ello.

Primero tendrán que crear un método para contarlos del siguiente modo:

private int contarTokens(String prompt) {

        String apiKey = System.getenv("GEMINI_API_KEY");

        String url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-flash-latest:countTokens?key=" + apiKey;

        RestTemplate restTemplate = new RestTemplate();

        Map<String, Object> request = Map.of(
                "contents", new Object[]{
                        Map.of(
                                "parts", new Object[]{
                                        Map.of("text", prompt)
                                }
                        )
                }
        );

        Map response = restTemplate.postForObject(url, request, Map.class);

        Number total = (Number) response.get("totalTokens");

        return total.intValue();
    }

.
Luego agregarán el método "contadorDeTokens" para poder continuar la línea del curso con los ejemplos de Genesys

private int contadorDeTokens(String system, String user){
        return contarTokens(system + user);
    }

.
.
.
Y este segundo método es el que van a llamar dentro de las requests. Les dejo el ejemplo para que comprendan mejor donde añadirlo:

@GetMapping
    String categorizadorDeProductos(String producto) {
        var system = "Eres un categorizador de productos. // CODIGO EXCLUIDO";

// AQUI UTILIZAMOS EL MÉTODO
        var tokens = contadorDeTokens(system, producto);
        System.out.println(tokens);

    // Implementación de la lógica para la selección del modelo.

        return this.chatClient.prompt()
                .system(system)
                .user(producto)
                .options(ChatOptions.builder()
                        .temperature(0.82).build())
                .call()
                .content();
    }

Y con eso ya tendrían el contador de tokens listo.

Muchos éxitos en el curso! =)