Firebase Genkit

Genkit adalah framework yang dirancang untuk membantu Anda mem-build aplikasi dan fitur yang didukung AI. Library ini menyediakan library open source untuk Node.js dan Go, serta alat developer untuk pengujian dan proses debug.

Dokumentasi ini membahas Genkit untuk Node.js. Jika Anda adalah developer Go, lihat dokumentasi Genkit Go.

Anda dapat men-deploy dan menjalankan library Genkit di mana saja Node.js didukung. API ini dirancang untuk berfungsi dengan API model AI generatif atau database vektor apa pun. Meskipun kami menawarkan integrasi untuk Firebase dan Google Cloud, Anda dapat menggunakan Genkit secara terpisah dari layanan Google apa pun.

Mulai

Kemampuan utama

API terpadu untuk pembuatan AI Gunakan satu API untuk membuat atau melakukan streaming konten dari berbagai model AI. Berfungsi dengan input/output multimodal dan setelan model kustom.
Output terstruktur Buat atau streaming objek terstruktur (seperti JSON) dengan validasi bawaan. Sederhanakan integrasi dengan aplikasi Anda dan konversikan data tidak terstruktur menjadi format yang dapat digunakan.
Panggilan alat Izinkan model AI memanggil fungsi dan API Anda sebagai alat untuk menyelesaikan tugas. Model ini menentukan kapan dan alat mana yang akan digunakan.
Chat Genkit menawarkan API khusus chat yang memfasilitasi percakapan multi-giliran dengan model AI, yang dapat bersifat stateful dan persisten.
Agen Buat agen cerdas yang menggunakan alat (termasuk agen lain) untuk membantu mengotomatiskan tugas dan alur kerja yang kompleks.
Pengambilan data Tingkatkan akurasi dan relevansi output yang dihasilkan dengan mengintegrasikan data Anda. API sederhana membantu Anda menyematkan, mengindeks, dan mengambil informasi dari berbagai sumber.
Pembuatan template perintah Buat perintah yang efektif yang mencakup template teks kaya, setelan model, dukungan multi-modal, dan integrasi alat - semuanya dalam file perintah yang ringkas dan dapat dijalankan.

Lihat contoh kode berikut untuk mengetahui ide konkret tentang cara menggunakan kemampuan ini dalam kode:

Generasi dasar

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);
}

Output terstruktur

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);

Panggilan fungsi

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);

Chat

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

Agen

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.' );

Pengambilan data

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
});

Template perintah

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

Alat pengembangan

Genkit menyediakan antarmuka command line (CLI) dan UI Developer lokal untuk mempermudah pembuatan aplikasi AI. Alat ini membantu Anda:

  • Bereksperimen: Uji dan tingkatkan fungsi, perintah, dan kueri AI Anda.
  • Debug: Menemukan dan memperbaiki masalah dengan pelacakan eksekusi mendetail.
  • Evaluasi: Menilai hasil yang dihasilkan di beberapa kasus pengujian.

Ikuti kami

  • Bergabunglah dengan komunitas: Dapatkan info terbaru, ajukan pertanyaan, dan bagikan hasil kerja Anda di server Discord kami.
  • Berikan masukan: Laporkan masalah atau sarankan fitur baru menggunakan issue tracker GitHub kami.

Langkah berikutnya

Pelajari cara mem-build aplikasi AI pertama Anda dengan Genkit di panduan Memulai.