Semantic Kernel 프롬프트 YAML 스키마 참조
Semantic Kernel 프롬프트 YAML 스키마 참조
출처: 공식문서
Semantic Kernel 프롬프트의 YAML 스키마 참조는 YAML 프롬프트의 상세 레퍼런스로, 지원되는 모든 YAML 문법과 그 옵션을 정리한 문서예요.
정의
name
이 설정으로 프롬프트 함수를 만들 때 기본으로 사용할 함수 이름이에요. name이 null이거나 비어 있으면 함수를 만들 때 랜덤 이름이 동적으로 생성돼요.
description
이 설정으로 프롬프트 함수를 만들 때 기본으로 사용할 함수 설명이에요.
template_format
Semantic Kernel 템플릿 형식의 식별자예요. Semantic Kernel은 다음 템플릿 형식을 지원해요.
- semantic-kernel - 내장된 Semantic Kernel 형식.
- handlebars - Handlebars 템플릿 형식.
- liquid - Liquid 템플릿 형식.
template
프롬프트를 정의하는 프롬프트 템플릿 문자열이에요.
input_variables
프롬프트 템플릿이 사용하는 입력 변수의 모음이에요. 각 입력 변수는 다음 속성을 가져요.
name- 변수의 이름.description- 변수의 설명.default- 선택적인 변수의 기본값.is_required- 변수가 (선택이 아니라) 필수인지 여부. 기본값은true.json_schema- 이 변수를 설명하는 선택적인 JSON 스키마.allow_dangerously_set_content- 변수 값을 잠재적으로 위험한 콘텐츠로 다룰지 여부를 나타내는 불리언 값. 기본값은false. 자세한 내용은 프롬프트 인젝션 공격 대비하기를 참고해요.
[!TIP]
allow_dangerously_set_content의 기본값은 false예요. true로 설정하면 입력 변수의 값이 안전한 콘텐츠로 처리돼요. 채팅 완성(chats completion) 서비스에 쓰는 프롬프트에서는 프롬프트 인젝션 공격을 막기 위해 false로 설정해야 해요. Text-To-Image 같은 다른 AI 서비스를 쓸 때는 더 복잡한 프롬프트를 허용하기 위해 true로 설정할 수 있어요.
output_variable
프롬프트 템플릿이 사용하는 출력 변수예요. 출력 변수는 다음 속성을 가져요.
description- 변수의 설명.json_schema- 이 변수를 설명하는 JSON 스키마.
execution_settings
프롬프트 템플릿이 사용하는 실행 설정의 모음이에요. 실행 설정은 서비스 ID, 또는 기본 실행 설정을 뜻하는 default를 키로 갖는 사전(dictionary)이에요. 각 PromptExecutionSettings의 서비스 ID는 사전의 키와 일치해야 해요.
각 항목은 다음 속성을 가져요.
service_id- 이 설정을 적용할 서비스를 식별해요. 예를 들어 azure_openai_eastus, openai, ollama, huggingface 등.model_id- 이 설정을 적용할 AI 모델을 식별해요. 예를 들어 gpt-4, gpt-3.5-turbo.function_choice_behavior- LLM이 함수를 선택하고 AI 커넥터가 함수를 호출하는 방식을 정의하는 동작이에요. 자세한 내용은 Function Choice Behaviors를 참고해요.
[!TIP] 서비스 식별자를 제공하면 그 값이 실행 설정 사전 모음의 키가 돼요. 제공하지 않으면 서비스 식별자는
default로 설정돼요.
Function Choice Behavior
함수 호출을 비활성화하고 모델이 사용자에게 보여줄 메시지만 생성하게 하려면, 속성을 null(기본값)로 설정해요.
auto- 함수를 호출할지, 호출한다면 어떤 함수를 호출할지 모델이 결정하도록 허용해요.required- 모델이 항상 하나 이상의 함수를 호출하도록 강제해요.none- 모델이 어떤 함수도 호출하지 않고 사용자에게 보여줄 메시지만 생성하도록 지시해요.
allow_dangerously_set_content
함수에서 프롬프트에 잠재적으로 위험한 콘텐츠를 삽입하도록 허용할지 여부를 나타내는 불리언 값이에요. 기본값은 false예요. true로 설정하면 함수의 반환 값만 안전한 콘텐츠로 처리돼요. 채팅 완성 서비스에 쓰는 프롬프트에서는 프롬프트 인젝션 공격을 막기 위해 false로 설정해야 해요. Text-To-Image 같은 다른 AI 서비스를 쓸 때는 더 복잡한 프롬프트를 허용하기 위해 true로 설정할 수 있어요. 자세한 내용은 프롬프트 인젝션 공격 대비하기를 참고해요.
샘플 YAML 프롬프트
아래는 Handlebars 템플릿 형식을 사용하고, gpt-3 모델과 gpt-4 모델에 각각 다른 temperature를 설정한 샘플 YAML 프롬프트예요.
name: GenerateStory
template: |
Tell a story about {{topic}} that is {{length}} sentences long.
template_format: handlebars
description: A function that generates a story about a topic.
input_variables:
- name: topic
description: The topic of the story.
is_required: true
- name: length
description: The number of sentences in the story.
is_required: true
output_variable:
description: The generated story.
execution_settings:
service1:
model_id: gpt-4
temperature: 0.6
service2:
model_id: gpt-3
temperature: 0.4
default:
temperature: 0.5