콘텐츠로 이동

프롬프트 함수 (Prompt Functions)

프롬프트 함수는 반복 가능한 작업을 자동화하기 위해 프롬프트를 함수처럼 정의하고 재사용합니다. 같은 작업을 여러 번 해야 할 때 매우 효율적입니다.

핵심 개념

1. 프롬프트 함수란?

프롬프트 함수는 특정 작업을 수행하는 재사용 가능한 프롬프트입니다:

【프롬프트 함수의 구조】
function_name: [함수명]
input: [입력 파라미터]
rule: [작업 방식/규칙]

【호출 방식】
function_name(input_value)

장점: - 일관된 결과 - 시간 절약 - 복잡한 작업 자동화 - 함수 조합으로 더 복잡한 워크플로우 구현

2. 프롬프트 함수의 구성 요소

함수명 (Function Name): 짧고 기억하기 쉬운 이름 - 예: summarize, classify, translate, extract

입력 (Input): 함수가 받을 파라미터 - 단일 입력: text - 다중 입력: text, language, format

규칙 (Rule): 입력을 처리하는 방식 - 역할 정의: “당신은 번역가입니다” - 작업 정의: “텍스트를 번역해주세요” - 제약사항: “한국어로 작성해주세요”

3. 프롬프트 함수 사용 패턴

패턴 예시 사용 경우
단일 함수 summarize(article) 한 가지 작업
순차 함수 summarize(article)translate(result) 여러 단계
함수 체이닝 translate(summarize(article)) 파이프라인
파라미터 함수 classify(text, category_list) 유연한 실행

실무 활용 예제

예제 1: 번역 함수 정의 (한국어)

프롬프트

안녕하세요! 저는 특정 함수를 정의하여 AI의 능력을 활용하려고 합니다.
이 형식으로 정의된 함수를 이해하고 사용해주세요.

【함수 정의 메타프롬프트】

function_name: [함수명]
input: [입력값]
rule: [작업 규칙]

이 형식으로 정의된 함수를 호출하면 규칙에 따라 처리해주세요.
호출 형식은 function_name(input_value)입니다.

이해하셨으면 “네”라고만 답해주세요.

함수 정의

【함수 정의 1: 한영 번역】
function_name: [translate_ko2en]
input: [“text”]
rule: [당신은 프로 번역가입니다.
주어진 한국어 텍스트를 자연스러운 영어로 번역하세요.
기술용어는 원문 그대로 남기고,
격식 있는 표현을 사용해주세요.
번역문만 출력해주세요.]

【함수 정의 2: 요약】
function_name: [summarize]
input: [“text”]
rule: [주어진 텍스트를 간결하게 요약해주세요.
원본의 50% 길이 이내로 압축하고,
핵심 내용만 포함해주세요.
마크다운 bullet point 형식으로 출력해주세요.]

【함수 정의 3: 감정 분석】
function_name: [sentiment_analysis]
input: [“text”]
rule: [주어진 텍스트의 감정을 분석해주세요.
결과는 다음 형식으로:
{
  “sentiment”: “긍정/부정/중립”,
  “score”: 0-1 (확실도),
  “reason”: “분석 근거”
}]

사용 예시

【함수 호출】

1. 단일 함수:
translate_ko2en('안녕하세요, 저는 AI 전문가입니다.')

2. 순차 함수:
summarize(translate_ko2en('이것은 매우 긴 한국어 문서입니다...'))

3. 체이닝:
sentiment_analysis(translate_ko2en('정말 좋은 제품입니다!'))

예제 2: 고객 지원 함수 시스템

함수 정의

【고객 지원 자동화 함수 세트】

함수 1: 문의 분류
function_name: [classify_inquiry]
input: [“customer_message”]
rule: [고객 메시지의 유형을 분류해주세요.
카테고리: 배송문제/상품불량/반품/A/S/기타
결과: {category, priority(HIGH/MEDIUM/LOW)}
설명은 하지 말고 결과만 JSON으로 출력해주세요.]

함수 2: 자동 응답
function_name: [auto_response]
input: [“category”, “priority”]
rule: [주어진 카테고리와 우선순위에 맞는
표준 응답 메시지를 생성해주세요.
고객이 읽기 좋도록 친근한 톤으로 작성하고,
명확한 다음 단계를 제시해주세요.]

함수 3: 데이터 추출
function_name: [extract_details]
input: [“customer_message”]
rule: [고객 메시지에서 다음 정보를 추출해주세요:
- 주문 번호
- 제품명
- 문제 설명
- 요청사항

결과는 JSON 형식으로:
{
  “order_id”: “...”,
  “product”: “...”,
  “issue”: “...”,
  “request”: “...”
}]

워크플로우

【자동 응답 워크플로우】

고객 문의 수신
classify_inquiry(customer_message) → 분류 결과
extract_details(customer_message) → 주문 정보
auto_response(category, priority) → 답변 생성
고객에게 자동 응답 발송

예제 3: 콘텐츠 작성 함수 파이프라인

함수 정의

【콘텐츠 작성 함수】

