Firebase Genkit

Genkit adalah framework yang didesain untuk membantu Anda membangun aplikasi dan fitur yang didukung teknologi AI. Library ini menyediakan library open source untuk Node.js dan Go, ditambah alat developer untuk pengujian dan proses debug.

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

Anda dapat men-deploy dan menjalankan library Genkit di mana pun Node.js didukung. Solusi ini dirancang untuk berfungsi dengan API model AI generatif atau database vektor. 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.
Pembuatan terstruktur Buat atau streaming objek terstruktur (seperti JSON) dengan validasi bawaan. Sederhanakan integrasi dengan aplikasi Anda dan konversi data tidak terstruktur ke dalam format yang dapat digunakan.
Panggilan alat Izinkan model AI memanggil fungsi dan API Anda sebagai alat untuk menyelesaikan tugas. Model memutuskan kapan dan alat mana yang akan digunakan.
Pembuatan hasil yang ditingkatkan Tingkatkan akurasi dan relevansi output yang dihasilkan dengan mengintegrasikan data Anda. API sederhana membantu Anda menyematkan, mengindeks, dan mengambil informasi dari berbagai sumber.
Template perintah Buat perintah efektif yang mencakup template rich text, setelan model, dukungan multimodal, dan integrasi alat - semuanya dalam file perintah yang ringkas dan dapat dijalankan.

Lihat contoh kode berikut untuk mendapatkan gambaran konkret tentang cara menggunakan kemampuan ini dalam kode:

Pembuatan dasar

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?',
});

Pembuatan terstruktur

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

Panggilan alat

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? ',
});

Retrieval

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

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 pembangunan aplikasi AI. Alat ini membantu Anda:

  • Eksperimen: Menguji dan meningkatkan kualitas fungsi, perintah, dan kueri AI Anda.
  • Debug: Menemukan dan memperbaiki masalah terkait rekaman aktivitas eksekusi yang mendetail.
  • Evaluasi: Menilai hasil yang dihasilkan di beberapa kasus pengujian.

Ikuti kami

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

Langkah berikutnya

Pelajari cara membangun aplikasi AI pertama Anda dengan Genkit dalam panduan Memulai kami.