메시지

프롬프트 조작은 앱 개발자가 생성형 AI 모델의 출력을 이해하는 데 도움이 됩니다. 예를 들어 LLM을 사용할 때는 프롬프트의 어조, 형식, 길이 및 기타 특성에 확인할 수 있습니다

Genkit는 프롬프트가 코드라는 전제 하에 설계되었습니다. 사용자는 소스 파일의 프롬프트를 유지하고, 동일한 버전을 사용하여 변경사항 추적 코드 및 제어 시스템의 하위 집합일 수 있으며 코드와 함께 생성형 AI 모델이라고 부르는 AI 모델입니다

대부분의 개발자는 포함된 Dotprompt 라이브러리가 Genkit의 프롬프트 사용에 대한 요구사항을 충족하는지 확인합니다. 그러나 프롬프트를 직접 사용하여 지원할 수도 있습니다

프롬프트 정의

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

Go

request := ai.GenerateRequest{Messages: []*ai.Message{
  {Content: []*ai.Part{ai.NewTextPart("You are a helpful AI assistant named Walt.")}},
}}
model.Generate(context.Background(), &request, nil)

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

Go

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)
}
request := ai.GenerateRequest{Messages: []*ai.Message{
  {Content: []*ai.Part{helloPrompt("Fred")}},
}}
response, err := model.Generate(context.Background(), &request, nil)

그러나 코드에서 프롬프트를 정의할 때 한 가지 단점은 이를 흐름의 일부로 사용할 수 있습니다 보다 빠른 반복을 용이하게 하기 위해 Genkit는 를 사용하여 프롬프트를 정의하고 개발자 UI에서 실행하세요.

Go

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

type HelloPromptInput struct {
  UserName string
}
helloPrompt := ai.DefinePrompt(
  "prompts",
  "helloPrompt",
  nil, // Additional model config
  jsonschema.Reflect(&HelloPromptInput{}),
  func(ctx context.Context, input any) (*ai.GenerateRequest, 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.GenerateRequest{Messages: []*ai.Message{
          {Content: []*ai.Part{ai.NewTextPart(prompt)}},
      }}, nil
  },
)

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

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

Go

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

Genkit 개발자 UI에서 이 방식으로 정의한 프롬프트를 실행할 수 있습니다. 이렇게 하면 흐름에 따라 다르기 때문입니다.

닷프롬프트

Genkit에는 Dotprompt 라이브러리가 포함되어 있어 기능을 제공합니다

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