Genkit model eklentileri, Genkit'e bir veya daha fazla üretken yapay zeka modeli ekler. kayıt otoritesi. Model, alan adına ulaşabilen her türlü üretken giriş olarak istemini ve çıkış olarak metin, medya veya veri oluşturmayı seçebilirsiniz.
Başlamadan önce
Yazma hakkında bilgi edinmek için Genkit eklentileri yazma başlıklı makaleyi okuyun
model eklentileri de dahil her tür Genkit eklentisi. Özellikle, her bir
her eklenti, kullanıcıların çağırması gereken bir Init
işlevini dışa aktarmalıdır.
kontrol edin.
Model tanımları
Genellikle bir model eklentisi, kendisinde bir veya daha fazla ai.DefineModel
çağrısı yapar
Init
işlevi: Eklentinin her model için bir arayüz sağladığı
.
Bir model tanımı üç bileşenden oluşur:
- Modelin özelliklerini açıklayan meta veriler.
- Modelin desteklediği belirli parametrelere sahip bir yapılandırma türü.
ai.GenerateRequest
kabul eden veai.GenerateResponse
, ikincisini oluşturmak için muhtemelen yapay zeka modeli kullanıyor.
Özet olarak, kodda aşağıdaki gibi görünür:
type MyModelConfig struct {
ai.GenerationCommonConfig
CustomOption int
AnotherCustomOption string
}
ai.DefineModel(
providerID, "my-model",
&ai.ModelMetadata{
Label: "my-model",
Supports: ai.ModelCapabilities{
Multiturn: true, // Does the model support multi-turn chats?
SystemRole: true, // Does the model support syatem messages?
Media: false, // Can the model accept media input?
Tools: false, // Does the model support function calling (tools)?
},
},
func(ctx context.Context,
genRequest *ai.GenerateRequest,
_ ai.ModelStreamingCallback,
) (*ai.GenerateResponse, error) {
// Verify that the request includes a configuration that conforms to
// your schema .
if _, ok := genRequest.Config.(MyModelConfig); !ok {
return nil, fmt.Errorf("request config must be type MyModelConfig")
}
// Use your custom logic to convert Genkit's ai.GenerateRequest
// into a form usable by the model's native API.
apiRequest, err := apiRequestFromGenkitRequest(genRequest)
if err != nil {
return nil, err
}
// Send the request to the model API, using your own code or the
// model API's client library.
apiResponse, err := callModelAPI(apiRequest)
if err != nil {
return nil, err
}
// Use your custom logic to convert the model's response to Genkin's
// ai.GenerateResponse.
response, err := genResponseFromAPIResponse(apiResponse)
if err != nil {
return nil, err
}
return response, nil
},
)
Model özelliklerini bildirme
Her model tanımı, meta verilerinin parçası olarak bir
Modelin hangi özellikleri desteklediğini belirten ai.ModelCapabilities
değeri.
Genkit bu bilgileri kullanarak belirli davranışları (ör. doğrulama
model için geçerli olup olmadığını gösterir. Örneğin, modelinizin
çok dönüşlü etkileşimleri desteklemiyorsa, ona bir mesaj iletmek hata
geçmişi'ne dokunun.
Bu beyanların, modelin sağlanan olanaklarla ilgili olduğunu unutmayın. tarafından yapılmış olup olmadığını ve her zaman eklentinin özellikleriyle birebir temel model ve model API'si. Örneğin, model API şunları yapmazsa: sistem mesajlarını tanımlamak için belirli bir yol sunuyorsanız, eklentiniz sistem rolüne destek verdiğinizi beyan etmeniz ve bunu kullanıcı istemine sistem mesajları ekler.
Modelinizin yapılandırma şemasını tanımlama
Bir modelin desteklediği oluşturma seçeneklerini belirtmek için bir
yapılandırma türü. Genkit, şunu içeren bir ai.GenerationCommonConfig
türüne sahip:
üretken yapay zeka model hizmetlerinin sık desteklediği seçeneklere
doğrudan yerleştirebilirsiniz.
Oluşturma fonksiyonunuz, isteğin doğru seçenekleri vardır.
İstekleri ve yanıtları dönüştürme
Oluşturma işlevi, Genkit model eklentisinin ana çalışmasını gerçekleştirir:
ai.GenerateRequest
, Genkit'in ortak biçiminden bir biçime dönüştürülüyor
API'nin desteklediği bir API'yi kullanıyorsanız ve ardından yanıtı
modelinizi Genkit tarafından kullanılan ai.GenerateResponse
biçimine dönüştürün.
Bazen bu modelde çalışmak için verilere masaj uygulanması veya veriler manipüle edilmesi gerekebilir.
sınırlamaları vardır. Örneğin, modeliniz bir system
öğesini yerel olarak desteklemiyorsa
mesajını görüyorsanız, bir istemin sistem mesajını kullanıcı modeline dönüştürmeniz gerekebilir.
mesaj çifti oluşturun.
Dışa aktarımlar
Tüm eklentilerin dışa aktarması gereken kaynaklara ek olarak, Init
işlevi ve Config
türünü içerir. Bir model eklentisi,
takip etmek için:
Daha önce açıklandığı gibi bir nesil yapılandırması türü.
Eklentinizin tanımlı modellerine referanslar döndüren bir
Model
işlevi. Genellikle bu aşağıdakiler olabilir:func Model(name string) *ai.Model { return ai.LookupModel(providerID, name) }
İsteğe bağlı: Kullanıcıların model tanımlamalarına olanak tanıyan
DefineModel
işlevi ancak sizin otomatik olarak tanımlamadığınız özellikleri tanımlar. Her biri 100'den az gösterim alan iki ana neden sunar:Eklentiniz, her birinin pratik olarak kaydedilebilmesi için çok fazla modele erişim sağlıyor bir. Örneğin, Ollama eklentisi düzinelerce web sitesine ve daha sık eklenen farklı modeller. Bu nedenle, tüm modelleri otomatik olarak tanımlar ve bunun yerine kullanıcının
DefineModel
olarak ayarlamak istiyorlar.Kullanıcılarınıza sahip olduğunuz yeni piyasaya sürülen modelleri kullanma imkanı sağlamak için henüz eklentinize eklenmedi.
Bir eklentinin
DefineModel
işlevi genellikleai.DefineModel
ön ucudur bir oluşturma fonksiyonu tanımlar ancak kullanıcının model adını belirtmesine olanak tanır ve model özellikleri.