Firebase Genkit
Genkit ist ein Framework, mit dem Sie KI-gestützte Anwendungen und Funktionen entwickeln können. Sie bietet Open-Source-Bibliotheken für Node.js und Go sowie Entwicklertools zum Testen und Debuggen.
Diese Dokumentation deckt Genkit für Node.js ab. Wenn Sie Go-Entwickler sind, lesen Sie die Genkit Go-Dokumentation.
Sie können Genkit-Bibliotheken überall dort bereitstellen und ausführen, wo Node.js unterstützt wird. Sie ist für die Verwendung mit jeder generativen AI-Modell-API oder Vektordatenbank konzipiert. Wir bieten Integrationen für Firebase und Google Cloud an, aber Sie können Genkit unabhängig von Google-Diensten verwenden.
Hauptmerkmale
Einheitliche API für die KI-Generierung | Mit einer API Inhalte aus verschiedenen KI-Modellen generieren oder streamen Funktioniert mit multimodalen Eingabe/Ausgabe und benutzerdefinierten Modelleinstellungen. |
Strukturierte Generierung | Generieren oder streamen Sie strukturierte Objekte (wie JSON) mit integrierter Validierung. Vereinfachen Sie die Integration in Ihre App und konvertieren Sie unstrukturierte Daten in ein brauchbares Format. |
Toolaufrufe | KI-Modelle können Ihre Funktionen und APIs als Tools aufrufen, um Aufgaben auszuführen. Das Modell entscheidet, wann und welche Tools verwendet werden sollen. |
Retrieval Augmented Generation | Verbessern Sie die Genauigkeit und Relevanz der generierten Ergebnisse, indem Sie Ihre Daten integrieren. Mithilfe einfacher APIs können Sie Informationen aus verschiedenen Quellen einbetten, indexieren und abrufen. |
Prompt-Vorlage | Erstellen Sie effektive Prompts mit Rich-Text-Vorlagen, Modelleinstellungen, multimodaler Unterstützung und Toolintegration – alles in einer kompakten, ausführbaren Prompt-Datei. |
In den folgenden Codebeispielen wird veranschaulicht, wie diese Funktionen in Code verwendet werden:
Einfache Generierung
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. Diese Tools unterstützen Sie bei Folgendem:
- Experimentieren:Testen und optimieren Sie KI-Funktionen, Prompts und Abfragen.
- Fehler beheben: Mit detaillierten Ausführungsspuren können Sie Probleme finden und beheben.
- Bewerten:Bewerten Sie generierte Ergebnisse über mehrere Testläufe hinweg.
Folge uns auf
- Treten Sie der Community bei: Bleiben Sie auf dem Laufenden, stellen Sie Fragen und teilen Sie Ihre Arbeit auf unserem Discord-Server.
- 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.