Presentamos Genkit for Go: crea aplicaciones impulsadas por IA escalables en Go

JUL 17, 2024
Chris Gill Product Manager
Cameron Balahan Group Product Manager

Tras el lanzamiento de Firebase Genkit para Node.js en Google I/O, los equipos de Firebase y Go colaboraron para llevar Genkit a la comunidad de Go. Nos complace anunciar Genkit for Go, un framework de código abierto para desarrollar aplicaciones y servicios en la nube impulsados por IA de manera nativa en Go, gracias a la simplicidad, escalabilidad y seguridad del reconocido lenguaje.

Al combinar las ventajas de rendimiento y concurrencia de Go con las bibliotecas y herramientas de Genkit, los desarrolladores pueden crear aplicaciones de IA generativa que aprovechen todo el potencial de ambas tecnologías. Algunos casos de uso potenciales son los siguientes:

  • Asistentes inteligentes que entiendan instrucciones complejas y ejecuten tareas de forma autónoma, como reservar viajes o crear itinerarios, todo ello adaptado a las preferencias de tu usuario.

  • Agentes de atención al cliente que usen la generación aumentada de recuperación (RAG) para brindar respuestas rápidas, precisas y personalizadas, fundamentadas en la base de conocimientos y las políticas de tu empresa.

  • Poderosas herramientas de transformación de datos que conviertan datos no estructurados, como lenguaje natural, en formatos estructurados (por ejemplo, consultas o tablas SQL) para obtener estadísticas y análisis más profundos.

Genkit for Go se encuentra actualmente disponible en versión alfa, por lo que es ideal para la experimentación y la exploración. Te animamos a que hagas un prototipo de tus proyectos impulsados por IA y compartas tus comentarios con nosotros. Los implementaremos directamente en la hoja de ruta de Genkit for Go, lo que nos ayudará a capacitar a los desarrolladores de Go para crear la próxima generación de aplicaciones de IA escalables y listas para la producción.


Bibliotecas intuitivas para la generación, la recuperación y los flujos de trabajo de IA

Genkit es un framework que prioriza a los desarrolladores para la creación de aplicaciones impulsadas por IA. Nuestras bibliotecas de Go, escritas enteramente en Go, aprovechan las expresiones idiomáticas y las convenciones del lenguaje, por lo que a los desarrolladores de Go les resultarán familiares y efectivas. Genkit brinda abstracciones livianas y que admiten composición que simplifican el desarrollo de flujos de trabajo de IA sin sacrificar personalización y control.

Estas son algunas de las formas en que Genkit aumenta tu productividad al crear aplicaciones de IA generativas:

  • API de generación unificada: genera contenido desde varios modelos (Gemini, Gemma o de terceros) utilizando una interfaz única y coherente. Permite configurar fácilmente los modelos y aprovechar funciones potentes como la llamada a funciones y la salida estructurada.

  • Compatibilidad con bases de datos vectoriales nativas: haz que tus modelos de IA reconozcan el contexto integrando generación aumentada de recuperación (RAG) en tus aplicaciones con APIs simples de indexación y recuperación que funcionan con varios proveedores de bases de datos de vectores.

  • "Flujos" para flujos de trabajo de IA: organiza flujos de trabajo de IA de varios pasos con "flujos" de Genkit. Los flujos son funciones que ofrecen observabilidad incorporada para la depuración y el monitoreo, la integración con las herramientas de Genkit y una fácil implementación como extremos HTTP con mínimo uso de código estándar.
func main() {
    ctx := context.Background()
 
    // Inicializa el complemento Google AI.
    if err := googleai.Init(ctx, nil); err != nil {
        log.Fatal(err)
    }
 
    // Define un flujo simple que le indique a un LLM que genere sugerencias de menú.
    // Los flujos son funciones que se integran con las herramientas de Genkit y ofrecen
    // observabilidad en flujos de trabajo de varios pasos.
    genkit.DefineFlow("menuSuggestionFlow", func(ctx context.Context, input string) (string, error) {
 
        // Inicializa el modelo gemini-1.5-flash de Google AI.
        m := googleai.Model("gemini-1.5-flash")
        if m == nil {
            return "", errors.New("menuSuggestionFlow: no se encontró el modelo")
        }
 
        // Crea una consulta y envíala a la API del modelo (Google AI).
        resp, err := m.Generate(ctx,
            ai.NewGenerateRequest(
                &ai.GenerationCommonConfig{Temperature: 1},
                ai.NewUserTextMessage(fmt.Sprintf(`Sugiere un elemento para el menú de un restaurante de temática %s`, input))),
            nil)
        if err != nil {
            return "", err
        }
 
        // Controla la respuesta desde la API del modelo.
        text, err := resp.Text()
        if err != nil {
            return "", fmt.Errorf("menuSuggestionFlow: %v", err)
        }
        return text, nil
    })
 
    // Inicializa el servidor de flujos de Genkit.
    if err := genkit.Init(ctx, nil); err != nil {
        log.Fatal(err)
    }
}

Mejoras en la ingeniería y administración de instrucciones

Lograr los mejores resultados de generación de IA implica una cuidadosa consideración del modelo, la configuración, la solicitud y la forma de salida. Genkit proporciona Dotprompt, un formato de archivo simple que agiliza el proceso de ingeniería de instrucciones.

