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