Firebase Genkit
Genkit to platforma, która ma Ci pomóc w tworzeniu aplikacji i funkcji opartych na AI. Udostępnia biblioteki open source dla Node.js i Go oraz narzędzia dla programistów do testowania i debugowania.
Ta dokumentacja dotyczy Genkit dla Node.js. Jeśli jesteś deweloperem Go, zapoznaj się z dokumentacją Gennkit Go.
Biblioteki Genkit możesz wdrażać i uruchamiać wszędzie tam, gdzie obsługiwany jest Node.js. Może działać z dowolnym interfejsem API generatywnej AI lub wektorową bazą danych. Oferujemy możliwość integracji Firebase z Google Cloud, ale możesz używać Genkit niezależnie od usług Google.
Najważniejsze funkcje
Ujednolicony interfejs API do generowania AI | Używaj jednego interfejsu API do generowania lub strumieniowania treści z różnych modeli AI. Współpracuje z multimodalnymi ustawieniami wejścia/wyjścia oraz niestandardowymi ustawieniami modelu. |
Generowanie uporządkowanych danych | Generuj lub przesyłaj strumieniowo uporządkowane obiekty (np. JSON) z wbudowaną weryfikacją. Uprość integrację z aplikacją i przekształcaj nieuporządkowane dane na format użyteczny. |
Wywoływanie narzędzi | Pozwól modelom AI wywoływać funkcje i interfejsy API jako narzędzia do wykonywania zadań. Model decyduje, kiedy i których narzędzi użyć. |
Generowanie rozszerzone w ramach pobierania | Zwiększ dokładność i trafność generowanych danych wyjściowych, integrując dane. Proste interfejsy API pomagają umieszczać i indeksować informacje z różnych źródeł oraz pobierać je z tych źródeł. |
Szablony promptów | Twórz skuteczne prompty obejmujące szablony tekstu sformatowanego, ustawienia modelu, obsługę multimodalne i integrację narzędzi – wszystko to w kompaktowym, wydajnym pliku z promptami. |
Zapoznaj się z poniższymi przykładami kodu, aby doprecyzować, jak korzystać z tych funkcji w kodzie:
Podstawowa generacja
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?',
});
Generowanie uporządkowane
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')
})
}
});
Wywołania narzędzi
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? ',
});
Pobieranie
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
});
Szablon promptu
---
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}}.
Narzędzia dla programistów
Aby ułatwić tworzenie aplikacji opartych na AI, Genkit udostępnia interfejs wiersza poleceń (CLI) i lokalny interfejs programisty. Te narzędzia pomogą Ci:
- Eksperymentuj:testuj i ulepszaj funkcje AI, prompty i zapytania.
- Debugowanie: wyszukuj i napraw problemy dzięki szczegółowym danym śledzenia wykonania.
- Ocena: oceniaj wygenerowane wyniki w wielu przypadkach testowych.
Skontaktuj się z nami
- Dołącz do społeczności: bądź na bieżąco, zadawaj pytania i udostępniaj swoją pracę na naszym serwerze Disscord.
- Przesłać opinię: zgłoś problemy lub zaproponuj nowe funkcje, korzystając z naszego narzędzia do śledzenia problemów na GitHubie.
Dalsze kroki
Z naszego przewodnika dla początkujących dowiesz się, jak utworzyć pierwszą aplikację AI w Genkit.