Genkit 模型外掛程式能在 Genkit 中加入一或多個生成式 AI 模型 註冊資料庫模型代表任何能接收輸入內容的生成式模型 做為輸入內容並生成文字、媒體或資料
事前準備
如需編寫程式的相關資訊,請參閱「編寫 Genkit 外掛程式」一文
任何類型的 Genkit 外掛程式,包括模型外掛程式請特別注意
每個外掛程式都必須匯出 Init
函式,且使用者應呼叫該函式。
完成後才能使用外掛程式
模型定義
一般而言,模型外掛程式會在其 ai.DefineModel
呼叫
Init
函式:針對每個模型,每個模型都會提供一個介面
。
模型定義由三個元件組成:
- 宣告模型功能的中繼資料。
- 具有模型支援任何特定參數的設定類型。
- 可接受
ai.GenerateRequest
並傳回ai.GenerateResponse
,假設使用 AI 模型產生後者。
程式碼大致如下:
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
},
)
宣告模型功能
每項模型定義都必須包含屬於其中繼資料、
ai.ModelCapabilities
值會宣告模型支援的功能。
Genkit 會根據這項資訊判斷特定行為,例如
特定輸入內容是否適用於模型。舉例來說
不支援多輪互動,如果無法傳送訊息,就會發生錯誤
。
請注意,這些宣告所指模型功能 (依規定提供) ,而且不一定要統一對應 基礎模型和模型 API舉例來說 提供定義系統訊息的明確方式,您的外掛程式可能仍然 宣告支援系統角色,並將其實作為特殊邏輯, 會在使用者提示中插入系統訊息
定義模型的設定結構定義
如要指定模型支援的生成選項,請定義並匯出
設定類型Genkit 的 ai.GenerationCommonConfig
類型包含
生成式 AI 模型服務經常支援的選項
嵌入或單獨使用
您的產生函式應會驗證要求是否包含正確的 選項類型。
轉換要求與回應
生成功能執行 Genkit 模型外掛程式的主要工作:
將 ai.GenerateRequest
從 Genkit 通用格式轉換為格式
然後將回應轉換為
將您的模型轉換為 Genkit 使用的 ai.GenerateResponse
格式
有時候,您可能需要大規模處理資料或操縱資料才能因應模型
例如,如果您的模型原生支援 system
訊息,您可能需要將提示的系統訊息轉換為使用者模型
訊息配對。
匯出項目
除了所有外掛程式都必須匯出的資源外,Init
函式和 Config
類型—模型外掛程式也應匯出
包括:
產生設定類型,如前文所述。
Model
函式,會傳回外掛程式定義模型的參照。 通常這可以是:func Model(name string) *ai.Model { return ai.LookupModel(providerID, name) }
選用:
DefineModel
函式,可讓使用者定義能 外掛程式可以提供,但您無法自動定義,另有 建議您提供此類函式的兩個主要原因:外掛程式可存取過多模型,實際註冊 第一項。舉例來說,Ollama 外掛程式能提供 並頻繁加入不同的模型因此 自動定義所有模型,並要求使用者呼叫
DefineModel
。讓使用者能使用您擁有的新模式 尚未新增到外掛程式中。
外掛程式的
DefineModel
函式通常是連結至ai.DefineModel
的前端 會定義生成函式,但讓使用者指定模型名稱 以及模型功能