프롬프트

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

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

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

프롬프트 정의

Genkit의 generate() 도우미 함수는 문자열 프롬프트를 허용하며, 직관적인 사용 사례를 위해 이러한 방식으로 모델을 호출할 수 있습니다.

import { generate } from '@genkit-ai/ai';

generate({
  model: 'googleai/gemini-1.5-flash-latest',
  prompt: 'You are a helpful AI assistant named Walt.',
});

대부분의 경우 프롬프트에 고객이 제공한 일부 입력을 포함해야 합니다. 이렇게 렌더링하는 함수를 정의할 수 있습니다.

function helloPrompt(name: string) {
  return `You are a helpful AI assistant named Walt. Say hello to ${name}.`;
}

generate({
  model: 'googleai/gemini-1.5-flash-latest',
  prompt: helloPrompt('Fred'),
});

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

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

import { definePrompt } from '@genkit-ai/ai';
import z from 'zod';

export const helloPrompt = definePrompt(
  {
    name: 'helloPrompt',
    inputSchema: z.object({ name: z.string() }),
  },
  async (input) => {
    const promptText = `You are a helpful AI assistant named Walt.
    Say hello to ${input.name}.`;

    return {
      messages: [{ role: 'user', content: [{ text: promptText }] }],
      config: { temperature: 0.3 }
    });
  }
);

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

코드에서 renderPrompt() 도우미 함수와 함께 이 메시지를 사용할 수 있습니다. 프롬프트에서 예상되는 입력 변수와 호출할 모델을 제공하세요.

import { generate, render } from '@genkit-ai/ai';

generate(
  renderPrompt({
    prompt: helloPrompt,
    input: { name: 'Fred' },
    model: 'googleai/gemini-1.5-flash-latest',
  })
);

Genkit 개발자 UI에서 이 방식으로 정의한 프롬프트를 실행할 수 있습니다. 이를 통해 해당 프롬프트가 사용될 수 있는 흐름의 범위를 벗어나는 개별 프롬프트를 실험할 수 있습니다.

닷프롬프트

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

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