Genkit 플러그인 작성

Firebase 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 호출 이외의 동작을 취했다고 가정합니다.

    플러그인에 이 함수가 필요하지 않더라도 이 함수를 정의하고 내보내야 합니다. 않습니다. 이 경우 Initnil 오류만 반환할 수 있습니다.

  • Config 구조체 유형 이 유형은 모든 구성을 캡슐화해야 하며 Init에서 허용하는 옵션입니다.

    API 키와 같이 보안 비밀 값인 모든 플러그인 옵션의 경우 Config 옵션과 구성할 기본 환경 변수를 모두 제공 있습니다. 이렇게 하면 플러그인이 보안 비밀 관리 기능을 활용할 수 있습니다. 여러 호스팅 제공업체 (예: 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