Firebase Genkit
Genkit es un framework diseñado para ayudarte a compilar aplicaciones y funciones potenciadas por IA. Proporciona bibliotecas de código abierto para Node.js y Go, además de herramientas para desarrolladores destinadas a realizar pruebas y depuraciones.
Esta documentación abarca Genkit para Node.js. Si eres desarrollador de Go, consulta la documentación de Genkit Go.
Puedes implementar y ejecutar las bibliotecas de Genkit en cualquier lugar donde se admita Node.js. Se diseñó para funcionar con cualquier API de modelo de IA generativa o base de datos de vectores. Si bien ofrecemos integraciones para Firebase y Google Cloud, puedes usar Genkit independientemente de cualquier servicio de Google.
Funciones clave
API unificada para la generación de IA | Usa una API para generar o transmitir contenido desde varios modelos de IA. Funciona con entradas y salidas multimodales y configuración de modelo personalizado. |
Generación estructurada | Genera o transmite objetos estructurados (como JSON) con validación integrada. Simplifica la integración en tu app y convierte los datos no estructurados en un formato utilizable. |
Llamada a la herramienta | Permite que los modelos de IA llamen a tus funciones y APIs como herramientas para completar tareas. El modelo decide cuándo y qué herramientas usar. |
Generación aumentada de recuperación | Mejora la exactitud y relevancia de los resultados generados integrando tus datos. Las APIs simples te ayudan a incorporar, indexar y recuperar información de varias fuentes. |
Plantillas de instrucciones | Crea instrucciones eficaces que incluyan plantillas de texto enriquecido, configuración de modelos, integración de herramientas y compatibilidad multimodal, todo en un archivo de instrucciones compacto y ejecutable. |
Consulta las siguientes muestras de código para obtener una idea concreta de cómo usar estas capacidades en el código:
Generación básica
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?',
});
Generación estructurada
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')
})
}
});
Llamadas a herramientas
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? ',
});
Recuperación
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
});
Plantilla de instrucción
---
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}}.
Herramientas de desarrollo
Genkit proporciona una interfaz de línea de comandos (CLI) y una IU para desarrolladores local para facilitar la compilación de aplicaciones de IA. Estas herramientas te ayudan a hacer lo siguiente:
- Experimenta: Prueba y define mejor tus funciones de IA, instrucciones y consultas.
- Depuración: Encuentra y soluciona problemas con seguimientos de ejecución detallados.
- Evalúa: Evalúa los resultados generados en varios casos de prueba.
Conéctese con nosotros
- Únete a la comunidad: Mantente al tanto, haz preguntas y comparte tu trabajo en nuestro servidor de Discord.
- Envía comentarios: Informa problemas o sugiere funciones nuevas con nuestra Herramienta de seguimiento de errores de GitHub.
Próximos pasos
Aprende a compilar tu primera aplicación de IA con Genkit en nuestra guía de Introducción.