함수 1: 아이디어 생성
function_name: [brainstorm]
input: [“topic”, “count”]
rule: [주어진 주제로 ${count}개의 창의적인 아이디어를 생성해주세요.
각 아이디어는 한 문장으로 표현하고,
다양한 각도에서의 접근을 포함해주세요.
bullet point 형식으로 출력해주세요.]

함수 2: 제목 생성
function_name: [generate_titles]
input: [“topic”, “style”]
rule: [주어진 주제로 5개의 매력적인 제목을 생성해주세요.
스타일: 클릭 유도(clickbait이 아닌)/정보성/신비로움
각 제목은 10단어 이내여야 합니다.
번호를 매겨서 출력해주세요.]

함수 3: 본문 초안
function_name: [draft_content]
input: [“title”, “target_length”, “tone”]
rule: [주어진 제목으로 본문 초안을 작성해주세요.
- 길이: ${target_length}단어
- 톤: ${tone}
- 구조: 소개 → 본론 → 결론
- 마크다운 형식으로 작성해주세요.]

함수 4: 편집
function_name: [edit]
input: [“text”, “style”]
rule: [텍스트를 ${style} 톤으로 편집해주세요.
- 문법과 맞춤법 확인
- 가독성 향상
- 불필요한 반복 제거
- 더 강력한 표현으로 수정
편집된 텍스트만 출력해주세요.]

사용 시나리오

【시나리오: 블로그 글 작성】

Step 1: 아이디어 생성
brainstorm(“AI의 미래”, 5)

Step 2: 최고의 아이디어를 기반으로 제목 생성
generate_titles(“AI가 일자리를 빼앗을까?”, “신비로움”)

Step 3: 선택한 제목으로 본문 작성
draft_content(“AI 시대, 인간만이 할 수 있는 일은?”, 1000, “전문적이면서도 접근 가능한”)

Step 4: 최종 편집
edit(draft_content_result, “매력적이고 친근한”)

예제 4: 다중 파라미터 함수

프롬프트

【다중 파라미터 함수 정의】

함수: 비밀번호 생성기
function_name: [generate_password]
input: [“length”, “uppercase”, “lowercase”, “numbers”, “special”]
rule: [다음 사양에 맞는 비밀번호를 생성해주세요:
- 길이: ${length}자
- 대문자: ${uppercase}개 포함
- 소문자: ${lowercase}개 포함
- 숫자: ${numbers}개 포함
- 특수문자: ${special}개 포함

생성된 비밀번호만 출력해주세요. 설명은 하지 말아주세요.]

사용 예시

【함수 호출】

generate_password(length=12, uppercase=2, lowercase=6, numbers=2, special=2)
→ 예: Xy9$mP#kQw2L

generate_password(16, 3, 8, 3, 2)
→ 예: MnX9p$kL#vQ2wYz&B4

💡 실전 팁

!!! tip “효과적인 함수 설계”

1. **명확한 함수명**: 기능을 한 단어로 표현
   ```
   ○ summarize, translate, classify
   × process_text_with_ai
   ```

2. **제약사항 추가**: 원하지 않는 출력 방지
   ```
   “설명 없이 결과만 제시해주세요”
   “마크다운 형식으로 출력해주세요”
   “JSON 형식으로 반환해주세요”
   ```

3. **테스트 후 저장**: 잘 작동하는 함수 저장
   - 노션, 옵시디언 등에 기록
   - 템플릿화하여 재사용
   - 버전 관리

4. **함수 조합**: 복잡한 작업을 단순한 함수로 구성
   ```
   final_result = edit(draft_content(generate_titles(brainstorm(topic))))
   ```

5. **기본값 설정**: 명시하지 않은 경우의 기본 동작
   ```
   tone: 미명시 시 “전문적이고 친근한”
   length: 미명시 시 “원본의 50%”
   ```

!!! tip “함수 문서화”

```
함수 이름: summarize
목적: 긴 텍스트를 간단히 요약
입력: text (string)
출력: summary (string)
사용 예: summarize(“이것은 매우 긴 문서...”)
주의사항: 원본 길이의 50% 이상 줄지 않음
```

프롬프트 함수 라이브러리 구축

추천 함수들

【텍스트 처리】
- translate (번역)
- summarize (요약)
- expand (확장)
- simplify (단순화)
- proofread (교정)

【데이터 처리】
- extract (추출)
- classify (분류)
- parse (파싱)
- normalize (정규화)

【창의적 작업】
- brainstorm (아이디어)
- generate (생성)
- refine (다듬기)

【분석】
- analyze_sentiment (감정 분석)
- analyze_tone (톤 분석)
- fact_check (사실 검증)

📝 핵심 정리

항목 내용
핵심 개념 재사용 가능한 프롬프트 템플릿
장점 일관성, 자동화, 효율성 향상
구성요소 함수명, 입력, 규칙
사용 패턴 단일/순차/체이닝
저장 방식 노션, 옵시디언, 깃허브 등
확장성 함수 조합으로 복잡한 작업 처리
활용 분야 콘텐츠 제작, 데이터 처리, 고객 지원