다음을 통해 공유


프롬프트 엔지니어링 기술

OpenAI의 GPT-3, GPT-3.5, GPT-4 및 GPT-4o 모델은 프롬프트 기반입니다. 프롬프트 기반 모델에서 사용자는 텍스트 프롬프트를 입력하여 모델과 상호 작용하고 모델은 텍스트 완료로 응답합니다. 이렇게 완료하면 모델의 텍스트 입력이 계속됩니다.

이러한 모델은 매우 강력하지만 해당 동작은 프롬프트에 매우 민감하기도 합니다. 따라서 프롬프트 생성은 개발해야 하는 중요한 기술에 해당합니다.

프롬프트 생성이 어려울 수 있습니다. 실제로 프롬프트는 원하는 작업을 완료하기 위해 모델 가중치를 구성하는 역할을 하지만 과학이라기보다는 예술에 가깝기 때문에 성공적인 프롬프트를 만들기 위해서는 경험과 직관이 필요한 경우가 많습니다. 이 문서의 목표는 이 학습 프로세스를 시작하는 데 도움이 주기 위한 것입니다. 모든 GPT 모델에 적용되는 일반적인 개념과 패턴을 캡처하려고 합니다. 그러나 각 모델이 다르게 동작하므로 학습이 모든 모델에 동일하게 적용되지 않을 수 있음을 이해하는 것이 중요합니다.

기본 사항

이 섹션에서는 GPT 프롬프트의 기본 개념 및 요소에 대해 설명합니다.

텍스트 프롬프트는 사용자가 GPT 모델과 상호 작용하는 방법입니다. 모든 생성 언어 모델과 마찬가지로 GPT 모델은 이전 텍스트에서 따를 가능성이 가장 높은 다음 단어 시리즈를 생성하려고 시도합니다. 그것은 마치 우리가 내가 <prompt>라고 말할 때 당신의 마음에 떠오르는 첫 번째 생각은 무엇입니까?라고 말하는 것과 같습니다. 아래 예제에서는 이 동작을 보여 줍니다. 잘 알려진 콘텐츠의 첫 번째 단어를 제시하면 모델은 텍스트를 정확하게 계속할 수 있습니다.

프롬프트 Completion
Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal. […]
"Call me Ishmael." "Some years ago—never mind how long precisely—having little o no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world." […]

더 복잡한 프롬프트를 개발할 때는 이러한 기본 동작을 염두에 두는 것이 유용합니다. 제공된 프롬프트에 관계없이 모델은 학습 데이터 및 학습 대상을 고려할 때 가장 가능성이 높다고 판단되는 내용으로 응답하기만 하면 됩니다. 프롬프트에서 질문을 하는 경우 모델은 별도의 "Q&A" 코드 경로를 따르지 않으며, 대답이 입력으로 지정된 질문에 대한 가장 가능성이 높은 응답이므로 질문에 대답하는 것처럼 보입니다.

프롬프트 구성 요소

프롬프트의 서로 다른 부분 간에 구분이 없을 때 완료 API를 사용하는 경우 학습 및 토론으로 기본 프롬프트 구성 요소를 식별하는 것이 여전히 유용할 수 있습니다. 채팅 완료 API를 사용하면 연결된 역할(시스템, 사용자 및 도우미)이 있는 사전 배열 형식으로 API로 전송되는 프롬프트의 고유한 섹션이 제공됩니다. 이 지침은 하나의 API와 관련된 규범적 지침을 제공하는 대신, 프롬프트 생성을 고려하는 방식에 더 일반적으로 초점을 맞춥니다.

프롬프트를 분석하는 다른 유효한 방법이 있을 수 있지만 이 분석의 목표는 프롬프트 생성에 대해 비교적 간단한 고려 방식을 제공하는 것입니다. 완료 API를 사용하면 모든 구성 요소는 선택 사항이지만 하나 이상이 있어야 하며, 대부분의 프롬프트에는 둘 이상의 구성 요소가 포함됩니다. 구성 요소 사이에 회색 영역이 있을 수도 있습니다. 아래에 제시된 순서는 각 구성 요소가 사용되는 빈도(가장 많이 사용되는 것부터)와 거의 일치합니다.

지침

지침은 가장 일반적으로 사용되는 프롬프트 구성 요소일 수 있습니다. 지침은 단순합니다. 즉, 수행할 작업에 대해 모델에 제공되는 지침입니다. 개념에서는 간단하지만 실제로는 복잡할 수 있습니다. 다음 표에서는 두 가지 형식으로 간단한 지침과 좀 더 복잡한 지침을 모두 보여 줍니다.

명령 형식 프롬프트 Completion
간단한 지침 주간 뉴스레터 소개를 작성하세요. 주간 뉴스레터에 오신 것을 환영합니다. 이번 주에는 생산성에 특별히 초점을 둡니다. 여러분이 삶의 모든 영역에서 생산성을 유지하는 방법에 대한 팁과 트릭을 공유하려고 합니다. 즐겁게 살펴보시고 친구와도 공유해 보세요.
복잡한 지침 Contoso라는 회사로 보낼 주간 뉴스레터에 대한 소개를 작성하세요. 지난 주에 진행했던 대대적인 전사적 회의에 대해 언급하고 팀에 지난 몇 개월에 걸쳐 모두 열심히 일해준 점에 대한 감사 인사를 전하세요. Contoso의 주간 뉴스레터에 오신 것을 환영합니다! 지난 주에 대대적인 전사적 회의를 진행했으며 팀에게 지난 몇 개월에 걸쳐 모두 열심히 일해준 점에 대한 감사 인사를 전하고 싶습니다. 우리는 밝은 미래를 기대하며, 우리 팀의 전념과 헌신으로 위대한 성과를 거둘 것이라고 확신합니다. 우리 팀의 일원이 되어 주셔서 감사드리며 앞으로 몇 주, 몇 달 안에 여러분 모두와 함께 일할 수 있기를 기대합니다. [사용자 이름]님 감사합니다.
복잡한 지침 다음을 포함하는 주간 뉴스레터 소개를 작성하세요.
- 회사 이름 contoso
- 활기찬 인사말
- 몇 달 동안 열심히 일해준 점에 대해 감사
- 향후 분기에 대한 긍정적인 전망
- SLT의 서명
Hello Contoso 팀 여러분! 잠시 시간을 내서 지난 몇 달 동안 열심히 노력해 주신 것에 대해 감사를 전하고 싶었습니다. 정말 몇 개월 동안 힘들었지만 함께 일하면서 놀라운 성과를 거두었습니다. 저는 여러분 모두를 정말 자랑스럽게 생각합니다. 다음 분기를 앞두고 정말 긍정적인 마음입니다. 우리는 몇 가지 좋은 결과를 얻을 것으로 생각됩니다. 다시 한번 감사드립니다, 수석 리더십 팀 여러분.

