Firebase Genkit

Genkit ist ein Framework, mit dem Sie KI-gestützte Anwendungen und Funktionen erstellen können. Sie bietet Open-Source-Bibliotheken für Node.js und Go sowie Entwicklertools zum Testen und Debuggen.

In dieser Dokumentation wird Genkit für Node.js beschrieben. Wenn Sie ein Go-Entwickler sind, lesen Sie die Dokumentation zum Genkit Go.

Sie können Genkit-Bibliotheken überall dort bereitstellen und ausführen, wo Node.js unterstützt wird. Sie funktioniert mit jeder auf generativer KI basierenden Modell-API oder Vektordatenbank. Wir bieten Integrationen für Firebase und Google Cloud an, aber Sie können Genkit unabhängig von Google-Diensten verwenden.

Jetzt starten

Hauptmerkmale

Einheitliche API für die KI-Generierung Sie können eine einzige API verwenden, um Inhalte aus verschiedenen KI-Modellen zu generieren oder zu streamen. Funktioniert mit multimodaler Eingabe/Ausgabe und benutzerdefinierten Modelleinstellungen.
Strukturierte Generierung Generieren oder streamen Sie strukturierte Objekte (wie JSON) mit integrierter Validierung. Sie können die Integration in Ihre App vereinfachen und unstrukturierte Daten in ein verwendbares Format umwandeln.
Toolaufrufe Lassen Sie KI-Modelle Ihre Funktionen und APIs als Tools zum Ausführen von Aufgaben aufrufen. Das Modell entscheidet, wann und welche Tools verwendet werden.
Retrieval-Augmented Generation Verbessern Sie die Genauigkeit und Relevanz der generierten Ergebnisse, indem Sie Ihre Daten integrieren. Mit einfachen APIs können Sie Informationen aus verschiedenen Quellen einbetten, indexieren und abrufen.
Prompt-Vorlagen erstellen Erstellen Sie effektive Prompts mit Rich-Text-Vorlagen, Modelleinstellungen, multimodaler Unterstützung und Toolintegration – alles in einer kompakten, ausführbaren Prompt-Datei.

Die folgenden Codebeispiele zeigen eine konkrete Vorstellung davon, wie diese Funktionen im Code verwendet werden können:

Basisgenerierung

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?',
});

Strukturierte Generierung

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')
        })
    }
});

Toolaufrufe

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? ',
});

Abruf

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
});

Prompt-Vorlage

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

Entwicklungstools

Genkit bietet eine Befehlszeile und eine lokale Entwickler-UI, um das Erstellen von KI-Anwendungen zu vereinfachen. Mit diesen Tools können Sie Folgendes tun:

  • Experimentieren:Testen und optimieren Sie KI-Funktionen, Prompts und Abfragen.
  • Debuggen:Probleme mit detaillierten Ausführungs-Traces finden und beheben.
  • Bewerten:Bewerten Sie generierte Ergebnisse über mehrere Testläufe hinweg.

Kontakt

  • Der Community beitreten:Auf unserem Discord-Server bleiben Sie auf dem Laufenden, können Fragen stellen und Ihre Arbeit mit anderen teilen.
  • Feedback geben:Über die GitHub-Problemverfolgung können Sie Probleme melden oder neue Funktionen vorschlagen.

Nächste Schritte

In unserem Startleitfaden erfahren Sie, wie Sie Ihre erste KI-Anwendung mit Genkit erstellen.