Firebase Genkit

Genkit è un framework progettato per aiutarti a creare applicazioni e funzionalità basate sull'IA. Fornisce librerie open source per Node.js e Go, oltre a strumenti per sviluppatori per test e debug.

Questa documentazione riguarda Genkit per Node.js. Se sei uno sviluppatore Go, consulta la documentazione di Genkit Go.

Puoi eseguire il deployment delle librerie Genkit ed eseguirle ovunque sia supportato Node.js. È progettato per funzionare con qualsiasi database vettoriale o API di modelli di IA generativa. Sebbene siano disponibili integrazioni per Firebase e Google Cloud, puoi utilizzare Genkit indipendentemente da qualsiasi servizio Google.

Inizia

Funzionalità chiave

API unificata per la generazione IA Usare un'API per generare o trasmettere contenuti in streaming da vari modelli di AI. Funziona con impostazioni di input/output multimodali e di modelli personalizzati.
Generazione strutturata Genera o riproduci in streaming oggetti strutturati (come JSON) con convalida integrata. Semplifica l'integrazione con la tua app e converti i dati non strutturati in un formato utilizzabile.
Chiamate agli strumenti Consenti ai modelli di IA di chiamare le tue funzioni e le tue API come strumenti per completare le attività. Il modello decide quando e quali strumenti utilizzare.
Generazione potenziata dal recupero Migliora l'accuratezza e la pertinenza del risultato generato integrando i tuoi dati. Le API semplici consentono di incorporare, indicizzare e recuperare informazioni da varie fonti.
Modelli di prompt Crea prompt efficaci che includano modelli RTF, impostazioni del modello, supporto multimodale e integrazione di strumenti, il tutto all'interno di un file prompt compatto ed eseguibile.

Guarda i seguenti esempi di codice per un'idea concreta di come utilizzare queste funzionalità nel codice:

Generazione di base

import { generate } from `@genkit-ai/ai`;
import { gemini15Flash, claude3Sonnet, llama31 } from '@genkit-ai/vertexai';
import { gpt4o } from 'genkitx-openai';

// Use the same API to generate content from many models
const result = await generate({
    model: gemini15Flash, // Or use claude3Sonnet, llama31, gpt4o
    prompt: 'What makes you the best LLM out there?',
});

Generazione strutturata

import { generate } from `@genkit-ai/ai`;
import { gemini15Flash } from `@genkit-ai/googleai`;
import { z } from `zod`;

const result = await generate({
    model: gemini15Flash,
    prompt: 'Create a brief profile for a character in a fantasy video game.',
    // Specify output structure using Zod schema
    output: {
        schema: z.object({
            name: z.string(),
            role: z.enum(['knight', 'mage', 'archer']),
            backstory: z.string(),
            attacks: z.array(z.object({
              name: z.string(),
              damage: z.number().describe('amount of damage, between 2 and 25'),
            })).describe('3 attacks the character can use')
        })
    }
});

Chiamata di strumenti

import { generate, defineTool } from `@genkit-ai/ai`;
import { gemini15Flash } from `@genkit-ai/googleai`;
import { z } from `zod`;

// Define tool to get weather data for a given location
const lookupWeather = defineTool({
    name: 'lookupWeather',
    description: 'Get the current weather in a location.',
    // Define input and output schema so the model knows how to use the tool
    inputSchema: z.object({
        location: z.string().describe('The location to get the weather for.'),
    }),
    outputSchema: z.object({
        temperature: z.number().describe('The current temperature in Fahrenheit.'),
        condition: z.string().describe('A brief description of the weather conditions.'),
    }),
    async (input) => {
        // Insert weather lookup API code
    }
});

const result = await generate({
    model: gemini15Flash,
    tools: [lookupWeather], // Give the model a list of tools it can call
    prompt: 'What is the weather like in New York? ',
});

Recupero

import { generate, retrieve } from `@genkit-ai/ai`;
import { devLocalRetrieverRef } from '@genkit-ai/dev-local-vectorstore';
import { gemini15Flash } from `@genkit-ai/googleai`;

// Sample assumes Genkit documentation has been chunked, stored, and indexed in 
// local vectorstore in previous step.

// Reference to a local vector database storing Genkit documentation
const retriever = devLocalRetrieverRef('genkitQA');

const query = 'How do I retrieve relevant documents in Genkit?'

// Consistent API to retrieve most relevant documents based on semantic similarity to query
const docs = await retrieve({
    retriever: retriever,
    query: query,
    options: { limit: 5 },
});

const result = await generate({
    model: gemini15Flash
    prompt: 'Use the provided context from the Genkit documentation to answer this query: ${query}',
    context: docs // Pass retrieved documents to the model
});

Modello di prompt

---
model: vertexai/gemini-1.5-flash
config:
  temperature: 0.9
input:
  schema:
    properties:
      location: {type: string}
      style: {type: string}
      name: {type: string}
    required: [location]
  default:
    location: a restaurant
---

You are the 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}}.

Strumenti di sviluppo

Genkit fornisce un'interfaccia a riga di comando (CLI) e una UI per sviluppatori locale per semplificare la creazione di applicazioni di IA. Questi strumenti consentono di:

  • Sperimentale: testa e perfeziona le funzioni, i prompt e le query di AI.
  • Debug: trova e risolvi i problemi con tracce di esecuzione dettagliate.
  • Valuta: valuta i risultati generati in più casi di test.

Contattaci

  • Unisciti alla community: ricevi aggiornamenti, fai domande e condividi il tuo lavoro sul nostro server Discord.
  • Invia feedback: segnala problemi o suggerisci nuove funzionalità usando il nostro Issue Tracker di GitHub.

Passaggi successivi

Scopri come creare la tua prima applicazione IA con Genkit nella nostra guida introduttiva.