기본 콘텐츠

기본 콘텐츠는 모델에 의해 처리되거나 변환되는 일종의 텍스트를 나타냅니다. 기본 콘텐츠는 일반적으로 지침과 함께 사용됩니다. 간단한 예제는 언어 번역입니다. 아래 예제에서는 영어 텍스트가 기본 콘텐츠로 간주되고 "프랑스어로 번역:"은 지침입니다.

프롬프트 Completion
Can you please tell me how to get to the museum?
Translate to French:
Pouvez-vous s'il vous plaît me dire comment aller au musée?

기본 콘텐츠가 훨씬 더 길어질 수도 있습니다. 다음 예제에서 기본 콘텐츠는 거의 300단어 길이의 시간 복잡도에 대한 Wikipedia 항목의 소개 섹션입니다. 이 콘텐츠는 쉽게 표시할 수 있도록 표에서는 약어로 사용되었습니다.

프롬프트 Completion
컴퓨터 과학에서 시간 복잡도은 알고리즘을 실행하는 데 걸리는 컴퓨터 시간의 크기를 설명하는 계산 복잡성입니다. 시간 복잡도는 일반적으로 [...](으)로 추정됩니다.
이전 텍스트를 몇 문장으로 요약하세요.
시간 복잡도는 알고리즘을 실행하는 데 걸리는 시간을 측정한 것입니다. 일반적으로 입력 크기의 함수로 표현됩니다. 가장 일반적인 측정값은 지정된 크기의 입력에 필요한 최대 시간에 해당하는 최악의 경우를 고려한 시간 복잡도입니다.
컴퓨터 과학에서 시간 복잡도은 알고리즘을 실행하는 데 걸리는 컴퓨터 시간의 크기를 설명하는 계산 복잡성입니다. 시간 복잡도는 일반적으로 [...](으)로 추정됩니다.
TL;DR(너무 길어서 읽지 않음)
알고리즘의 시간 복잡도는 알고리즘을 실행하는 데 걸리는 시간입니다. 시간 복잡도는 일반적으로 알고리즘에 의해 수행되는 기본 작업의 수를 계산하여 추정합니다(단, 각 기본 작업을 수행하는 데 고정된 시간이 소요되는 것으로 가정함). 시간 복잡도는 일반적으로 입력 크기의 함수로 표현됩니다.

GPT 모델은 구조화된 기본 콘텐츠를 처리할 수도 있습니다. 아래 예제에서는 벨기에의 맥주를 위한 TSV(이 문서에 표시하기 위해 사용하는 약어)가 프롬프트의 일부로 모델에 전달됩니다. 콘텐츠를 올바르게 해석하고 데이터에 대한 질문에 대답할 수 있습니다.

프롬프트 Completion
Belgian Beer Brands
Beer name Beer style color ABV Brewery
"Chimay Gold: ""Doree""" trappist pale ale gold 4.80% Chimay Brewery (official trappist)
"Chimay Blue: ""Grande Reserve""" trappist dark ale dark 9.00%
[…]
위의 표를 참조하면 ABV가 6% 미만인 맥주가 몇 개나 되나요?
표에는 ABV가 6% 미만인 10가지 맥주가 있습니다.

예제

성공적인 프롬프트는 종종 "원샷" 또는 "퓨샷" 러닝 연습에 의존합니다. 이것은 일반적으로 입력 및 출력 쌍을 포함하여 모델의 원하는 동작에 대한 하나 이상의 예제를 포함하는 것을 의미합니다. 이것은 모델이 영구적으로 변경된다는 점에서의 러닝이 아니며, 예제가 현재 유추에 대해서만 원하는 대로 응답하도록 모델을 더 잘 조건화한다는 것입니다. 예제가 없는 프롬프트를 사용하는 것을 "제로샷" 학습이라고도 합니다. 채팅 완료 API를 사용하는 퓨샷 러닝 예제는 일반적으로 초기 시스템 메시지 다음에 사용자/도우미 상호 작용 예제 형식으로 메시지 배열에 추가됩니다.

학습 유형 프롬프트 Completion
Zero-shot 헤드라인 : 코치는 부상 때문에 선수들이 이탈하지는 않을 것이라고 확신하다
항목:
코치는 부상 때문에 선수들이 경기 시즌을 이탈하지는 않을 것이라고 확신합니다. 팀은 여전히 목표에 초점을 맞추고 있으며 이를 달성하기 위해 계속 노력할 것입니다.
Few-shot 헤드라인: Twins의 Correa가 옵트아웃, 자유 계약 선수로 나섬
토픽: 야구
헤드라인: 카타르 월드컵에서 술 깨는 구역을 만들어야 하는 상황
토픽: 축구
헤드라인: Yates: 6주 동안 Fantasy football intel 진행
토픽: 풋볼
헤드라인 : 코치는 부상 때문에 선수들이 이탈하지는 않을 것이라고 확신하다
항목:
Basketball

위의 예제에서는 퓨샷 러닝 활용을 보여 줍니다. 예제가 없으면 모델은 원하는 동작을 추측하는 것처럼 보이지만 예제에서는 모델 작동 방법을 명확하게 보여 줍니다. 또한 모델의 성능도 보여 줍니다. 예제에서 '농구' 레이블이 없더라도 원하는 레이블 범주를 유추할 수 있습니다.

단서는 모델 출력에 대한 "점프 스타트" 역할을 하여 모델을 원하는 출력으로 안내하는 데 도움이 됩니다. 모델이 빌드되는 기반이 되는 접두 부분인 경우가 많습니다. 아래 예제에서는 핵심 요소를 포함하도록 스토리에 방향성을 제시하는 단서를 보여 줍니다. 단서는 종종 지침과 함께 사용되지만 항상 그런 것은 아닙니다. 아래 예제에서 모델은 긴 공지 메일을 요약하는 데 사용됩니다. 단서가 모델의 출력에 초점을 맞추는 경우도 있지만 특정 출력 형식(글머리 기호)을 제안하는 데 사용되기도 합니다.

