+ 개발

프롬프트 기반 텍스트 처리와 자동화

AI.Logger 2024. 10. 9. 00:25
  • 수업 내용 리마인드 및 아카이빙 목적의 업로드


 

인공지능(AI) 기술이 발전하면서, 특히 프롬프트 엔지니어링을 통해 다양한 방식으로 텍스트를 처리하고 자동으로 응답을 생성하는 작업이 점차 보편화되고 있습니다. 프롬프트 엔지니어링을 적절히 활용하면, AI는 더욱 정확하고 유용한 답변을 제공할 수 있으며, 이를 통해 비즈니스와 학습, 콘텐츠 관리 등 다양한 분야에서 큰 효율성을 얻을 수 있습니다.

이번 글에서는 실전에서 활용할 수 있는 프롬프트 기반의 텍스트 처리 및 자동화 기법을 다양한 예시를 통해 설명하고, AI의 기능을 활용해 어떻게 더 스마트하게 작업할 수 있는지 알아보겠습니다.

 

1. 프롬프트 기반 제목 다듬기: 비속어 필터링 및 자동 수정

1) 자동 제목 수정

사용자들이 작성한 제목에서 비속어를 자동으로 필터링하고, 필요시 제목을 수정하는 기능은 온라인 커뮤니티나 콘텐츠 플랫폼에서 매우 유용합니다. 여기서는 AI에게 게시판 관리자 역할을 부여해, 비속어가 포함된 제목을 수정하거나 비속어가 없을 경우 제목을 그대로 유지하도록 할 수 있습니다.

 

2) 사용 예시

다음은 AI를 통해 사용자 입력의 제목에서 비속어를 제거하는 코드입니다.

import openai

# OpenAI API 클라이언트 초기화
client = openai.OpenAI(api_key="your-api-key")

# 사용자 입력
title = "ChatGPT보다 Gemini가 좋다는 놈들이 있던데"

# 프롬프트 정의
user_prompt = f"""
다음은 사용자가 작성한 컨텐츠의 제목입니다. 
비속어를 제거하고 다시 작성해주세요.
비속어가 없을 경우 제목을 유지해주세요.

# 제목
{title}
"""

# AI 모델을 사용해 응답 생성
completion = client.chat.completions.create(
    model='gpt-3.5-turbo',
    messages=[
        {
            'role': 'system',
            'content': '당신은 게시판 관리자 입니다.'
        },
        {
            'role': 'user',
            'content': user_prompt
        }
    ],
    temperature=0,
)

# 수정된 제목 출력
print(completion.choices[0].message.content)

- 실행 결과

AI는 비속어 "놈들"을 "분들"로 바꾸어 결과를 제공합니다.

  • 입력: ChatGPT보다 Gemini가 좋다는 놈들이 있던데
  • 출력: ChatGPT보다 Gemini가 좋다는 분들이 있던데

이 코드는 제목 수정 자동화를 통해 플랫폼에서 건전한 커뮤니케이션을 장려할 수 있습니다.

 

2. 영어 단어장 자동 생성: 가사나 텍스트 기반으로 단어 추출 및 사전 생성

1) 영어 단어장 자동 생성

영어 학습에서 유용한 또 하나의 AI 기능은, 주어진 텍스트(예: 노래 가사)에서 명사, 동사, 형용사를 추출해 단어장을 생성하는 것입니다. 이 기능을 통해 한국어 번역, 유사어, 예문 등을 자동으로 생성할 수 있어, 학습에 매우 유용합니다.

 

2) 사용 예시

다음은 노래 가사에서 단어를 추출해 단어장을 생성하는 코드입니다.

from string import Template

# 사용자 가사 입력
lyrics = """First of all I would've never looked back at you..."""

# 프롬프트 정의
user_prompt = Template("""
다음은 노래가사야.
노래가사에서 명사, 동사, 형용사를 뽑아서 사전을 만들거야. 
각 단어의 한국어 의미, 품사, 유사어, 예문을 제공해줘.

--제외어--
명사: I, my, me, mine, you, your, yours, it, its
동사: is, are, am

--가사--
$lyrics
""")

# AI 모델을 사용해 응답 생성
completion = client.chat.completions.create(
    model='gpt-3.5-turbo',
    messages=[
        {
            'role': 'user',
            'content': user_prompt.substitute(lyrics=lyrics)
        }
    ],
    temperature=0,
    response_format={'type': 'json_object'}
)

# 단어장 출력
print(completion.choices[0].message.content)

- 실행 결과 (예시)

AI는 JSON 형식으로 단어장을 출력합니다. 예를 들어:

{
  "1": {
    "num": 1,
    "word": "back",
    "meaning": "뒤",
    "synonym": "rear",
    "example": "I would've never looked back at you",
    "part": "명사"
  },
  "2": {
    "num": 2,
    "word": "chase",
    "meaning": "뒤쫓다",
    "synonym": "pursue",
    "example": "If you didn't chase me I would not be with you",
    "part": "동사"
  }
}

