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 e l'esecuzione delle librerie Genkit ovunque sia supportato Node.js. È progettato per funzionare con qualsiasi database vettoriale o API di modelli di IA generativa. Sebbene offriamo integrazioni per Firebase e Google Cloud, puoi utilizzare Genkit indipendentemente da qualsiasi servizio Google.
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. |
Genesi 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 di strumenti | Consenti ai modelli di IA di chiamare le tue funzioni e API come strumenti per completare le attività. È il modello a decidere quando e quali strumenti utilizzare. |
Retrieval-Augmented Generation | Migliora l'accuratezza e la pertinenza del risultato generato integrando i tuoi dati. API semplici ti aiutano a incorporare, indicizzare e recuperare informazioni da varie fonti. |
Modelli di prompt | Crea prompt efficaci che includono modelli di testo avanzato, impostazioni del modello, supporto multimodale e integrazione di strumenti, il tutto in un file prompt eseguibile e compatto. |
Consulta i seguenti esempi di codice per avere 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 un'interfaccia utente per sviluppatori locale per semplificare la creazione di applicazioni di IA. Questi strumenti consentono di:
- Sperimenta: testa e perfeziona le funzioni, i prompt e le query di IA.
- Debug: trova e correggi 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 di IA con Genkit nella nostra guida Inizia.