Firebase Genkit

Genkit 是一種架構,可協助你建構 AI 技術輔助的應用程式和功能。它提供適用於 Node.js 和 Go 的開放原始碼程式庫,以及用於測試和偵錯的開發人員工具。

本說明文件涵蓋 Node.js 適用的 Genkit。如果您是 Go 開發人員,請參閱 Genkit Go 說明文件

您可以在支援 Node.js 的任何位置部署及執行 Genkit 程式庫。可與任何生成式 AI 模型 API 或向量資料庫搭配使用。雖然我們提供 Firebase 和 Google Cloud 的整合服務,但您可以使用 Genkit 與任何 Google 服務分開使用。

開始

主要功能

用來生成 AI 的整合式 API 只要使用一個 API,即可從不同的 AI 模型產生或串流內容。適用於多模態輸入/輸出和自訂模型設定。
結構化產生 透過內建驗證功能產生或串流結構化物件 (例如 JSON)。簡化與應用程式的整合作業,並將非結構化資料轉換為可用的格式。
工具呼叫 讓 AI 模型呼叫函式和 API 來完成工作。模型會決定要使用的時間和工具。
擷取評估報告 整合資料來提高生成輸出內容的準確度和關聯性。簡單的 API 可協助您嵌入各種來源的資訊、建立索引及擷取資訊。
提示範本 您可以在精簡且可執行的提示檔案中,建立包括 RTF 格式範本、模型設定、多模態支援和工具整合等有效提示。

請參閱下列程式碼範例,具體瞭解如何在程式碼中使用這些功能:

基本生成

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

結構化產生

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

工具呼叫

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

擷取

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

提示範本

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

開發工具

Genkit 提供指令列介面 (CLI) 和本機開發人員 UI,讓建構 AI 應用程式變得更輕鬆。這些工具可協助您:

  • 實驗:測試並修正 AI 函式、提示和查詢。
  • 偵錯:透過詳細執行追蹤記錄找出並修正問題。
  • 評估:評估多個測試案例產生的結果。

關注我們的動態

  • 加入社群:透過 Discord 伺服器查看最新消息、提出問題,以及分享工作成果。
  • 提供意見回饋:使用 GitHub Issue Tracker 回報問題或建議新功能。

後續步驟

歡迎參閱入門指南,瞭解如何透過 Genkit 建構第一個 AI 應用程式。