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.

Rozpocznij

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.