프롬프트

프롬프트 조작은 앱 개발자가 생성형 AI 모델의 출력에 영향을 주는 기본 방식입니다. 예를 들어 LLM을 사용할 때는 모델 응답의 어조, 형식, 길이 및 기타 특성에 영향을 주는 프롬프트를 만들 수 있습니다.

Genkit는 프롬프트가 코드라는 전제 하에 설계되었습니다. 개발자는 소스 파일에 프롬프트를 작성 및 유지 관리하고, 코드에 사용하는 것과 동일한 버전 제어 시스템을 사용하여 변경사항을 추적하며, 생성형 AI 모델을 호출하는 코드와 함께 배포합니다.

대부분의 개발자는 포함된 Dotprompt 라이브러리가 Genkit의 프롬프트 작업에 대한 요구사항을 충족한다는 점을 알게 될 것입니다. 그러나 프롬프트를 직접 사용한 대체 방법도 지원됩니다.

프롬프트 정의

Genkit의 생성 도우미 함수는 문자열 프롬프트를 허용하며, 간단한 사용 사례에서는 이러한 방식으로 모델을 호출할 수 있습니다.

genkit.Generate(context.Background(), g,
	ai.WithModel(model),
	ai.WithTextPrompt("You are a helpful AI assistant named Walt."))

대부분의 경우 프롬프트에 사용자가 제공한 입력을 일부 포함해야 합니다. 다음과 같이 렌더링하는 함수를 정의할 수 있습니다.

func helloPrompt(name string) *ai.Part {
	prompt := fmt.Sprintf("You are a helpful AI assistant named Walt. Say hello to %s.", name)
	return ai.NewTextPart(prompt)
}

response, err := genkit.GenerateText(context.Background(), g,
	ai.WithModel(model),
	ai.WithMessages(ai.NewUserMessage(helloPrompt("Fred"))))

그러나 코드에서 프롬프트를 정의할 때 한 가지 단점은 테스트 시 프롬프트를 흐름의 일부로 실행해야 한다는 점입니다. 보다 빠른 반복을 용이하게 하기 위해 Genkit는 프롬프트를 정의하고 개발자 UI에서 실행하는 기능을 제공합니다.

DefinePrompt 함수를 사용하여 Genkit에 프롬프트를 등록합니다.

type HelloPromptInput struct {
	UserName string
}
helloPrompt := genkit.DefinePrompt(
	g,
	"prompts",
	"helloPrompt",
	nil, // Additional model config
	jsonschema.Reflect(&HelloPromptInput{}),
	func(ctx context.Context, input any) (*ai.ModelRequest, error) {
		params, ok := input.(HelloPromptInput)
		if !ok {
			return nil, errors.New("input doesn't satisfy schema")
		}
		prompt := fmt.Sprintf(
			"You are a helpful AI assistant named Walt. Say hello to %s.",
			params.UserName)
		return &ai.ModelRequest{Messages: []*ai.Message{
			{Content: []*ai.Part{ai.NewTextPart(prompt)}},
		}}, nil
	},
)

프롬프트 작업은 GenerateRequest를 반환하는 함수를 정의하며 이는 모든 모델에서 사용할 수 있습니다 원하는 경우 프롬프트의 입력 스키마도 정의할 수 있습니다. 이는 흐름의 입력 스키마와 유사합니다. 또한 프롬프트는 온도 또는 출력 토큰의 수와 같은 모든 일반적인 모델 구성 옵션을 정의할 수 있습니다.

제공된 도우미 함수를 사용하여 이 프롬프트를 모델 요청에 렌더링할 수 있습니다. 프롬프트에서 예상되는 입력 변수와 호출할 모델을 제공합니다.

request, err := helloPrompt.Render(context.Background(), HelloPromptInput{UserName: "Fred"})
if err != nil {
	return err
}
response, err := genkit.GenerateWithRequest(context.Background(), g, model, request, nil, nil)

Genkit 개발자 UI에서 이 방식으로 정의한 모든 프롬프트를 실행할 수 있습니다. 이렇게 하면 프롬프트가 사용되는 흐름의 범위를 벗어나 개별 프롬프트를 실험할 수 있습니다.

Dotprompt

Genkit에는 프롬프트에 기능을 추가하는 Dotprompt 라이브러리가 포함됩니다.

  • .prompt 소스 파일에서 프롬프트 로드
  • Handlebars 기반 템플릿
  • 여러 번의 프롬프트 템플릿 및 멀티미디어 콘텐츠 지원
  • 간결한 입력 및 출력 스키마 정의
  • generate()를 통한 능숙한 사용

생성형 AI 워크플로를 조정, 배포, 모니터링하기 위한 코드 중심 프레임워크입니다.

업데이트됨 Jan 25, 2025

생성형 AI 워크플로를 조정, 배포, 모니터링하기 위한 코드 중심 프레임워크입니다.

업데이트됨 Jan 25, 2025

생성형 AI 워크플로를 조정, 배포, 모니터링하기 위한 코드 중심 프레임워크입니다.

업데이트됨 Jan 25, 2025