Con Dotprompt, puedes definir plantillas de instrucciones enriquecidas, esquemas de entrada y salida, selección de modelos y opciones de configuración de modelos, todo dentro de un solo archivo .prompt. De esta manera, todo se mantiene organizado, lo que facilita la prueba, el desarrollo de versiones y la implementación de instrucciones que acompañan tu código Go.

---
model: vertexai/gemini-1.5-pro
config:
  temperature: 0.9
input:
  schema:
    location: string
    style?: string
    name?: string
  default:
    location: a restaurant
---
 
Eres el asistente de IA más amigable del mundo y, actualmente, trabajas en {{location}}.
 
Recibe a una persona{{#if name}} llamada {{name}}{{/if}}{{#if style}} en estilo {{style}}{{/if}}.

Integra los servicios de IA de Google y de terceros

En esencia, Genkit for Go es un framework liviano y que no depende de ningún proveedor. Ofrecemos una creciente colección de complementos para integrar directamente con modelos específicos, bases de datos vectoriales y servicios en la nube de Google y proveedores externos.

En esta versión, Genkit for Go proporciona los siguientes complementos:

  • Complemento Vertex AI de Google Cloud: accede a Gemini y los modelos de incorporación de Vertex AI, la plataforma de IA lista para producción de Google Cloud. Próximamente, ofreceremos compatibilidad con los modelos de generación de imágenes de Google, los evaluadores y los modelos de terceros de Model Garden.

  • Complemento Ollama: accede y ejecuta modelos de código abierto como Gemma, Llama y Mistral de manera local a través de Ollama.

  • Complemento Pinecone: integra la base de datos vectorial de Pinecone para realizar operaciones de indexación y recuperación eficientes.

  • Complemento de telemetría de Google Cloud: exporta registros, métricas y trazas de tus aplicaciones impulsadas por IA al registro de Google Cloud, Cloud Trace y Firestore para realizar una supervisión integral.

El sistema de complementos de Genkit está diseñado para ser abierto y extenderse a todos los modelos, bases de datos vectoriales, evaluadores, herramientas y mucho más.

No te pierdas la guía de desarrollo de complementos para Genkit for Go, que pronto estará disponible en nuestra documentación.


Herramientas para desarrolladores integradas

Crear aplicaciones impulsadas por IA conlleva desafíos únicos, como el desarrollo de instrucciones efectivas, la depuración de salida impredecible, la optimización de procesos de recuperación y mucho más. Creemos que estas complejidades se resolverán con las herramientas exclusivas que hacen mucho más que las utilidades.

La CLI de Genkit y la interfaz de usuario intuitiva para desarrolladores con base en navegador proporcionan un potente conjunto de herramientas a fin de agilizar tu desarrollo de IA generativa.

Con estas herramientas puedes hacer lo siguiente:

  • Inicializar rápidamente un nuevo proyecto Genkit o integrar Genkit en un proyecto existente.

  • Ejecutar e iterar de forma interactiva en tu IA flujos de trabajo, instrucciones, consultas de recuperación y mucho más en áreas de juego exclusivas para los componentes de Genkit.

  • Ver trazas y metadatos detallados de los flujos de trabajo y los componentes que ejecutes, lo que proporciona una observabilidad completa y una depuración eficiente.

  • Evaluar tus flujos de trabajo de IA en comparación con conjuntos de prueba y ver las métricas obtenidas y vínculos a las trazas relevantes.

Si te gusta trabajar con VS Code o Project IDX, puedes abrir la interfaz de usuario para desarrolladores de Genkit en el navegador integrado del IDE y usarla junto con tu código.


Observabilidad de la producción

Cuando tengas todo listo para la implementación, Genkit te ayudará a supervisar tu aplicación impulsada por IA en producción para asegurarte de que les funcione a tus usuarios como se espera. El complemento de telemetría de Google Cloud de Genkit te ayuda a exportar fácilmente registros, métricas y trazas de tu aplicación impulsada por IA a la suite de operaciones de Google Cloud.

image1

Si bien brindamos integración inmediata con Google Cloud, también implementamos la instrumentación de Genkit a través del ampliamente utilizado estándar OpenTelemetry, que puede integrarse con muchas plataformas de observabilidad reconocidas.


Primeros pasos

Como Genkit for Go ya está disponible en versión alfa, puedes empezar a usarlo para integrar flujos de trabajo de IA a tus aplicaciones y unirte a la creciente comunidad de desarrolladores de IA para Go.

Para comenzar, consulta la guía Comienza a usar Genkit for Go.

También puedes abrir la plantilla de Genkit en el espacio de trabajo preconfigurado de IDX.

¡Queremos colaborar contigo!

  • Conéctate con nosotros en el servidor de Discord de Genkit para obtener acceso directo al equipo de Genkit, ver anuncios, hacer preguntas y hablar sobre tu experiencia.

  • Comparte tus creaciones con Genkit en la sección Show and Tell de los foros de discusión.

Juntos, podemos crear un ecosistema próspero para el desarrollo de IA en Go. ¡Esperamos con ansias ver lo que creas con Genkit!