채팅 완료 API의 컨텍스트에서 지침은 시스템 메시지의 형식을 따르며, 퓨샷 예제에는 모델의 기반을 구축하는 데 도움이 되는 일련의 예제 사용자/도우미 상호 작용이 제공됩니다.

단서 수 프롬프트 Completion
0 성능 검토는 Contoso의 성능 및 개발 접근 방식의 핵심 구성 요소입니다. […]
위의 메일 메시지를 요약하세요.
이 메일의 목적은 Contoso의 성능 및 개발 접근 방식의 일부인 성능 검토 환경의 최근 변경 내용을 직원에게 알리는 것입니다. 변경 내용에는 향상된 구조, 업그레이드된 도구 내 사용자 환경 및 핵심 프롬프트가 포함됩니다. 또한 이제 직원들이 관리자와 논의하려는 토픽 플래그를 지정하기 위한 선택적 대화 시작 섹션이 있습니다.
1 성능 검토는 Contoso의 성능 및 개발 접근 방식의 핵심 구성 요소입니다. […]
위의 메일 메시지를 요약하세요.
메시지의 핵심 사항은
Contoso는 핵심 우선 순위, 기대치 및 영향에 좀 더 집중함으로써 성능 검토 환경을 개선하고 있습니다. 또한 팁, 리소스 및 지침을 사용하여 도구 내 사용자 환경을 업그레이드하고 있습니다. 마지막으로, 전사적인 핵심 우선 순위를 활성화하는 방법에 대한 지침을 추가하고 있습니다.
2 성능 검토는 Contoso의 성능 및 개발 접근 방식의 핵심 구성 요소입니다. […]
위의 메일 메시지를 요약하세요.
핵심 내용:
Contoso는 직원의 피드백에 따라 성능 검토 환경에 변경을 도입하고 있습니다.
• 변경에는 핵심 우선 순위, 기대치 및 영향에 대한 새로운 포커스, 업그레이드된 사용자 환경 및 전사적인 핵심 우선 순위에 대한 새로운 지침이 포함됩니다.
• 성과 평가는 과거의 성과와 러닝 상황을 고찰하고 미래의 우선 순위와 성장 기회를 계획하는 시간입니다.
• 직원 및 관리자는 성과 평가 회의에 앞서 의견을 작성해야 합니다.
• 연간 2회 이상의 성능 평가가 진행되어야 합니다.
• 각 평가에 대한 투자 시간은 거의 동일하게 유지해야 합니다.

지원 콘텐츠

콘텐츠 지원은 모델이 어떤 방식으로든 출력에 영향을 주는 데 활용할 수 있는 정보입니다. 작업의 기본 대상이 아니지만 일반적으로 기본 콘텐츠와 함께 사용된다는 점에서 기본 콘텐츠와 다릅니다. 일반적인 예로는 현재 날짜, 사용자 이름, 사용자 기본 설정 등과 같은 컨텍스트 정보가 포함됩니다. 아래 예제에서는 지원 콘텐츠를 사용하여 사용자를 위해 계획된 워크샵 모음을 구성합니다. 지원(중요 토픽)이 없으면 모델은 단순히 워크샵을 나열하고(여기서는 표시를 위해 잘림) 중요 토픽을 알게 되면 모델은 회의를 정확하게 그룹화할 수 있습니다.

지원 내용 프롬프트 Completion
사용 안 함 워크샵 목록:
제목 설명
워크샵 시작 계획 저희와 함께 워크샵을 시작하세요! 리더들로부터 앞으로 1년 동안의 그룹 간 우선 순위와 러닝 계획에 대해 들어보세요. 이 이벤트에 대한 초대는 이미 [...]의 모든 사용자에게 전송되었습니다.
위의 워크샵을 요약하여 토픽별로 그룹화합니다.
워크샵 목록:
워크샵 시작 계획
-워크샵 마무리 계획
- 핵심 회의 일정
- 고객 중심 관점
-영향 및 주요 포커스 영역
-모범 사례
-앱 채택 가속화[...]
With 워크샵 목록:
제목 설명
워크샵 시작 계획 저희와 함께 워크샵을 시작하세요! 리더들로부터 앞으로 1년 동안의 그룹 간 우선 순위와 러닝 계획에 대해 들어보세요. 이 이벤트에 대한 초대는 이미 [...]의 모든 사용자에게 전송되었습니다.
내 중요 토픽: 프롬프트 엔지니어링, 검색, GPT 모델
위의 워크샵을 중요 토픽별로 그룹화해서 요약하세요.
1. 신속한 엔지니어링:
- 새로운 프롬프트 엔지니어링 팁
- 프롬프트 엔지니어링 기술
2. 검색:
-포함을 사용하는 벡터 검색 소개
3. GPT 모델:
- GPT-4 소개
- GPT-35-Turbo in-depth.

시나리오별 지침

프롬프트 엔지니어링의 원칙은 다양한 모델 형식에 걸쳐 일반화될 수 있지만 특정 모델은 특수한 프롬프트 구조가 필요합니다. Azure OpenAI GPT 모델의 경우 현재 프롬프트 엔지니어링이 작동하는 두 가지 고유한 API가 있습니다.

  • 채팅 완료 API.
  • 완료 API.

각 API에는 입력 데이터의 형식이 서로 달라야 하며 이는 결국 전반적인 프롬프트 디자인에 영향을 미칩니다. 채팅 완료 API는 GPT-35-Turbo 및 GPT-4 모델을 지원합니다. 이러한 모델은 사전 배열 내에 저장된 채팅과 유사한 특정 스크립트 형식의 입력을 받도록 설계되었습니다.

완료 API는 이전 GPT-3 모델을 지원하며 특정 형식 규칙 없이 텍스트 문자열을 사용한다는 점에서 훨씬 더 유연한 입력 요구 사항을 갖습니다.

이 섹션의 기술은 LLM(큰 언어 모델)을 사용하여 생성하는 응답의 정확도와 접지를 높이기 위한 전략을 설명합니다. 그러나 프롬프트 엔지니어링을 효과적으로 사용하더라도 모델이 생성하는 응답의 유효성을 검사해야 한다는 점을 기억하는 것이 중요합니다. 신중하게 제작된 프롬프트가 특정 시나리오에 잘 작동했다고 해서 반드시 특정 사용 사례에 더 광범위하게 일반화된다는 의미는 아닙니다. LLM의 한도를 이해하는 것은 LLM의 강점을 활용하는 방법을 이해하는 것만큼 중요합니다.

