Las funciones de Genkit están diseñadas para que se extiendan a través de complementos. Los complementos de Genkit son módulos configurables que pueden proporcionar modelos, recuperadores, indexadores, almacenes de seguimientos y mucho más. Ya viste los complementos en acción con solo usar Genkit:
import (
"github.com/firebase/genkit/go/ai"
"github.com/firebase/genkit/go/genkit"
"github.com/firebase/genkit/go/plugins/googlegenai"
"github.com/firebase/genkit/go/plugins/server"
)
g, err := genkit.Init(ctx,
ai.WithPlugins(
&googlegenai.GoogleAI{APIKey: ...},
&googlegenai.VertexAI{ProjectID: "my-project", Location: "us-central1"},
),
)
El complemento de Vertex AI toma la configuración (como el ID del proyecto de Google Cloud del usuario) y registra una variedad de nuevos modelos, incorporadores y más con el registro de Genkit. El registro sirve como un servicio de búsqueda para acciones con nombre en el entorno de ejecución y potencia la IU local de Genkit para ejecutar e inspeccionar modelos, instrucciones y mucho más.
Cómo crear un complemento
En Go, un complemento Genkit es un paquete que se adhiere a un pequeño conjunto de convenciones. Un solo módulo puede contener varios complementos.
ID del proveedor
Cada complemento debe tener una cadena de identificador único que lo distinga de otros complementos. Genkit usa este identificador como un espacio de nombres para cada recurso que defina tu complemento y, así, evitar conflictos de nombres con otros complementos.
Por ejemplo, si tu complemento tiene un ID yourplugin
y proporciona un modelo llamado
text-generator
, el identificador del modelo completo será yourplugin/text-generator
.
Este ID de proveedor debe exportarse y debes definirlo una vez para el complemento y usarlo de forma coherente cuando una función de Genkit lo requiera.
const providerID = "yourplugin"
Exportaciones estándar
Cada complemento debe definir y exportar los siguientes símbolos para cumplir con la interfaz genkit.Plugin
:
Un tipo de struct que encapsula todas las opciones de configuración que acepta el complemento.
Para cualquier opción de complemento que sea un valor secreto, como claves de API, debes ofrecer una opción de configuración y una variable de entorno predeterminada para configurarla. Esto permite que tu complemento aproveche las funciones de administración de secretos que ofrecen muchos proveedores de hosting (como Cloud Secret Manager, que puedes usar con Cloud Run). Por ejemplo:
type MyPlugin struct { APIKey string // Other options you may allow to configure... }
Un método
Name()
en la estructura que muestra el ID del proveedor.Un método
Init()
en la struct con una declaración como la siguiente:func (m *MyPlugin) Init(ctx context.Context, g *genkit.Genkit) error
En esta función, realiza los pasos de configuración que requiera tu complemento. Por ejemplo:
- Confirma que se hayan especificado los valores de configuración necesarios y asigna los valores predeterminados a cualquier parámetro de configuración opcional no especificado.
- Verifica que las opciones de configuración proporcionadas sean válidas juntas.
- Crea los recursos compartidos que requiera el resto del complemento. Por ejemplo, crea clientes para cualquier servicio al que acceda tu complemento.
En la medida de lo posible, los recursos proporcionados por el complemento no deben dar por sentado que se instalaron otros complementos antes de este.
Se llamará a este método automáticamente durante
genkit.Init()
cuando el usuario pase el complemento a la opciónWithPlugins()
.
Cómo compilar funciones de complementos
Un solo complemento puede activar muchos elementos nuevos en Genkit. Por ejemplo, el complemento de Vertex AI activa varios modelos nuevos, así como un incorporador.
Complementos de modelos
Los complementos de modelos de Genkit agregan uno o más modelos de IA generativa al registro de Genkit. Un modelo representa cualquier modelo generativo capaz de recibir instrucciones como entradas y generar texto, contenido multimedia o datos como resultados.
Consulta Cómo escribir un complemento de modelo de Genkit.
Complementos de telemetría
Los complementos de telemetría de Genkit configuran la instrumentación de OpenTelemetry de Genkit para exportar seguimientos, métricas y registros a una herramienta de supervisión o visualización en particular.
Consulta Cómo escribir un complemento de telemetría de Genkit.
Cómo publicar un complemento
Los complementos de Genkit se pueden publicar como paquetes normales de Go. Para aumentar
su visibilidad, tu paquete debe tener genkit
en alguna parte de su nombre para que
se pueda encontrar con una simple búsqueda en
pkg.go.dev
. Cualquiera de las siguientes son buenas opciones:
github.com/yourorg/genkit-plugins/servicename
github.com/yourorg/your-repo/genkit/servicename