프롬프트

프롬프트 조작은 앱 개발자가 생성형 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()를 통한 유능한 사용