4.4 코드 예제: 요약, 번역, 설명, Q&A, 문서 작성

이번 절에서는 OpenAI의 핵심 API 중 하나인 Chat Completions API를 활용한 실제 예제를 통해, 다양한 생성형 기능들을 어떻게 구현할 수 있는지 살펴보겠습니다. 각 예제는 다음과 같은 과제를 다루며, 실제 어플리케이션 개발에 필요한 요소들을 설명과 함께 코드로 제공합니다:

  • 텍스트 요약

  • 번역

  • 개념 설명

  • 질문과 답변 (Q&A)

  • 문서 작성 (각종 양식 자동화 포함)

예제는 Python 언어 기반으로, 공식 OpenAI Python SDK(openai 패키지)를 사용합니다. 사전에 openai 라이브러리를 pip install openai로 설치해주시고, API 키를 환경 변수로 등록해 주세요. 예:

export OPENAI_API_KEY="your-api-key-here"

또는 코드에서 직접 설정도 가능하지만 보안상의 이유로 환경 변수 사용을 권장합니다.

🧩 기본 환경 설정

import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

이제 본격적으로 항목별 실습에 진입하겠습니다.

4.4.1 텍스트 요약 (Summarization)

많은 비즈니스나 학술 애플리케이션에서 긴 텍스트를 간결하게 요약하는 기능은 매우 유용합니다. Chat Completions API를 활용하면 간단한 프롬프트 설계로 요약 작업을 수행할 수 있습니다.

예제 1: 뉴스 기사 요약

article = """
지난 금요일, 서울시는 도심 지역의 미세먼지 농도가 다시 나빠질 것으로 예보됨에 따라, 차량 2부제를 실시하고 대중교통 요금을 할인을 제공하기로 했습니다. 또한 초등학교 및 유치원에는 실외 수업 자제를 권고했습니다. 이러한 조치는 최근 계속된 대기 정체로 인한 초미세먼지 급증에 대응하기 위한 것입니다.
"""

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "당신은 훌륭한 문서 요약 전문가입니다."},
        {"role": "user", "content": f"다음 기사 내용을 요약해 주세요:\n\n{article}"}
    ],
    temperature=0.5,
    max_tokens=200
)

print(response['choices'][0]['message']['content'])

보충 설명

  • system 역할에서 모델의 역할을 “요약 전문가”로 정의합니다.

  • temperature는 낮게 설정하여 안정된 결과를 유도합니다.

  • 보다 짧은 요약이 필요하면 max_tokens 값을 줄이면 됩니다.

4.4.2 번역 (Translation)

GPT 계열 모델은 다국어 번역에도 매우 뛰어난 성능을 보입니다. Prompt를 통해 번역의 목적 혹은 스타일까지 지정할 수 있습니다.

예제 2: 한글 → 영어 번역

korean_text = "이 보고서는 2024년 1분기의 매출 실적을 포함하고 있습니다."

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "당신은 정확한 문서 번역가입니다."},
        {"role": "user", "content": f"다음을 영어로 번역해 주세요:\n\n{korean_text}"}
    ],
    temperature=0.3,
    max_tokens=200
)

print(response['choices'][0]['message']['content'])

고급 팁

  • 형식 유지를 원할 경우 "문장 구조를 유지해서 번역해 주세요", "비즈니스 문서 스타일로 번역하세요" 등 지시어를 함께 사용하세요.

  • 구어체 vs 문어체 번역 컨트롤도 system 프롬프트 또는 user 프롬프트에 명시적으로 표시할 수 있습니다.

4.4.3 개념 설명 (Explain a Concept)

이용자가 복잡하거나 어려운 개념을 설명해주는 챗봇을 만들 때 유용합니다.

🧪 예제 3: ‘벡터 연산’을 초등학생에게 설명

concept = "벡터 연산"

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "당신은 초등학생에게 어려운 개념을 쉽게 설명하는 선생님입니다."},
        {"role": "user", "content": f"{concept}에 대해 초등학생도 이해할 수 있게 설명해 주세요."}
    ],
    temperature=0.7,
    max_tokens=250
)

print(response['choices'][0]['message']['content'])

  • 대상 독자층에 따라 “비전공자 대상”, “임원 대상”, “고등학생 수준” 등 시스템 지시어를 조정하세요.

  • 그림으로 설명이 필요한 경우 Vision API와 결합이 가능합니다 (8장 참고).

────────────────────────────────────────

4.4.4 질문과 답변 (Q&A)

질의응답 기능은 검색, 고객 지원, 인터랙티브 학습 도구 등 다양한 도메인에 적용 가능합니다.

예제 4: 전문적인 Q&A 시스템

question = "GPT와 BERT의 가장 큰 차이점은 무엇인가요?"

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "당신은 인공지능 관련 질문에 전문가 수준으로 대답하는 Q&A 어시스턴트입니다."},
        {"role": "user", "content": question}
    ],
    temperature=0.6,
    max_tokens=400
)

print(response['choices'][0]['message']['content'])

요점 정리

  • 비즈니스 도메인에 맞춰 system 역할을 “세무 관련 상담가”, “보험담당 상담원” 등으로 구체화 가능

  • Embedding과 결합해 특정 문서 기반 응답만 활성화하는 QA 시스템도 구현 가능(6장 참조)

4.4.5 문서 작성 (Document Drafting)

서식 기반 문서, 이메일, 제안서, 보고서 작성 등을 Chat API로 자동화할 수 있습니다.

예제 5: 협업 제안 이메일 자동 생성

email_context = """
우리 회사는 HR SaaS 플랫폼을 운영 중이며, 귀사의 인사관리 솔루션과의 연동을 통해 시너지를 기대하고 있습니다.
"""

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "당신은 전문적인 비즈니스 이메일 작성자입니다."},
        {"role": "user", "content": f"다음 내용을 바탕으로 협업 제안 이메일 초안을 작성해 주세요:\n\n{email_context}"}
    ],
    temperature=0.5,
    max_tokens=300
)

print(response['choices'][0]['message']['content'])

예제 6: 이력서 항목 추천

resume_context = "소프트웨어 엔지니어로 백엔드 분야에서 3년 경력, Python과 Node.js 사용, PostgreSQL 경험 있음"

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "당신은 이력서 작성을 도와주는 커리어 코치입니다."},
        {"role": "user", "content": f"다음 정보를 바탕으로 이력서의 ‘주요 역량’ 항목을 작성해 주세요:\n\n{resume_context}"}
    ],
    temperature=0.4,
    max_tokens=200
)

print(response['choices'][0]['message']['content'])

문서 자동화 팁

  • 항목별 구조가 필요한 경우 JSON 형식 반환 요구도 가능 (7장에서 JSON Mode 설명).

  • 사용자 입력이 여러 필드로 분리되는 경우, 구조화된 프롬프트 또는 Function Calling API 활용을 고려하세요.

정리

Chat Completions API는 단순한 대화 응답을 넘어, 다양한 형태의 자연어 생성 작업에 폭넓게 활용될 수 있습니다. 본 절에서 살펴본 요약, 번역, 설명, 질의응답, 문서 생성 등은 대부분의 AI 서비스에서 기본적으로 요구되는 기능이며, 사용자의 목적과 문맥에 따라 프롬프트 설계 및 파라미터 조절을 통해 정확도 및 만족도를 높일 수 있습니다. 다음 장에서는 이러한 활용을 더 정교하게 만드는 프롬프트 엔지니어링 기법을 살펴보겠습니다. (Chapter 5 참조)

Last updated