이 가이드에서는 채팅 완료 메시지 구조의 메커니즘에 대해 자세히 설명하지 않습니다. 프로그래밍 방식으로 채팅 완료 모델과 상호 작용하는 데 익숙하지 않은 경우 먼저 채팅 완료 API에 대한 방법 가이드를 읽어 보시기 바랍니다.

참고 항목

가이드의 이 섹션에 있는 모든 예는 영어로 된 기본 GPT-4 모델을 대상으로 테스트되었습니다. 이 문서의 지역화 버전을 다른 언어로 읽고 있는 경우 이러한 응답은 영어의 지역화된 번역 결과를 나타냅니다. 모델 프롬프트에 사용하는 언어에 따른 잠재적인 제한 사항에 대해 자세히 알아보려면 책임 있는 AI 투명성 참고를 참조하세요.

퓨샷 학습

새로운 작업에 언어 모델을 적용하는 일반적인 방법은 퓨샷 학습을 사용하는 것입니다. 퓨샷 학습에서는 모델에 추가 컨텍스트를 제공하기 위한 프롬프트의 일부로 학습 예 집합이 제공됩니다.

채팅 완료 API를 사용할 때 사용자와 도우미 사이의 일련의 메시지(새로운 프롬프트 형식으로 작성됨)는 퓨샷 학습의 예 역할을 할 수 있습니다. 이러한 예를 사용하여 모델이 특정 방식으로 답변하도록 준비하고, 특정 동작을 에뮬레이트하고, 일반적인 질문에 대한 답변 근거를 준비할 수 있습니다.

시스템 메시지 퓨샷 예
도우미는 사용자가 세금 관련 질문에 답할 수 있도록 설계된 지능형 챗봇입니다.
Instructions
- 세금과 관련된 질문에만 답변합니다.
- 답변이 확실하지 않은 경우 "알 수 없습니다" 또는 "확실하지 않습니다"라고 말하고 사용자에게 IRS 웹 사이트에서 자세한 내용을 확인하도록 권장할 수 있습니다.
사용자 - "언제까지 세금을 신고해야 하나요?"
도우미 - “2023년에는 4월 18일까지 세금을 신고해야 합니다. 2023년 4월 15일이 토요일이기 때문에 날짜는 일반적인 기한인 4월 15일 이후입니다. 자세한 내용은 https://www.irs.gov/filing/individuals/when-to-file을 참조하세요.

사용자 - "세금 환급 상태를 어떻게 확인할 수 있나요?"
도우미 - "https://www.irs.gov/refunds를 방문하여 세금 환급 상태를 확인할 수 있습니다."

위 표에는 기본 프롬프트 구조가 설명되어 있습니다. 정확한 프롬프트 형식에 대한 자세한 설명은 채팅 완료 가이드를 참조하세요.

비채팅 시나리오

채팅 완료 API는 다단계 대화에 최적화되어 있지만 채팅이 아닌 시나리오에도 사용할 수 있습니다. 예를 들어, 감정 분석 시나리오의 경우 다음 프롬프트를 사용할 수 있습니다.

시스템 메시지 사용자 도우미
음성 데이터에서 감정을 분석하도록 설계된 도우미입니다. 사용자는 텍스트 문자열을 붙여 넣고 발표자의 반응을 평가하여 응답합니다. 1~10점으로 평가합니다(10이 가장 높음). 이 등급을 부여한 이유를 설명합니다. 안녕하세요? 오늘 저희 Contoso 약국에 전화해 주셔서 감사 드립니다. 실망하신 점에 대해 이해하고 있습니다 음... 정확히 무엇을 하려고 하는지 말해주실 수 있나요? 알겠습니다. 잠시 확인해 드리게 되어 기쁘게 생각합니다. 여기 보니 일반 형태의 리피터를 복용하고 계셨네요. 알겠습니다. 어... 그럼 담당 의사가 2221년에 이 약의 처방을 중단한 것으로 확인됩니다 실제로 그렇습니다 어... 확인해 드리겠습니다. 어... 가끔 시스템에 간격이 있어서 보고가 안 되는 경우도 있으니 잠시만 여기를 살펴보겠습니다. 여기 보니 담당 의사가 20세... 12세부터 20세... 21세까지 이런 약을 처방한 것 같아요. 알겠습니다. 음... 진료실에서 제공한 최근 기록에 따르면 지금 다른 약인 메트포르민을 복용하고 계십니다. 500밀리그램 단위로 약간의 양식을 받아오실 수 있도록 처방전을 작성해 드릴까요? 오늘 저희가 도와드릴 수 있는 다른 일이 있으면 언제든지 알려 주시기 바랍니다. 감정 평가: 8
이 텍스트의 화자는 고객의 우려 사항을 해결하면서 정중하고 도움이 되며 인내심을 갖고 있는 것 같습니다. 시간을 내어 정보를 확인하고 명확한 설명을 제공하며 도움을 제공합니다. 그러나 대화의 일부에 여전히 불확실성이 있어 고객에게 완전히 신뢰를 전달하지 못할 수 있으므로 평점은 10점을 받지 못했습니다.

명확한 지침으로 시작합니다.

프롬프트에 정보가 나타나는 시퀀스가 중요합니다. 이는 GPT 스타일 모델이 입력 처리 방법을 정의하는 특정 방식으로 빌드되기 때문입니다. Microsoft의 연구에 따르면 추가 상황 정보나 예를 공유하기 전에 프롬프트 시작 부분에서 모델에 수행하려는 작업을 알려 주는 것이 더 높은 품질의 출력을 생성하는 데 도움이 될 수 있습니다.

참고 항목

이 기술을 따르는 것이 여전히 일반적으로 권장되지만 이전 모델 버전(GPT-3 이하)과 달리 테스트에서는 ChatGPT 및 GPT-4 모델의 모델 응답이 기술 활용 여부에 관계없이 동일하다는 것을 보여 주었습니다. 아래 예의 경우 프롬프트의 시작 또는 끝 부분에 "여러 원본… 분출"이라는 문구를 추가해도 최종 모델 응답에 아무런 변화가 발생하지 않았음을 알 수 있습니다.

