Firebase Genkit

Genkit là một bộ khung được thiết kế để giúp bạn xây dựng các tính năng và ứng dụng dựa trên AI. Phiên bản này cung cấp các thư viện nguồn mở cho Node.js và Go, cùng với các công cụ cho nhà phát triển dùng để kiểm thử và gỡ lỗi.

Tài liệu này đề cập đến Genkit cho Node.js. Nếu bạn là nhà phát triển phiên bản Go, hãy xem tài liệu về Genkit Go.

Bạn có thể triển khai và chạy thư viện Genkit ở bất kỳ nơi nào Node.js được hỗ trợ. API này được thiết kế để hoạt động với mọi API mô hình AI tạo sinh hoặc cơ sở dữ liệu vectơ. Mặc dù chúng tôi cung cấp các dịch vụ tích hợp cho Firebase và Google Cloud, nhưng bạn có thể sử dụng Genkit một cách độc lập với mọi dịch vụ của Google.

Bắt đầu

Các chức năng chính

API hợp nhất để tạo AI Sử dụng một API để tạo hoặc truyền trực tuyến nội dung từ nhiều mô hình AI. Hoạt động với đầu vào/đầu ra đa phương thức và các chế độ cài đặt mô hình tuỳ chỉnh.
Tạo dữ liệu có cấu trúc Tạo hoặc truyền trực tuyến các đối tượng có cấu trúc (như JSON) bằng tính năng xác thực tích hợp sẵn. Đơn giản hoá quá trình tích hợp với ứng dụng và chuyển đổi dữ liệu không có cấu trúc thành định dạng có thể sử dụng.
Gọi công cụ Cho phép các mô hình AI gọi các chức năng và API của bạn làm công cụ để hoàn thành nhiệm vụ. Mô hình đó quyết định thời điểm và công cụ cần sử dụng.
Tạo điều kiện tăng cường truy xuất Cải thiện độ chính xác và mức độ phù hợp của kết quả được tạo bằng cách tích hợp dữ liệu. Các API đơn giản giúp bạn nhúng, lập chỉ mục và truy xuất thông tin từ nhiều nguồn.
Tạo mẫu cho câu lệnh Tạo các câu lệnh hiệu quả, bao gồm cả việc tạo mẫu văn bản đa dạng thức, chế độ cài đặt mô hình, hỗ trợ đa phương thức và tích hợp công cụ – tất cả trong một tệp lời nhắc nhỏ gọn, có thể chạy.

Hãy xem các mã mẫu sau đây để có ý tưởng cụ thể về cách sử dụng các chức năng này trong mã:

Tạo cơ bản

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

Quá trình tạo có cấu trúc

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

Gọi công cụ

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

Truy xuất

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

Mẫu câu lệnh

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

Công cụ phát triển

Genkit cung cấp giao diện dòng lệnh (CLI) và giao diện người dùng cục bộ dành cho Nhà phát triển để giúp việc xây dựng các ứng dụng dựa trên AI trở nên dễ dàng hơn. Những công cụ này giúp bạn:

  • Thử nghiệm: Thử nghiệm và tinh chỉnh các hàm, câu lệnh và truy vấn AI.
  • Gỡ lỗi: Tìm và khắc phục các vấn đề liên quan đến dấu vết thực thi chi tiết.
  • Đánh giá: Đánh giá kết quả được tạo ra trong nhiều trường hợp kiểm thử.

Kết nối với chúng tôi

  • Tham gia cộng đồng: Luôn cập nhật thông tin, đặt câu hỏi và chia sẻ công việc của bạn trên máy chủ Discord của chúng tôi.
  • Gửi ý kiến phản hồi: Báo cáo vấn đề hoặc đề xuất tính năng mới bằng công cụ theo dõi lỗi trên GitHub.

Các bước tiếp theo

Tìm hiểu cách xây dựng ứng dụng trí tuệ nhân tạo đầu tiên bằng Genkit trong hướng dẫn Bắt đầu của chúng tôi.