Firebase Genkit

Genkit to platforma, która ułatwia tworzenie aplikacji i funkcji opartych na AI. Zawiera 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ą Genkit Go.

Biblioteki Genkit możesz wdrażać i uruchamiać wszędzie tam, gdzie jest obsługiwany Node.js. Został on zaprojektowany do współpracy z dowolnym interfejsem API modelu generatywnej AI lub bazą danych wektorów. Chociaż oferujemy integrację z Firebase i Google Cloud, możesz korzystać z Genkit niezależnie od usług Google.

Rozpocznij

Najważniejsze funkcje

Jednolite API do generowania treści przez AI Używanie jednego interfejsu API do generowania lub przesyłania strumieniowego treści z różnych modeli AI. Działa z wielomodalnymi wejściami i wyjściami oraz niestandardowymi ustawieniami modelu.
Dane wyjściowe w uporządkowanym formacie generować lub przesyłać strumieniowo obiekty uporządkowane (np. w formacie JSON) z wbudowaną walidacją; Uprość integrację z aplikacją i konwertuj nieuporządkowane dane na format nadający się do użycia.
Połączenia z narzędziami Pozwalają modelom AI wywoływać Twoje funkcje i interfejsy API jako narzędzia do wykonywania zadań. Model decyduje, kiedy i jakich narzędzi użyć.
Czat Genkit udostępnia interfejs API do czatu, który ułatwia prowadzenie wieloetapowych rozmów z modelami AI, które mogą być stanowe i trwałe.
Agenty Tworzenie inteligentnych agentów, które korzystają z narzędzi (w tym z innych agentów) do automatyzacji złożonych zadań i przepływów pracy.
Pobieranie danych Zwiększ dokładność i trafność wygenerowanego wyniku, integrując dane. Proste interfejsy API ułatwiają umieszczanie, indeksowanie i pobieranie informacji z różnych źródeł.
Szablony promptów Twórz skuteczne prompty, które zawierają szablony rozbudowanego tekstu, ustawienia modelu, obsługę multimodalną i integrację z narzędziami. Wszystko to w kompaktnym, edytowalnym pliku prompta.

Aby dowiedzieć się, jak używać tych funkcji w kodzie, zapoznaj się z tymi przykładowymi fragmentami kodu:

Generowanie podstawowe

import { genkit } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,  // Set default model
});

// Simple generation
const { text } = await ai.generate('Why is AI awesome?');
console.log(text);

// Streamed generation 
const { stream } = await ai.generateStream('Tell me a story');
for await (const chunk of stream) {
  console.log(chunk.text);
}

Dane wyjściowe uporządkowane

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

const { output } = await ai.generate({
  prompt: 'Create a brief profile for a character in a fantasy video game.',
  // Specify output structure using Zod schema
  output: {
    format: 'json',  
    schema: z.object({
      name: z.string(),
      role: z.enum(['knight', 'mage', 'archer']),
      backstory: z.string(),
    }),
  },
});

console.log(output);

Wywoływanie funkcji

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

// Define tool to get current weather for a given location
const getWeather = ai.defineTool(
  {
    name: "getWeather",
    description: "Gets the current weather in a given location",
    inputSchema: z.object({ 
      location: z.string().describe('The location to get the current weather for')
    }),
    outputSchema: z.string(),
  },
  async (input) => {
    // Here, we would typically make an API call or database query. For this
    // example, we just return a fixed value.
    return `The current weather in ${input.location} is 63°F and sunny.`;
  }
);

const { text } = await ai.generate({
    tools: [getWeather], // Give the model a list of tools it can call
    prompt: 'What is the weather like in New York? ',
});

console.log(text);

Czat

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

const chat = ai.chat({ system: 'Talk like a pirate' });

let response = await chat.send('Hi, my name is Pavel');

response = await chat.send('What is my name?');
console.log(response.text);
// Ahoy there! Your name is Pavel, you scurvy dog

Agenty

import { genkit, z } from 'genkit';
import { googleAI, gemini15Flash } from '@genkit-ai/googleai';

const ai = genkit({
  plugins: [googleAI()],
  model: gemini15Flash,
});

// Define prompts that represent specialist agents
const reservationAgent = ai.definePrompt(
  {
    name: 'reservationAgent',
    description: 'Reservation Agent can help manage guest reservations',
    tools: [reservationTool, reservationCancelationTool, reservationListTool],

  },
  `{{role "system"}} Help guests make and manage reservations`
);

const menuInfoAgent = ...
const complaintAgent = ...

// Define a triage agent that routes to the proper specialist agent
const triageAgent = ai.definePrompt(
  {
    name: 'triageAgent',
    description: 'Triage Agent',
    tools: [reservationAgent, menuInfoAgent, complaintAgent],
  },
  `{{role "system"}} You are an AI customer service agent for Pavel's Cafe.
  Greet the user and ask them how you can help. If appropriate, transfer to an
  agent that can better handle the request. If you cannot help the customer with
  the available tools, politely explain so.`
);

// Create a chat to enable multi-turn agent interactions
const chat = ai.chat(triageAgent);

chat.send('I want a reservation at Pavel\'s Cafe for noon on Tuesday.' );

Pobieranie danych

import { genkit } from 'genkit';
import { googleAI, gemini15Flash, textEmbedding004 } from '@genkit-ai/googleai';
import { devLocalRetrieverRef } from '@genkit-ai/dev-local-vectorstore';

const ai = genkit({ 
  plugins: [
    googleAI()
    devLocalVectorstore([
      {
        indexName: 'BobFacts',
        embedder: textEmbedding004,
      },
    ]),
  ],
  model: gemini15Flash,
});

// Reference to a local vector database storing Genkit documentation
const retriever = devLocalRetrieverRef('BobFacts');

// Consistent API to retrieve most relevant documents based on semantic similarity to query
const docs = await ai.retrieve(
  retriever: retriever,
  query: 'How old is bob?',
);

const result = await ai.generate({
    prompt: `Use the provided context from the Genkit documentation to answer this query: ${query}`,
    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

Genkit udostępnia interfejs wiersza poleceń (CLI) i lokalny interfejs dla programistów, aby ułatwić tworzenie aplikacji AI. Te narzędzia pomagają:

  • Eksperymentuj:testuj i ulepszaj funkcje AI, prompty i zapytania.
  • Debugowanie:znajdowanie i rozwiązywanie problemów za pomocą szczegółowych ścieżek wykonania.
  • Ocena: ocena wygenerowanych wyników w różnych przypadkach testowych.

Skontaktuj się z nami

  • Dołącz do społeczności: bądź na bieżąco, zadawaj pytania i udostępniaj swoje prace na naszym serwerze Discord.
  • Prześlij opinię: możesz zgłaszać problemy lub proponować nowe funkcje, korzystając z narzędzia do śledzenia problemów na GitHubie.

Dalsze kroki

W naszym przewodniku Wprowadzenie dowiesz się, jak tworzyć pierwsze aplikacje AI za pomocą Genkit.