시스템 메시지 사용자 도우미
사람들이 정보를 찾을 수 있도록 도와주는 AI 도우미입니다. 당신의 임무는 "여러 원본에서 또 다른 대규모 폭발의 가능성을 언급하고 있습니다"라는 진술이 다음 단편 집합의 특정 인용문에 의해 뒷받침되는지 확인하는 것입니다.
---
SNIPPETS
[1] 전문가들은 시애틀에 대규모 지진이 발생할 확률이 14%라고 말합니다.
시애틀 - 미국 지질 조사국(U.S. Geological Survey)은 향후 50년 안에 규모 9의 캐스케디아 지진이 시애틀을 강타할 확률이 14%라고 예상합니다. “안타깝게도 우리는 그럴 수 없습니다...

[2] 지진 전문가들은 시애틀의 '정말 큰 사건'에 대한 최신 전망을 제시합니다.
워싱턴 대학의 한 지구물리학자는 "향후 50년 안에 규모 9의 지진이 다시 발생할 확률은 약 14%"라고 말했습니다.
---
"여러 원본에서 또 다른 대규모 폭발의 가능성을 언급하고 있습니다"라는 문구가 직접적으로 암시되거나 코드 조각에 명시되어 있나요?
아니요, 해당 내용은 코드 조각에 의해 직접적으로 암시되거나 명시되지 않습니다. 코드 조각에서는 50년 후에 시애틀을 강타할 “대지진”과 “진도 9 캐스케디아 지진”의 가능성을 언급했지만, 또 다른 대규모 화산 폭발 가능성은 언급하지 않았습니다.

마지막에 지시 사항을 반복합니다.

모델은 최신 바이어스에 취약할 수 있습니다. 이는 프롬프트 끝의 정보가 프롬프트 시작 부분의 정보보다 출력에 더 큰 영향을 미칠 수 있음을 의미합니다. 따라서 프롬프트가 끝날 때 지침을 반복하고 생성된 응답에 미치는 영향을 평가하는 실험을 해 보는 것이 좋습니다.

출력 사전 작업

이는 원하는 형식을 따르는 모델 응답을 가져오기 위해 프롬프트 끝에 몇 개의 단어나 구를 포함하는 것을 의미합니다. 예를 들어, “Here’s a bulleted list of key points:\n- ”과 같은 큐를 사용하면 출력이 글머리 기호 목록 형식인지 확인하는 데 도움이 될 수 있습니다.

시스템 메시지 사용자 도우미
사람들이 정보를 찾을 수 있도록 도와주는 AI 도우미입니다. 가능한 한 짧은 단어로 대답합니다. John Smith는 Lucy Smith와 결혼했습니다. 그들에게는 다섯 명의 자녀가 있고 그는 Microsoft에서 소프트웨어 엔지니어로 일하고 있습니다. 사실을 확인하려면 어떤 검색 쿼리를 사용해야 하나요? ## 가능한 검색 쿼리 중 하나는 다음과 같습니다. "John Smith는 Lucy Smith와 다섯 명의 자녀를 둔 소프트웨어 엔지니어 Microsoft와 결혼했습니다."

위 프롬프트에서 가능한 검색 쿼리 중 하나는 다음과 같습니다.라는 텍스트는 모델을 프라이밍하여 단일 출력을 생성합니다. 이 신호가 없으면 모델은 여러 검색 쿼리를 출력으로 생성합니다.

명확한 구문 추가

문장 부호, 제목, 섹션 표시 등 프롬프트에 명확한 구문을 사용하면 의도를 전달하는 데 도움이 되며 출력을 더 쉽게 구문 분석할 수 있습니다.

아래 예에서는 서로 다른 정보 원본 또는 단계 사이에 구분 기호(이 경우 ---)가 추가되었습니다. 이를 통해 생성을 위한 중지 조건으로 ---을 사용할 수 있습니다. 또한 섹션 제목이나 특수 변수는 대문자로 표시하여 구분합니다.

시스템 메시지 사용자 도우미
사람들이 정보를 찾을 수 있도록 도와주는 AI 도우미입니다. 단락을 읽은 다음, 사실 확인을 위해 검색 엔진에 쿼리를 보냅니다. 쿼리에 대해서도 설명합니다.
---
단락
John Smith는 Lucy Smith와 결혼했습니다. 그들에게는 다섯 명의 자녀가 있고 그는 Microsoft에서 소프트웨어 엔지니어로 일하고 있습니다. 사실을 확인하려면 어떤 검색 쿼리를 사용해야 하나요?
---
쿼리
1. "John Smith Microsoft" - John Smith가 실제로 Microsoft에 고용되어 있는지 확인합니다.
2. "John Smith Lucy Smith" - John Smith가 Lucy Smith와 결혼했는지 확인합니다.
3. "John Smith children" - John Smith에게 5명의 자식이 있는지 확인합니다.

어떤 구문을 사용해야 할지 잘 모르겠으면 Markdown이나 XML을 사용해 보세요. 모델은 XML 및 Markdown의 대량 웹 콘텐츠에서 학습되어 더 나은 결과를 제공할 수 있습니다.

작업을 세분화합니다.

LLM(대규모 언어 모델)은 작업이 더 작은 단계로 나누어지면 성능이 더 좋은 경우가 많습니다. 예를 들어, 앞서 참조한 검색 쿼리 프롬프트에서 프롬프트는 모델이 먼저 관련 사실을 추출하도록 지시한 다음, 해당 사실을 확인하는 데 사용할 수 있는 검색 쿼리를 생성하도록 지시하도록 재구성될 수 있습니다.

시스템 메시지 사용자 도우미
사람들이 정보를 찾을 수 있도록 도와주는 AI 도우미입니다. 단락을 읽은 다음, 사실 확인을 위해 검색 엔진에 쿼리를 보냅니다.
---
단락
John Smith는 Lucy Smith와 결혼했습니다. 그들에게는 다섯 명의 자녀가 있고 그는 Microsoft에서 소프트웨어 엔지니어로 일하고 있습니다. 사실을 확인하려면 어떤 검색 쿼리를 사용해야 하나요?
---
이제 사실에 기반한 주장을 추출하고 이를 사실 확인하기 위한 쿼리를 발급할 것입니다. 쿼리를 실행할 때 SEARCH("query") 함수를 사용합니다.

