Apresentamos o Genkit for Go: crie apps escalonáveis habilitados por IA no Go

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

Após o lançamento do Firebase Genkit para o Node.js no Google I/O, as equipes do Firebase e do Go trabalharam juntas para trazer o Genkit para a comunidade Go. Temos o prazer de anunciar o Genkit for Go, um framework de código aberto para criar aplicativos e serviços em nuvem habilitados por IA nativamente no Go, aproveitando a simplicidade, escalonabilidade e segurança conhecidas da linguagem.

Ao combinar as vantagens de desempenho e simultaneidade do Go com as bibliotecas e ferramentas do Genkit, os desenvolvedores podem criar aplicativos de IA generativa que aproveitam todo o potencial de ambas as tecnologias. Entre os possíveis casos de uso estão:

  • Assistentes inteligentes que entendem solicitações complexas e executam tarefas de maneira autônoma, como reservar viagens ou criar itinerários, tudo de acordo com as preferências do usuário.

  • Representantes de suporte ao cliente que usam a geração aumentada por recuperação (RAG, na sigla em inglês) para fornecer respostas rápidas, precisas e personalizadas, fundamentadas na base de conhecimento e nas políticas da empresa.

  • Ferramentas avançadas de transformação de dados que convertem dados não estruturados, como linguagem natural, em formatos estruturados (tabelas, consultas SQL) para possibilitar análises e insights mais aprofundados.

Atualmente, o Genkit for Go está na versão Alfa, o que o torna ideal para experimentos e análises detalhadas. Incentivamos você a criar protótipos de projetos habilitados por IA e a compartilhar seu feedback conosco. Sua contribuição ajudará diretamente na criação do roteiro do Genkit for Go, ajudando-nos a capacitar os desenvolvedores do Go a criar a próxima geração de aplicativos de IA escalonáveis e prontos para produção.


Bibliotecas intuitivas para geração, recuperação e fluxos de trabalho de IA

O Genkit é um framework com foco no desenvolvedor para a criação de aplicativos habilitados por IA. Nossas bibliotecas do Go, escritas em Go puro, adotam as expressões e convenções da linguagem, tornando-as familiares e produtivas instantaneamente para os desenvolvedores do Go. O Genkit fornece abstrações leves e combináveis que simplificam o desenvolvimento de fluxos de trabalho sofisticados de IA sem sacrificar a capacidade de personalização e o controle.

Estas são algumas maneiras pelas quais o Genkit aumenta a produtividade durante a criação de aplicativos de IA generativa:

  • API de geração unificada: gere conteúdo a partir de vários modelos (Gemini, Gemma ou de terceiros) usando uma única interface consistente. Configure modelos com facilidade e use recursos eficientes, como chamadas de funções e saídas estruturadas.

  • Suporte nativo a bancos de dados vetoriais: torne seus modelos de IA sensíveis ao contexto ao integrar a geração aumentada por recuperação aos aplicativos com APIs simples de indexação e recuperação que funcionam com vários provedores de bancos de dados vetoriais.

  • "Flows" para fluxos de trabalho de IA: organize fluxos de trabalho de IA em várias etapas com os "flows" do Genkit. Os "flows" são funções que oferecem observabilidade integrada para fins de depuração e monitoramento, integração com ferramentas do Genkit, além de facilidade de implantação como endpoints HTTP com o mínimo de código boilerplate.
func main() {
    ctx := context.Background()
 
    // Initialize the Google AI plugin.
    if err := googleai.Init(ctx, nil); err != nil {
        log.Fatal(err)
    }
 
    // Define a simple flow that prompts an LLM to generate menu suggestions.
    // Flows are functions that integrate with Genkit tooling and provide
    // observability over multi-step workflows.
    genkit.DefineFlow("menuSuggestionFlow", func(ctx context.Context, input string) (string, error) {
 
        // Initialize gemini-1.5-flash model from Google AI.
        m := googleai.Model("gemini-1.5-flash")
        if m == nil {
            return "", errors.New("menuSuggestionFlow: failed to find model")
        }
 
        // Construct a request and send it to the model API (Google AI).
        resp, err := m.Generate(ctx,
            ai.NewGenerateRequest(
                &ai.GenerationCommonConfig{Temperature: 1},
                ai.NewUserTextMessage(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input))),
            nil)
        if err != nil {
            return "", err
        }
 
        // Handle the response from the model API.
        text, err := resp.Text()
        if err != nil {
            return "", fmt.Errorf("menuSuggestionFlow: %v", err)
        }
        return text, nil
    })
 
    // Initialize Genkit flows server.
    if err := genkit.Init(ctx, nil); err != nil {
        log.Fatal(err)
    }
}

Aprimoramento de engenharia e gerenciamento de prompts

Obter os melhores resultados de geração de IA envolve uma consideração cuidadosa do modelo, da configuração, do prompt e do formato da saída. O Genkit fornece o Dotprompt, um formato de arquivo simples que otimiza o processo de engenharia de prompts.