이러한 기능은 자동 영어 단어장 생성에 매우 유용하며, 학습자들이 다양한 텍스트를 기반으로 단어를 배우는 데 도움이 됩니다.

 

3. 면접 질문 자동 생성: 하드 스킬과 소프트 스킬 구분

1) 채용 면접 질문 자동 생성

AI는 채용 공고를 분석해 지원자에게 적합한 면접 질문을 자동으로 생성할 수 있습니다. 이 과정에서 AI는 하드 스킬소프트 스킬을 구분하여 질문을 제안합니다. 이를 통해 면접관은 준비 과정을 크게 단축할 수 있습니다.

 

2) 사용 예시

다음은 시니어 데이터 엔지니어 직군의 면접 질문을 자동 생성하는 코드입니다.

# 채용 공고 정보
position = "시니어 데이터 엔지니어"
main_tasks = """
• GCP, AWS 등 클라우드 기반 데이터베이스 및 플랫폼 운영
• 데이터 아키텍처 설계 및 관리
"""
requirements = """
• 데이터 엔지니어 경력 5년 이상
• 클라우드 기반 데이터 아키텍처 설계 및 운영 경험
"""
qualifications = """
• Apache Spark, Kafka 활용 경험
"""

# 프롬프트 작성
user_prompt = f"""
다음은 {position}의 채용 공고입니다.

--주요 업무--
{main_tasks}

--자격 요건--
{requirements}

--우대 사항--
{qualifications}

이 직업에 대한 예상 면접 질문을 하드 스킬과 소프트 스킬로 나누어 작성해주세요. 각 섹션에 5개 항목씩 적어주세요.
"""

# AI 모델을 사용해 면접 질문 생성
completion = client.chat.completions.create(
    model='gpt-4',
    messages=[
        {
            'role': 'system',
            'content': '당신은 면접관입니다.'
        },
        {
            'role': 'user',
            'content': user_prompt
        }
    ],
    temperature=0
)

# 면접 질문 출력
print(completion.choices[0].message.content)

- 실행 결과

AI는 하드 스킬과 소프트 스킬을 구분하여 면접 질문을 생성합니다.

  • 하드 스킬 질문: "클라우드 기반 데이터 아키텍처 설계 경험에 대해 설명해 주세요."
  • 소프트 스킬 질문: "팀 내에서의 리더십 경험을 설명해 주세요."

이와 같은 자동화된 질문 생성은 면접 과정에서 시간 절약질문 준비의 일관성을 보장해줍니다.

 

4. 분기 처리 및 Chaining 기법: 복잡한 상호작용 관리

1) 분기 처리 기반 응답 생성

프롬프트 chaining 기법을 통해 AI는 이전 대화를 기억하고, 대화 맥락을 유지하면서 응답을 생성할 수 있습니다. 이는 특히 복잡한 문맥 기반 상호작용에서 유용합니다.

 

2) 사용 예시

게시글의 종류에 따라 AI가 자동으로 삭제하거나 댓글을 생성하는 작업을 수행합니다.

from string import Template

# 프롬프트 작성
system_prompt = """
당신은 게시판 관리자입니다. 게시글의 종류에 따라 다음 작업을 수행합니다.

- 광고/홍보: 삭제
- 고민 상담: 댓글 작성
- 기타: 게시판 이동
"""

posting = "프롬프트 엔지니어가 되려면 어떻게 해야 하나요?"

# 게시글의 종류에 따라 처리
context_prompt = Template("""
다음은 사용자가 작성한 게시글입니다.
$posting
""")

# AI 모델을 사용해 응답 생성
completion = client.chat.completions.create(
    model='gpt-4',
    messages=[
        {
            'role': 'system',
            'content': system_prompt
        },
        {
            'role': 'user',
            'content': context_prompt.substitute(posting=posting)
        }
    ],
    temperature=0
)

# 결과 출력
print(completion.choices[0].message.content)

- 실행 결과

AI는 게시글의 내용을 분석한 후, 이에 맞는 작업을 수행합니다.

  • 광고/홍보 게시글: 삭제
  • 고민 상담 게시글: "프롬프트 엔지니어가 되려면 AI와 NLP 관련 지식을 쌓고, 실습을 통해 경험을 축적하세요."

 

이번 글에서는 AI를 활용한 다양한 프롬프트 처리자동화 기법을 살펴보았습니다. 비속어 필터링, 영어 단어장 생성, 면접 질문 자동 생성 등 다양한 상황에서 AI를 효율적으로 사용할 수 있으며, chaining 기법을 통해 연속적인 대화 흐름을 유지할 수 있음을 확인했습니다.