팩트 클레임
1. John Smith는 Lucy Smith와 결혼했습니다.
2. 다섯 명의 아이를 갖고 있습니다.
3. 그는 Microsoft에서 소프트웨어 엔지니어로 일하고 있습니다.

쿼리
SEARCH("John Smith married Lucy Smith")
SEARCH("John Smith family size")
SEARCH("John Smith Microsoft software engineer")

섹션을 구별하고 출력을 준비하기 위해 명확한 구문을 사용하는 것에 주목합니다. 이 간단한 예에서 작업을 한 단계에서 두 단계로 나누는 것은 그다지 드라마틱하지 않지만, 사실에 기반한 주장이 많은 더 큰 텍스트에 대해 이 작업을 수행하려고 하면 작업을 나누는 것이 상당한 차이를 만들 수 있습니다.

어포던스 사용

때로는 정보와 답변을 위해 자체 매개 변수에 의존하는 대신 어포던스를 사용하도록 모델을 가져올 수도 있습니다. 예를 들어, 검색은 조작된 답변을 완화하고 최신 정보를 가져오는 데 도움이 되는 어포던스가 될 수 있습니다.

어포던스를 사용하는 간단한 방법 중 하나는 모델에서 어포던스 호출이 생성되면 생성을 중지한 다음 결과를 프롬프트에 다시 붙여넣는 것입니다. 다음은 위의 SEARCH 호출을 수행한 후 후속 호출이 수행될 수 있는 예입니다. 검색 결과를 프롬프트에 붙여넣고 이전 SEARCH 호출을 바꾼 방법에 주목합니다.

시스템 메시지 사용자 도우미
사람들이 정보를 찾을 수 있도록 도와주는 AI 도우미입니다. 단락을 읽고 사실에 기반한 주장을 추출한 다음, 검색 엔진 결과를 사용하여 사실을 확인하게 됩니다.
---
단락
John Smith는 Lucy Smith와 결혼했습니다. 그들에게는 다섯 명의 자녀가 있고 그는 Microsoft에서 소프트웨어 엔지니어로 일하고 있습니다. 사실을 확인하려면 어떤 검색 쿼리를 사용해야 하나요?
---
팩트 클레임
- John Smith는 Lucy Smith와 결혼했습니다.
- John과 Lucy에게는 다섯 명의 자녀가 있습니다.
- John은 Microsoft에서 소프트웨어 엔지니어로 일하고 있습니다.
---
위의 클레임을 조사하기 위해 발급된 다양한 검색 쿼리는 다음과 같습니다.
검색 쿼리
- John Smith married to Lucy Smith
- John Smith number of children
- John Smith software engineer Microsoft
---
다음은 검색 결과의 일부입니다.
코드 조각:
[1] … John Smith의 결혼식은 2012년 9월 25일에 있었습니다.
[2] … John Smith was accompanied by his wife Lucy to a party
[3]John was accompanied to the soccer game by his two daughters and three sons
[4] … After spending 10 years at Microsoft, Smith founded his own startup, Tailspin Toys
[5] John M is the town smith, and he married Fiona. They have a daughter named Lucy
---
코드 조각을 바탕으로 위의 각 팩트 클레임에 대해 사실 확인을 해보세요.
- John Smith is married to Lucy Smith: Confirmed. 코드 조각 [1]과 [2]는 모두 John Smith의 아내를 Lucy로 언급합니다.

- John and Lucy have five kids: Confirmed. 코드 조각 [3]에서는 John이 두 딸과 세 아들을 동반했다고 언급합니다.

- John works as a software engineer at Microsoft: Partially confirmed. 코드 조각 [4]에서는 John이 Microsoft에서 10년간 근무했다고 언급하지만, 현재 Microsoft에서 근무하고 있다는 사실은 명시적으로 밝히지 않습니다. 현재 고용 상태를 확인하려면 추가 조사가 필요할 수 있습니다.

생각의 사슬 메시지 표시

이는 작업 분석 기술의 변형입니다. 이 방식에서는 작업을 더 작은 단계로 나누는 대신 모델 응답에 단계별로 진행하고 관련된 모든 단계를 제시하도록 지시합니다. 이렇게 하면 결과가 부정확할 가능성이 줄어들고 모델 반응을 더 쉽게 평가할 수 있습니다.

시스템 메시지 사용자 도우미
사람들이 정보를 찾을 수 있도록 도와주는 AI 도우미입니다. 시드니 올림픽에서 개인 선수 중 가장 많은 훈장을 받은(최대 메달 획득) 선수는 누구였나요? 답변 시 단계별 방식을 취하고, 원본을 인용하고 추론을 제시한 후 아래 형식으로 최종 답변을 공유합니다. 답변: <name> 1단계: 시드니 올림픽 개최 연도를 결정합니다. 2000년에는 시드니 올림픽이 열렸습니다.

2단계: 2000년 시드니 올림픽에서 여러 개의 메달을 획득한 개별 운동 선수의 목록을 찾습니다.

올림픽 공식 홈페이지에 따르면 2000년 시드니 올림픽에서 여러 개의 메달을 획득한 개인 선수들이 여러 명 있었습니다. 주목할만한 이름 중 일부는 다음과 같습니다.
• Ian Thorpe(오스트레일리아) - 금 3개, 은 2개, 동 0개
• Pieter van den Hoogenband(네덜란드) - 금 2개, 은 0개, 동 2개
• Lenny Krayzelburg(미국) - 금 3개, 은 0개, 동 0개
• Inge de Bruijn(네덜란드) - 금 3개, 은 1개, 동 0개

3단계: 가장 많은 메달을 획득한 선수를 결정합니다. 2000년 시드니 올림픽에서 여러 개의 메달을 획득한 개인 선수들의 목록을 검토한 결과, 가장 많은 메달을 획득한 선수는 총 5개의 메달(금 3개, 은 2개)을 획득한 오스트레일리아의 Ian Thorpe임을 알 수 있습니다.

따라서 대답은 Ian Thorpe입니다.

출력 구조 지정

프롬프트를 사용하여 출력 구조를 지정하면 결과의 성격과 품질에 상당한 영향을 미칠 수 있습니다. 때로는 “진짜 사실만 작성합니다” 또는 “정보를 조작하지 마세요”라는 시스템 메시지 입력이 적절한 완화 조치가 아닐 수 있습니다. 대신 모델 응답에 인용도 포함하도록 요청하면 잘못된 응답의 확산을 줄이는 데 도움이 될 수 있습니다.