Com o Dotprompt, você pode definir modelos avançados de prompt, esquemas de entrada e saída, seleções de modelos e opções de configuração de modelos, tudo em um único arquivo .prompt. Isso mantém tudo organizado, facilitando o teste, a criação de versões e a implantação de prompts juntamente com o código do Go.

---
model: vertexai/gemini-1.5-pro
config:
  temperature: 0.9
input:
  schema:
    location: string
    style?: string
    name?: string
  default:
    location: a restaurant
---
 
You are the world's most welcoming AI assistant and are currently working at {{location}}.
 
Greet a guest{{#if name}} named {{name}}{{/if}}{{#if style}} in the style of {{style}}{{/if}}.

Integração a serviços de IA do Google e de terceiros

Em sua essência, o Genkit for Go é um framework leve e independente de provedor. Oferecemos uma coleção em expansão de plug-ins para fácil integração com modelos específicos, bancos de dados vetoriais e serviços de nuvem do Google e de provedores terceiros.

Nesta versão, o Genkit for Go fornece os seguintes plug-ins:

  • Plug-in Google Cloud Vertex AI: acesse modelos Gemini e de incorporação da Vertex AI, a plataforma de IA pronta para produção do Google Cloud. O suporte para modelos de geração de imagens do Google, avaliadores e modelos de terceiros do Model Garden estará disponível em breve.

  • Plug-in Ollama: acesse e execute modelos de código aberto, como Gemma, Llama e Mistral, localmente por meio do Ollama.

  • Plug-in Pinecone: faça a integração ao banco de dados vetorial da Pinecone para garantir operações eficientes de indexação e recuperação.

  • Plug-in de telemetria do Google Cloud: exporte registros, métricas e traces de apps habilitados por IA para Cloud Logging, Cloud Tracing e Firestore para garantir um monitoramento abrangente.

O sistema de plug-ins do Genkit foi projetado para ser aberto e extensível a quaisquer modelos, bancos de dados vetoriais, avaliadores, ferramentas e muito mais. Incentivamos ativamente a comunidade a contribuir para o ecossistema do Genkit publicando seus próprios plug-ins.

Não perca, pois o guia de desenvolvimento de plug-ins do Genkit for Go estará disponível em breve em nossa documentação!


Ferramentas integradas para desenvolvedores

A criação de apps habilitados por IA traz muitos desafios exclusivos, como criação de prompts eficazes, depuração de saídas imprevisíveis, otimização de processos de recuperação e muitos outros. Acreditamos que essas complexidades se beneficiem de ferramentas dedicadas que vão além dos utilitários típicos do ambiente de desenvolvimento integrado.

A CLI e a IU do desenvolvedor intuitiva e baseada em navegador do Genkit fornecem um kit de ferramentas avançado para otimizar o desenvolvimento de IA generativa.

Com essas ferramentas, é possível:

  • Inicializar rapidamente um novo projeto do Genkit ou integrar o Genkit a um projeto existente.

  • Executar e iterar interativamente fluxos de trabalho de IA, prompts, consultas de recuperação e muito mais em playgrounds dedicados para componentes do Genkit.

  • Visualizar traces e metadados detalhados dos fluxos de trabalho e componentes executados, o que proporciona total observabilidade e depuração eficiente.

  • Avaliar fluxos de trabalho de IA em relação a conjuntos de testes e visualizar métricas pontuadas e links para traces relevantes.

Se você gosta de trabalhar no VS Code ou no Project IDX, pode abrir a IU de desenvolvimento do Genkit no navegador incorporado ao ambiente de desenvolvimento integrado e usá-la lado a lado com seu código.


Observabilidade em produção

Quando tudo estiver pronto para a implantação, o Genkit ajudará a monitorar o aplicativo habilitado por IA em produção para garantir que ele esteja atendendo a seus usuários conforme o esperado. O plug-in de telemetria do Google Cloud do Genkit ajuda a exportar, com facilidade, registros, métricas e traces do app habilitado por IA para o pacote de operações do Google Cloud.

image1

Embora forneçamos integração ao Google Cloud pronta para uso, implementamos a instrumentação do Genkit por meio do padrão OpenTelemetry amplamente utilizado, que pode ser integrado a muitas plataformas conhecidas de observabilidade.


Começar

Agora que o Genkit for Go está disponível na versão Alfa, você já pode começar a usá-lo para integrar fluxos de trabalho de IA a aplicativos e participar da comunidade de desenvolvedores de IA do Go, que está sempre crescendo.

Para começar, confira o guia de primeiros passos com o Genkit for Go.

Você também pode abrir o modelo do Genkit no espaço de trabalho pré-configurado do IDX.

Não vemos a hora de colaborar com você!

  • Conecte-se a nós no servidor do Genkit Discord para obter acesso direto à equipe do Genkit, ver anúncios, fazer perguntas e falar sobre sua experiência.

  • Compartilhe o que você criou com o Genkit na seção Show and Tell dos fóruns de discussão.

Vamos criar juntos um ecossistema próspero para o desenvolvimento de IA no Go. Mal podemos esperar para ver o que você criará com o Genkit!