Firebase Genkit의 기능은 플러그인으로 확장되도록 설계되었습니다. Genkit 플러그인은 모델, 검색기, 색인 생성기, trace 저장소 등을 제공하는 구성 가능한 모듈입니다. Genkit를 사용하기만 해도 플러그인이 작동하는 것을 볼 수 있습니다.
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
}
Vertex AI 플러그인은 구성(예: 사용자의 Google Cloud 프로젝트 ID)을 가져오고 Genkit 레지스트리에 다양한 새 모델, 삽입기 등을 등록합니다. 레지스트리는 런타임 시 이름이 지정된 작업의 조회 서비스 역할을 하며 모델, 프롬프트 등을 실행하고 검사하기 위한 Genkit의 로컬 UI를 구동합니다.
플러그인 만들기
Go에서 Genkit 플러그인은 소규모의 규칙 집합을 준수하는 패키지입니다. 단일 모듈에 여러 플러그인이 포함될 수 있습니다.
제공업체 ID
모든 플러그인에는 다른 플러그인과 구분되는 고유 식별자 문자열이 있어야 합니다. Genkit는 이 식별자를 플러그인이 정의하는 모든 리소스의 네임스페이스로 사용하여 다른 플러그인과의 이름 충돌을 방지합니다.
예를 들어 플러그인의 ID가 yourplugin
이고 text-generator
라는 모델을 제공하는 경우 전체 모델 식별자는 yourplugin/text-generator
입니다.
제공업체 ID를 내보낼 필요는 없지만 플러그인에 대해 한 번 정의하고 Genkit 함수에서 필요할 때 일관되게 사용해야 합니다.
const providerID = "yourplugin"
표준 내보내기
모든 플러그인은 다음 기호를 정의하고 내보내야 합니다.
다음과 같은 선언이 있는
Init()
함수:func Init(ctx context.Context, cfg *Config) (err error)
사용하지 않는 파라미터는 생략합니다(예: 플러그인이 플러그인 전체 구성 옵션을 제공하지 않으면
cfg
파라미터가 없을 수도 있음).이 함수에서 플러그인에 필요한 설정 단계를 수행합니다. 예를 들면 다음과 같습니다.
- 필요한 구성 값이 지정되었는지 확인하고 지정되지 않은 선택적 설정에 기본값을 할당합니다.
- 지정된 구성 옵션이 함께 유효한지 확인합니다.
- 나머지 플러그인에 필요한 공유 리소스를 만듭니다. 예를 들어 플러그인이 액세스하는 모든 서비스의 클라이언트를 만듭니다.
가능한 한 플러그인에서 제공하는 리소스는 사용자가
Init
호출 이외의 작업을 수행했다고 가정하면 안 됩니다.플러그인에 초기화가 필요하지 않더라도 이 함수를 정의하고 내보내야 합니다. 이 경우
Init
는nil
오류만 반환할 수 있습니다.Config
구조체 유형. 이 유형은Init
에서 허용하는 모든 구성을 캡슐화해야 합니다.API 키와 같이 보안 비밀 값인 모든 플러그인 옵션의 경우 이를 구성하기 위해
Config
옵션과 기본 환경 변수를 모두 제공해야 합니다. 이렇게 하면 플러그인이 여러 호스팅 제공업체(예: Cloud Run에서 사용할 수 있는 Cloud Secret Manager)에서 제공하는 보안 비밀 관리 기능을 활용할 수 있습니다. 예를 들면 다음과 같습니다.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 }
플러그인 기능 빌드
단일 플러그인으로 Genkit 내에서 많은 새로운 항목을 활성화할 수 있습니다. 예를 들어 Vertex AI 플러그인은 삽입기 외에도 여러 새 모델을 활성화합니다.
모델 플러그인
Genkit 모델 플러그인은 하나 이상의 생성형 AI 모델을 Genkit 레지스트리에 추가합니다. 모델은 프롬프트를 입력으로 수신하고 텍스트, 미디어 또는 데이터를 출력으로 생성할 수 있는 모든 생성형 모델을 나타냅니다.
Genkit 모델 플러그인 작성을 참조하세요.
원격 분석 플러그인
Genkit 원격 분석 플러그인은 Genkit의 OpenTelemetry 계측을 구성하여 trace, 측정항목, 로그를 특정 모니터링 또는 시각화 도구로 내보냅니다.
Genkit 원격 분석 플러그인 작성을 참조하세요.
플러그인 게시
Genkit 플러그인은 일반 Go 패키지로 게시할 수 있습니다. 검색 가능성을 높이려면 패키지의 이름 어딘가에 genkit
가 있어야 pkg.go.dev
에서 간단한 검색으로 찾을 수 있습니다. 다음 중 하나가 좋은 선택입니다.
github.com/yourorg/genkit-plugins/servicename
github.com/yourorg/your-repo/genkit/servicename