Firebase Genkit
Genkit est un framework conçu pour vous aider à créer des applications et des fonctionnalités basées sur l'IA. Il fournit des bibliothèques Open Source pour Node.js et Go, ainsi que des outils pour les développeurs à des fins de test et de débogage.
Cette documentation concerne Genkit pour Node.js. Si vous êtes un développeur Go, consultez la documentation sur Genkit Go.
Vous pouvez déployer et exécuter des bibliothèques Genkit partout où Node.js est compatible. Il est conçu pour fonctionner avec n'importe quelle API de modèle d'IA générative ou base de données vectorielle. Bien que nous proposions des intégrations pour Firebase et Google Cloud, vous pouvez utiliser Genkit indépendamment de tous les services Google.
Capacités clés
API unifiée pour la génération d'IA | Utilisez une seule API pour générer ou diffuser du contenu à partir de différents modèles d'IA. Fonctionne avec les entrées/sorties multimodales et les paramètres de modèle personnalisés. |
Génération de données structurées | Générez ou diffusez des objets structurés (comme JSON) avec une validation intégrée. Simplifiez l'intégration avec votre application et convertissez les données non structurées en un format utilisable. |
Appels d'outils | Laissez les modèles d'IA appeler vos fonctions et vos API en tant qu'outils pour effectuer des tâches. Le modèle décide quand et quels outils utiliser. |
Génération avec augmentation de la récupération | Améliorez la précision et la pertinence des résultats générés en intégrant vos données. Des API simples vous permettent d'intégrer, d'indexer et de récupérer des informations provenant de diverses sources. |
Modélisation de requêtes | Créez des requêtes efficaces qui incluent la création de modèles de texte enrichi, les paramètres de modèle, la compatibilité multimodale et l'intégration d'outils, le tout dans un fichier de requêtes compact et exécutable. |
Consultez les exemples de code suivants pour comprendre concrètement comment utiliser ces fonctionnalités dans le code:
Génération de 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?',
});
Génération structurée
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')
})
}
});
Appel de l'outil
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? ',
});
Récupération
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
});
Modèle de requête
---
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}}.
Outils de développement
Genkit fournit une interface de ligne de commande (CLI) et une interface utilisateur locale pour les développeurs pour faciliter la création d'applications d'IA. Grâce à ces outils, vous pouvez:
- Testez vos fonctions, requêtes et invites d'IA, et affinez-les.
- Débogage:identifiez et corrigez les problèmes liés aux traces d'exécution détaillées.
- Évaluation:évaluez les résultats générés dans plusieurs scénarios de test.
Contactez-nous
- Rejoignez la communauté : restez informé, posez des questions et partagez votre travail sur notre serveur Discord.
- Envoyer des commentaires:signalez les problèmes ou suggérez de nouvelles fonctionnalités à l'aide de l'outil de suivi des problèmes GitHub.
Étapes suivantes
Découvrez comment créer votre première application d'IA avec Genkit dans notre guide de démarrage.