모델이 진술을 할 때 원본 재질을 인용하도록 지시하면 해당 진술이 근거가 될 가능성이 훨씬 더 높습니다. 인용을 요청하면 모델이 응답을 생성할 때마다 두 가지 오류를 범해야 합니다. 첫 번째 오류는 조작된 응답이고 두 번째 오류는 잘못된 인용입니다. 인용이 지원하는 텍스트에 가까울수록 모델이 인용을 예측하는 데 필요한 거리가 짧아집니다. 이는 인라인 인용이 콘텐츠 끝 부분의 인용보다 허위 콘텐츠 생성을 더 효과적으로 완화할 수 있음을 의미합니다.

마찬가지로 단락에서 사실 진술을 추출하도록 모델에 요청하면 ‘X는 Y와 Z를 수행하고 있습니다’(확인하기가 더 어려울 수 있음)와 같은 복합 진술을 추출할 수 있습니다. 이는(엔터티1, 관계, 엔터티2)와 같은 출력 구조를 지정하여 방지할 수 있습니다.

아래 예에서는 인용을 사용하고 정의된 구조에 맞게 모델 응답을 지시하는 방법을 보여 줍니다.

시스템 메시지 사용자 도우미
사람들이 정보를 찾을 수 있도록 도와주는 AI 도우미입니다. 다음 대화에서 고객 지원 담당자가 나타내는 다양한 동작을 나열합니다.
---
안녕하세요? 오늘 저희 Contoso 약국에 전화해 주셔서 감사 드립니다. 실망하신 점에 대해 이해하고 있습니다 음... 정확히 무엇을 하려고 하는지 말해주실 수 있나요? 알겠습니다. 잠시 확인해 드리게 되어 기쁘게 생각합니다. 여기 보니 일반 형태의 리피터를 복용하고 계셨네요. 알겠습니다. 어... 그럼 담당 의사가 2221년에 이 약의 처방을 중단한 것으로 확인됩니다 실제로 그렇습니다 어... 확인해 드리겠습니다. 어... 가끔 시스템에 간격이 있어서 보고가 안 되는 경우도 있으니 잠시만 여기를 살펴보겠습니다. 여기 보니 담당 의사가 20세... 12세부터 20세... 21세까지 이런 약을 처방한 것 같아요. 알겠습니다. 음... 진료실에서 제공한 최근 기록에 따르면 지금 다른 약인 메트포르민을 복용하고 계십니다. 500밀리그램 단위로 약간의 양식을 받아오실 수 있도록 처방전을 작성해 드릴까요? 오늘 저희가 도와드릴 수 있는 다른 일이 있으면 언제든지 알려 주시기 바랍니다.
---
고객 지원 에이전트의 답변은 어땠나요?
BEHAVIOR("reason") 형식을 사용하여 다양한 동작을 분류 및 나열하고 분류 이유를 인용합니다.
1. 정중한 인사 동작("에이전트는 정중한 인사로 대화를 시작하고 발신자의 이름을 묻습니다.")
2. 공감적 동작("에이전트는 Mary의 좌절감을 인정하고 그녀의 우려 사항을 이해하려고 노력합니다.")
3. 세심한 동작("에이전트가 고객의 문제를 듣고 자세한 내용을 묻습니다.")
4. 적극적인 동작("에이전트가 고객에게 문제를 확인하겠다고 제공합니다.")
5. 유익한 동작("대리인은 고객의 처방 내역에 대한 관련 정보를 제공합니다.")
6. 철저한 동작("에이전트는 시스템에 발생할 수 있는 간격을 확인하고 완전한 응답을 제공합니다.")
7. 확인 동작("에이전트가 고객에게 현재 약품을 확인합니다.")
8. 해결 지향적 동작("에이전트는 고객에게 새로운 처방을 제공합니다.")
9. 정중한 동작("에이전트는 고객에게 감사를 표하고 필요한 경우 추가 지원을 제공합니다.")
시스템 메시지 사용자 도우미
사람들이 정보를 찾을 수 있도록 도와주는 AI 도우미입니다. 텍스트에 나타난 패턴을 기반으로 다음 뉴스 헤드라인을 항목 범주로 묶습니다. 또한 이러한 범주가 어떻게 정의되었는지에 대한 추론을 언급합니다.
출력 형식:
{
"TOPIC_NAME": "",
"HEADLINES": [],
"REASONING": ""
}

뉴스 헤드라인 입력:
1. "AR+ML을 사용하여 10대에 대한 책부터 프레젠테이션까지"
2. "세계 최초의 텍스트 인식용 나선형 네트워크를 보여 주는 32세 Yann LeCun의 1993년 데모"
3. "애니메이션 그림에 적용되는 첫 번째 순서 모션 모델"
4. "Robinhood 및 기타 브로커는 말 그대로 $GME, $NOK, $BB, $AMC 구매를 차단하고 판매를 허용합니다."
5. "United Airlines 주가는 시판 전 거래에서 5% 이상 하락했습니다."
출력

{
"ARTIFICIAL_INTELLIGENCE": {
"HEADLINES": [
"AR+ML을 사용하여 10대에 대한 책부터 프레젠테이션까지",
"세계 최초의 텍스트 인식용 나선형 네트워크를 보여 주는 32세 Yann LeCun의 1993년 데모",
"애니메이션 그림에 적용되는 첫 번째 순서 모션 모델"
],
"추론": "이 헤드라인은 인공 지능, 기계 학습 및 다양한 분야의 응용과 관련이 있습니다."
},
"FINANCIAL_MARKETS": {
"HEADLINES": [
"Robinhood 및 기타 브로커는 말 그대로 $GME, $NOK, $BB, $AMC 구매를 차단하고 판매를 허용합니다.",
"United Airlines 주가는 시판 전 거래에서 5% 이상 하락했습니다",
"비트코인은 1년 전 오늘 거의 20,000달러였습니다"
],
"추론": "이 헤드라인은 금융 시장, 주식, 암호화폐 및 거래 플랫폼과 관련이 있습니다."
}
}

온도 및 Top_p 매개 변수

