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 de développement pour le test et le 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.

Commencer

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 la validation intégrée. Simplifiez l'intégration à votre application et convertissez les données non structurées dans un format utilisable.
Appels d'outils Autorisez les modèles d'IA à appeler vos fonctions et API comme outils pour effectuer des tâches. Le modèle décide quand et quels outils utiliser.
Génération augmentée par 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 aident à intégrer, indexer et récupérer des informations à partir 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 du modèle, la compatibilité multimodale et l'intégration d'outils, le tout dans un fichier de requête 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 de données structurées

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 d'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 d'invite

---
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.

Nous contacter

  • Rejoignez la communauté : restez informé, posez des questions et partagez votre travail sur notre serveur Discord.
  • Envoyez vos commentaires : signalez des problèmes ou suggérez de nouvelles fonctionnalités à l'aide de notre 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.