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