온도 매개 변수를 변경하면 모델의 출력이 변경됩니다. 온도 매개 변수는 0과 2 사이에서 설정할 수 있습니다. 예를 들어, 0.7과 같이 값이 클수록 출력이 더 임의화되고 더 다양한 응답이 생성되는 반면, 값이 작을수록 다음과 같습니다. 0.2이면 출력이 더욱 집중적이고 구체적으로 만들어집니다. 더 높은 온도를 사용하면 가상의 스토리가 생성될 수 있습니다. 법적 문서를 생성하려면 훨씬 낮은 온도를 사용하는 것이 좋습니다. Top_probability는 또 다른 매개 변수이며 모델 반응의 임의성을 제어한다는 점에서 온도와 유사하지만 제어하는 방식이 다릅니다. 일반적인 권장 사항은 두 매개 변수 중 하나를 동시에 변경하는 것이지 둘 다 변경하는 것이 아닙니다.

접지 컨텍스트 제공

신뢰할 수 있는 답변을 제공하는 가장 효과적인 방법 중 하나는(접지 데이터)에서 답변을 도출할 수 있도록 모델 데이터를 제공하는 것입니다. 사용 사례가 신뢰할 수 있는 최신 정보에 의존하고 순수하게 창의적인 시나리오가 아닌 경우 기초가 되는 데이터를 제공하는 것이 좋습니다. 일반적으로 원본 재질을 원하는 답의 최종 형태에 더 가깝게 만들수록 모델이 수행해야 하는 작업이 적어지고, 이는 오류가 발생할 가능성이 줄어든다는 것을 의미합니다. 다음은 시스템에 Azure OpenAI 서비스의 GPT-4 출시를 설명하는 최근 블로그가 제공되고 일부 초기 고객의 이름을 물어보는 예입니다.

시스템 메시지 사용자 도우미
사람들이 정보를 찾을 수 있도록 도와주는 AI 도우미입니다. 아래 텍스트에서만 답변을 제공하고 100자 이내로 답변해야 합니다.
“Microsoft에서는 더 많은 사람들이 AI를 사용하여 혜택을 누릴 수 있도록 창의성을 발휘하고, 생산성을 높이며 기술을 향상할 수 있는 새로운 방법을 끊임없이 찾고 있습니다. 이를 통해 고객은 다음을 수행할 수 있습니다.

… 그러면 모델이 유해한 반응을 생성할 가능성이 줄어듭니다.”1

100자 이내로 답변합니다. 가능하면 글머리 기호 목록을 사용합니다.
Azure OpenAI 서비스 GPT-4 모델의 초기 고객은 누구인가요? Azure OpenAI 서비스 GPT-4 모델의 초기 고객은 다음과 같습니다.
- 에픽 의료: GPT-4를 사용하여 의사와 간호사가 데이터 입력 및 조사에 소요되는 시간을 줄일 계획입니다.
- Coursera: GPT-4와 함께 Azure OpenAI 서비스를 사용하여 플랫폼에서 새로운 AI 기반 학습 환경을 만들고 있습니다.
- Coca-Cola: Azure OpenAI를 사용하여 지식 허브를 빌드하고 마케팅,광고, 홍보, 고객 관계에 GPT-4의 다중 모드 기능을 활용할 계획입니다.
- 모든 규모의 다른 회사에서는 Azure AI를 사용하여 고객 환경을 개선하고, 긴 형식의 콘텐츠를 요약하고, 소프트웨어 작성을 돕고, 올바른 세금 데이터를 예측하여 위험을 줄이고 있습니다.

1Azure OpenAI GPT-4 출시 블로그의 텍스트입니다.

모범 사례

  • 구체적으로. 해석할 여지를 가능한 한 적게 만듭니다. 운영 공간을 제한합니다.
  • 설명적으로. 비유를 사용하고,
  • 강력하게 추진. 경우에 따라 모델에 반복적으로 지침을 제공해야 할 수 있습니다. 기본 콘텐츠 전후에 지침을 제공하고 지침 및 단서 등을 사용합니다.
  • 순서가 중요. 모델에 정보를 제공하는 순서는 출력 결과에 영향을 미칠 수 있습니다. 콘텐츠 앞에("다음 내용을 요약...") 또는 뒤에("위의 내용을 요약...") 지침을 넣느냐에 따라 결과물에 차이가 생길 수 있습니다. 퓨샷(few-shot) 예제의 순서도 중요할 수 있습니다. 이를 최신 편향이라고 합니다.
  • 모델에 "출구" 제공. 할당된 작업을 완료할 수 없는 경우 모델에 대체 경로를 제공하는 것이 도움이 될 수 있습니다. 예를 들어 텍스트 조각에 대해 질문할 때 "대답이 없으면 '찾을 수 없음'다고 응답해" 등과 같은 내용을 포함할 수 있습니다. 이렇게 하면 모델이 잘못된 응답을 생성하지 않도록 방지할 수 있습니다.

공간 효율성

신세대 GPT 모델에서는 입력 크기가 증가하지만 모델이 처리할 수 있는 것보다 더 많은 데이터를 제공하는 시나리오가 계속 존재합니다. GPT 모델은 단어를 "토큰"으로 분리합니다. 일반적인 다중 음절 단어는 종종 단일 토큰이지만 덜 일반적인 단어는 음절로 나뉩니다. 토큰은 경우에 따라 서로 다른 날짜 형식에 대한 토큰 경계를 보여 주는 아래 예제와 같이 직관적이지 않을 수 있습니다. 이 경우 전체 월을 다 입력하는 것이 전체 숫자 날짜보다 공간 효율적입니다. 현재 이전 GPT-3 모델의 2000개 토큰에서 최신 32k 버전 GPT-4 모델의 최대 32,768개 토큰까지 지원됩니다.

토큰 경계를 구분하는 강조 표시된 색이 있는 텍스트 문자열의 스크린샷.

이 제한된 공간을 고려한다면 가능한 한 효율적으로 사용하는 것이 중요합니다.

  • 테이블 – 이전 섹션의 예제와 같이 GPT 모델은 테이블 형식의 데이터를 매우 쉽게 이해할 수 있습니다. 이렇게 하는 것이 JSON의 경우처럼 모든 필드 앞에 이름을 입력하는 것보다 데이터를 포함하는 공간 효율적인 방법일 수 있습니다.
  • 공백 – 연속 공백은 별도의 토큰으로 처리되므로 공간을 낭비하기 쉽습니다. 반면 단어 앞의 공백은 일반적으로 단어와 동일한 토큰의 일부로 처리됩니다. 공백은 신중하게 사용하고 공백만 있을 때는 문장 부호를 사용하지 마세요.