Firebase Genkit'in özellikleri, eklentilerle genişletilecek şekilde tasarlanmıştır. Genkit eklentileri, yapılandırılabilir modüllerdir model, retriever, dizinleyici, izleme depolama alanı ve daha fazlasını sağlayabilen Buradaki eklentileri işlemi nasıl yapacağınızı öğrenmek için Genkit'i kullanabilirsiniz:
import { configureGenkit } from '@genkit-ai/core';
import { vertexAI } from '@genkit-ai/vertexai';
configureGenkit({
plugins: [vertexAI({ projectId: 'my-project' })],
});
Vertex AI eklentisi, yapılandırma (ör. kullanıcının Google Cloud proje kimliği) sağlar ve çeşitli yeni modelleri, yerleştiricileri ve daha fazlasını Genkit kayıt defteri. Kayıt otoritesi, Genkit'in yerel kullanıcı arayüzünü çalıştırmak modellerin, istemlerin ve diğer öğelerin incelenmesi, ayrıca her görev için adlandırılmış işlem sayısı.
Eklenti Oluşturma
Eklenti oluşturmak için genellikle yeni bir NPM paketi oluşturmanız gerekir:
mkdir genkitx-my-plugin
cd genkitx-my-plugin
npm init -y
npm i --save @genkit-ai/core
npm i --save-dev typescript
npx tsc --init
Ardından, eklentinizi ana giriş noktanızdan tanımlayıp dışa aktarın:
import { genkitPlugin } from '@genkit-ai/core';
interface MyPluginOptions {
// add any plugin configuration here
}
export const myPlugin = genkitPlugin(
'my-plugin',
async (options: MyPluginOptions) => {
// initialize your plugin here...
}
);
Eklenti seçenekleriyle ilgili rehberlik
Genel olarak, eklentinizoptions
çalışması için gerekli olan eklenti genelinde yapılandırma. Eklenti seçeneği için
API anahtarları gibi gizli bir değer gerektirdiğinde, hem bir seçenek hem de bir
varsayılan ortam değişkenini eklemeniz gerekir:
import { genkitPlugin, GenkitError } from '@genkit-ai/core';
interface MyPluginOptions {
apiKey?: string;
}
export const myPlugin = genkitPlugin(
'my-plugin',
async (options: MyPluginOptions) => {
const apiKey = options.apiKey || process.env.MY_PLUGIN_API_KEY;
if (!apiKey)
throw new GenkitError({
source: 'my-plugin',
status: 'INVALID_ARGUMENT',
message:
'Must supply either `options.apiKey` or set `MY_PLUGIN_API_KEY` environment variable.',
});
// ... continue initialization
}
);
Eklentinizi oluşturma
Tek bir eklentiyle Genkit'teki birçok yeni özellik etkinleştirilebilir. Örneğin, Vertex AI eklentisi hem yeni modelleri etkinleştirir hem de bir yerleştiriciyi etkinleştirir.
Model eklentileri
Genkit model eklentileri, Genkit kayıt defterine bir veya daha fazla üretken yapay zeka modeli ekler. Model, tüm üretken yapay zekaları
giriş olarak istem alabilen ve çıkış olarak metin, medya veya veri oluşturabilen model.
Genel olarak bir model eklentisi, başlatma işlevinde bir veya daha fazla defineModel
çağrısı yapar.
Özel modeller genellikle üç bileşenden oluşur:
- Modelin özelliklerini tanımlayan meta veriler.
- Modelin desteklediği belirli parametreleri içeren bir yapılandırma şeması.
GenerateRequest
ve kabul eden modeli uygulayan bir işlevGenerateResponse
dönüş.
Model eklentisi oluşturmak için @genkit-ai/ai
paketini kullanmanız gerekir:
npm i --save @genkit-ai/ai
Bir model eklentisi, genel olarak aşağıdaki gibi görünebilir:
import { genkitPlugin, GenkitError } from '@genkit-ai/core';
import { defineModel, GenerationCommonConfigSchema } from '@genkit-ai/ai/model';
import { simulateSystemPrompt } from '@genkit-ai/ai/model/middleware';
import { z } from 'zod';
export const myPlugin = genkitPlugin('my-plugin', async (options: {apiKey?: string}) => {
defineModel({
// be sure to include your plugin as a provider prefix
name: 'my-plugin/my-model',
// label for your model as shown in Genkit Developer UI
label: 'My Awesome Model',
// optional list of supported versions of your model
versions: ['my-model-001', 'my-model-001'],
// model support attributes
supports: {
multiturn: true, // true if your model supports conversations
media: true, // true if your model supports multimodal input
tools: true, // true if your model supports tool/function calling
systemRole: true, // true if your model supports the system role
output: ['text', 'media', 'json'], // types of output your model supports
},
// Zod schema for your model's custom configuration
configSchema: GenerationCommonConfigSchema.extend({
safetySettings: z.object({...}),
}),
// list of middleware for your model to use
use: [simulateSystemPrompt()]
}, async request => {
const myModelRequest = toMyModelRequest(request);
const myModelResponse = await myModelApi(myModelRequest);
return toGenerateResponse(myModelResponse);
});
});
İstek ve Yanıtları Dönüştürme
Genkit model eklentisinin ana işi,
GenerateRequest
: Genkit'in ortak formatından tanınan bir biçime
ve modelinizin API'si tarafından desteklenir ve daha sonra
modeli, Genkit tarafından kullanılan GenerateResponseData
biçimine dönüştürdü.
Bazen model sınırlamalarını atlatmak için verilere masaj uygulanması veya veriler manipüle edilmesi gerekebilir. Örneğin, modeliniz bir system
mesajını yerel olarak desteklemiyorsa istemin sistem mesajını kullanıcı/model mesaj çiftine dönüştürmeniz gerekebilir.
Model referansları
Bir model defineModel
kullanılarak kaydedildikten sonra her zaman
tarafından istenmektedir. Ancak, yazma ve IDE otomatik tamamlama özelliğini iyileştirmek için şunları yapabilirsiniz:
paketinizden yalnızca bir öğenin meta verilerini içeren bir model referansını dışa aktarın:
model hakkında daha fazla bilgi edinin:
import { modelRef } from "@genkit-ai/ai/model";
export myModelRef = modelRef({
name: "my-plugin/my-model",
configSchema: MyConfigSchema,
info: {
// ... model-specific info
},
})
generate()
çağrılırken model başvuruları ve dize model adları birbirinin yerine kullanılabilir:
import { myModelRef } from 'genkitx-my-plugin';
import { generate } from '@genkit-ai/ai';
generate({ model: myModelRef });
// is equivalent to
generate({ model: 'my-plugin/my-model' });
Telemetri eklentileri
Genkit Telemetri Eklentisi Yazma başlıklı makaleye bakın.
Eklenti yayınlama
Genkit eklentileri, normal NPM paketleri olarak yayınlanabilir. Artırmak için
ve tutarlılığı en üst düzeye çıkarabilmek için paketinizin
genkitx-{name}
öğesinin bir Genkit eklentisi olduğunu belirtmek için genkitx-{name}
package.json
içinde yer alan aşağıdaki keywords
öğelerinin çoğu
eklenti:
genkit-plugin
: Bir Genkit eklentisi olduğunu belirtmek için bu anahtar kelimeyi her zaman paketinize ekleyin.genkit-model
: Paketiniz herhangi bir model tanımlıyorsa bu anahtar kelimeyi ekleyin.genkit-retriever
: Paketiniz herhangi bir alıcı tanımlıyorsa bu anahtar kelimeyi ekleyin.genkit-indexer
: Paketinizde dizine eklenenler varsa bu anahtar kelimeyi ekleyin.genkit-embedder
: Paketinizde dizine eklenenler varsa bu anahtar kelimeyi ekleyin.genkit-tracestore
: Paketiniz iz depolarını tanımlıyorsa bu anahtar kelimeyi ekleyin.genkit-statestore
: Paketiniz eyalet depolarını tanımlıyorsa bu anahtar kelimeyi ekleyin.genkit-telemetry
: Paketiniz bir telemetri sağlayıcısını tanımlıyorsa bu anahtar kelimeyi ekleyin.genkit-deploy
: Paketiniz Genkit uygulamalarını bulut sağlayıcılara dağıtmak için yardımcılar içeriyorsa bu anahtar kelimeyi ekleyin.genkit-flow
: Paketiniz Genkit akışlarını artırıyorsa bu anahtar kelimeyi ekleyin.
Alıcı, yerleşik ve model sağlayan bir eklentinin package.json
öğesi aşağıdaki gibi olabilir:
{
"name": "genkitx-my-plugin",
"keywords": ["genkit-plugin", "genkit-retriever", "genkit-embedder", "genkit-model"],
// ... dependencies etc.
}