Viết trình bổ trợ Genkit

Các tính năng của Firebase Genkit được thiết kế để mở rộng bằng các trình bổ trợ. Bộ công cụ tạo tài khoản trình bổ trợ là các mô-đun có thể định cấu hình, có thể cung cấp các mô hình, trình truy xuất dữ liệu, trình lập chỉ mục, cửa hàng theo dõi và nhiều công cụ khác. Bạn đã thấy các trình bổ trợ hoạt động chỉ bằng cách sử dụng Bộ công cụ tạo:

import {
	"github.com/firebase/genkit/go/ai"
	"github.com/firebase/genkit/go/plugins/vertexai"
}
// Default to the value of GCLOUD_PROJECT for the project,
// and "us-central1" for the location.
// To specify these values directly, pass a vertexai.Config value to Init.
if err := vertexai.Init(ctx, nil); err != nil {
	return err
}

Trình bổ trợ Vertex AI sẽ định cấu hình (chẳng hạn như Google Cloud của người dùng) project ID) và đăng ký nhiều mô hình, trình nhúng mới, v.v. bằng Sổ đăng ký Genkit. Sổ đăng ký đóng vai trò là dịch vụ tra cứu cho các hành động được đặt tên tại thời gian chạy và hỗ trợ giao diện người dùng cục bộ của Genkit để chạy và kiểm tra các mô hình, lời nhắc và nhiều nội dung khác.

Tạo trình bổ trợ

Trong Go, trình bổ trợ Genkit chỉ là một gói tuân thủ một tập hợp nhỏ các quy ước của chúng tôi. Một mô-đun có thể chứa nhiều trình bổ trợ.

Mã nhà cung cấp

Mỗi trình bổ trợ phải có một chuỗi giá trị nhận dạng duy nhất để phân biệt với trình bổ trợ các plugin khác. Genkit sử dụng giá trị nhận dạng này làm không gian tên cho mỗi tài nguyên trình bổ trợ của bạn xác định nhằm ngăn chặn xung đột khi đặt tên với các trình bổ trợ khác.

Ví dụ: nếu trình bổ trợ của bạn có mã nhận dạng yourplugin và cung cấp một mô hình có tên là text-generator, giá trị nhận dạng mô hình đầy đủ sẽ là yourplugin/text-generator.

Bạn không cần xuất mã nhận dạng nhà cung cấp của mình, nhưng bạn nên xác định mã một lần cho trình bổ trợ của mình và sử dụng một cách nhất quán khi chức năng của Genkit yêu cầu.

const providerID = "yourplugin"

Xuất chuẩn

Mỗi trình bổ trợ phải xác định và xuất các biểu tượng sau:

  • Hàm Init() có nội dung khai báo như sau:

    func Init(ctx context.Context, cfg *Config) (err error)
    

    Bỏ qua mọi tham số mà bạn không sử dụng (ví dụ: bạn có thể không có cfg nếu trình bổ trợ của bạn không cung cấp bất kỳ cấu hình nào cho toàn bộ trình bổ trợ ).

    Trong hàm này, hãy thực hiện mọi bước thiết lập mà trình bổ trợ yêu cầu. Cho ví dụ:

    • Xác nhận rằng mọi giá trị cấu hình bắt buộc đã được chỉ định và chỉ định các giá trị mặc định thành mọi chế độ cài đặt không bắt buộc không xác định.
    • Xác minh rằng các tuỳ chọn cấu hình đã cho là hợp lệ với nhau.
    • Tạo bất kỳ tài nguyên dùng chung nào mà phần còn lại của trình bổ trợ yêu cầu. Cho ví dụ: tạo ứng dụng cho mọi dịch vụ mà trình bổ trợ của bạn truy cập.

    Trong phạm vi có thể, các tài nguyên do trình bổ trợ của bạn cung cấp không nên giả định rằng người dùng đã thực hiện bất kỳ hành động nào khác ngoài gọi Init.

    Bạn nên xác định và xuất hàm này ngay cả khi trình bổ trợ của bạn không yêu cầu bất kỳ hoạt động khởi tạo nào. Trong trường hợp này, Init chỉ có thể trả về lỗi nil.

  • Kiểu cấu trúc Config. Loại này phải đóng gói tất cả cấu hình được Init chấp nhận.

    Đối với bất kỳ tuỳ chọn trình bổ trợ nào là giá trị bí mật, chẳng hạn như khoá API, bạn nên cung cấp cả lựa chọn Config và biến môi trường mặc định để định cấu hình nó. Điều này cho phép plugin của bạn tận dụng các tính năng quản lý bí mật do nhiều nhà cung cấp dịch vụ lưu trữ (chẳng hạn như Cloud Secret Manager) cung cấp, sử dụng với Cloud Run). Ví dụ:

    type Config struct {
    	ExampleAPIKey string
    }
    
    func Init(cfg *Config) (err error) {
    	apiKey := cfg.ExampleAPIKey
    	if apiKey == "" {
    		apiKey = os.Getenv("EXAMPLE_API_KEY")
    	}
    	if apiKey == "" {
    		return fmt.Errorf(`the Example plug-in requires you to specify an API
     key for the Example service, either by passing it to example.Init() or by
     setting the EXAMPLE_API_KEY environment variable`)
    	}
    
    	return nil
    }
    

Xây dựng các tính năng của trình bổ trợ

Một trình bổ trợ duy nhất cũng có thể kích hoạt nhiều nội dung mới trong Genkit. Ví dụ: Trình bổ trợ Vertex AI kích hoạt một số mô hình mới cũng như một trình nhúng.

Trình bổ trợ mô hình

Các trình bổ trợ mô hình của Genkit sẽ thêm một hoặc nhiều mô hình AI tạo sinh vào Genkit sổ đăng ký tên miền. Một mô hình đại diện cho bất kỳ mô hình tạo sinh nào có khả năng nhận làm đầu vào và tạo văn bản, nội dung nghe nhìn hoặc dữ liệu làm đầu ra.

Xem bài viết Viết trình bổ trợ mô hình Genkit.

Trình bổ trợ đo từ xa

Các trình bổ trợ đo từ xa Genkit định cấu hình khả năng đo lường OpenTelemetry của Genkit để xuất dấu vết, chỉ số và nhật ký sang một nội dung giám sát hoặc hình ảnh cụ thể .

Hãy xem bài viết Viết trình bổ trợ đo từ xa Genkit.

Xuất bản trình bổ trợ

Các trình bổ trợ Genkit có thể được phát hành dưới dạng gói Go thông thường. Để tăng thì gói của bạn nên có genkit ở một vị trí nào đó trong tên để gói bằng một thao tác tìm kiếm đơn giản trên pkg.go.dev. Bất kỳ loại nào sau đây lựa chọn phù hợp:

  • github.com/yourorg/genkit-plugins/servicename
  • github.com/yourorg/your-repo/genkit/servicename