안녕하세요 ChatGPT, Prompt Engineering에 대한 블로그 게시물을 작성해 주세요 [1부]
대규모 언어 모델(LLM)은 몇 년 전에 등장하여 우리의 업무 방식에 혁명을 일으킬 것을 약속했습니다. LLM의 등장은 확실히 많은 산업을 변화시켰지만, 새로운 기술 세트에 대한 수요도 창출했습니다. 가장 중요한 것 중 하나는 신속한 엔지니어링입니다.
신속한 엔지니어링은 기술적 정밀성과 창의성을 모두 결합하여 생성적 인공지능(AI) 모델이 원하는 결과를 생성하도록 안내하는 지침을 능숙하게 구성하는 것을 포함합니다.
프롬프트를 효과적으로 구조화함으로써 최종 사용자는 정확하고 고품질이며 사용자 지정되고 관련성 있는 응답을 얻을 수 있으며, 잘못되거나 조작되거나 무의미한 응답을 피할 수 있습니다. 오늘날의 더욱 진보된 모델을 통해 모델이 최소한의 입력으로 사용자 의도를 해석하는 것이 더 쉬워져 더욱 사용자 친화적이 되었으며, 그 대가로 사용자는 LLM이 더 잘 이해할 수 있도록 언어를 조정했습니다. 이에 대한 예는 아래 이미지에서 찾을 수 있습니다.

최종 사용자와 챗봇 간의 일반적인 대화에서 프롬프트 엔지니어링은 챗봇의 응답을 안내하는 구체적인 질문이나 지침을 만드는 것을 포함하며, 명확성과 관련성을 보장합니다. 그런 다음 이러한 프롬프트는 처리를 위해 언어 모델로 전송되고 LLM의 응답은 API를 통해 다시 전송됩니다.
당연히, 프롬프트 엔지니어링 기술을 마스터하는 것은 초보자에게 어려운 일입니다. 올바른 출력을 얻지 못하면 좌절스러울 수 있습니다. 이는 종종 올바른 질문을 하지 않거나 올바른 프롬프트를 제공하지 않는 데서 비롯됩니다. 이 블로그 게시물에서는 연습과 실험을 통해 정확하고 효과적인 프롬프트를 만드는 기술을 마스터하는 방법을 배우게 됩니다. 프롬프트에서 생각의 나무 기술을 사용하는 것과 같은 기본부터 고급 개념까지 많은 것을 다룰 것입니다.
이 블로그는 다른 게시물에서 시작된 아이디어를 기반으로 작성되었습니다. 함수 호출 및 생성 AI로 더 스마트한 앱을 구축하는 방법. 특히 함수 호출에 익숙하지 않은 경우 먼저 읽어보시기를 적극 권장합니다.
다양한 프롬프트 유형
귀하의 이해를 높이기 위해 AI 모델의 작동 방식, 상호작용 프로세스에 관련된 다양한 유형의 프롬프트를 이해하는 것이 중요합니다. 위의 이미지에서 설명한 대로 시스템 프롬프트와 사용자 프롬프트는 모두 API 호출을 통해 언어 모델로 전송됩니다. 이러한 프롬프트는 AI의 응답을 안내하는 데 있어 서로 다른 역할을 합니다.
시스템 프롬프트
따라서 시스템 프롬프트 AI 모델의 기본 동작과 지침을 나타냅니다. 예를 들어 모델에 역할, 톤, 윤리 규정 및/또는 주제 사양을 제공합니다. 이는 프롬프트 엔지니어(또는 이 블로그 게시물을 읽은 사용자)가 설정합니다. 이러한 유형의 프롬프트의 예는 다음과 같습니다. "당신은 단지 정보만 제공하는 도움이 되는 조수입니다. Mendix"- 역할, 내용 및 제한 사항에 대한 직접적인 지침을 제공합니다. 계속 읽으면 추가적이고 더 고급 샘플을 찾을 수 있습니다.
사용자 프롬프트
A 사용자 프롬프트 또 다른 기본적인 유형입니다. 이는 이 게시물의 앞부분에서 공유한 이미지에 나와 있듯이 LLM에 전송된 사용자의 입력, 질문 또는 요청입니다. 이는 최종 사용자가 "멋진 앱을 만들기 위한 5가지 아이디어를 알려주세요. Mendix". 물론, 보다 복잡한 문의에 대해 최종 사용자는 이 게시물을 사용하여 신속한 대응 기술을 향상시키고 LLM에서 더욱 신뢰할 수 있거나 적합한 결과를 얻을 수 있습니다.
컨텍스트 프롬프트
프로젝트 또는 사용 사례에 따라 모델에 컨텍스트 정보를 추가하는 것이 필요하거나 요구될 수 있습니다. 일반적으로 이 정보는 컨텍스트 프롬프트 or 대화 기록, 시스템 및 사용자 프롬프트와 동일한 상호 작용으로 전송됩니다. 최종 사용자와의 일관성을 유지하고 컨텍스트를 인식하기 위해 대화의 과거 정보를 캡처합니다. 이는 개발자가 애플리케이션 내에서 설정합니다(예: Mendix, 이는 마이크로흐름을 통해 포착됩니다. 채팅 완료(기록 포함) 작업.
이 개념을 이해하려면 사용자가 채팅봇과 상호 작용하면서 다음과 같이 질문하는 상황을 상상해 보세요. “어떻게 시작해야 할까요?” 이전 상호작용에서 사용자가 다음에 대해 질문한 경우 MendixLLM은 질문이 다음을 참조한다는 것을 이해할 것입니다. Mendix 앱. 컨텍스트가 필요하지 않은 경우, 예를 들어 명령 기반 상호 작용에서 문의가 다음과 같은 경우: "불을 켜다" LLM에는 과거 대화가 필요하지 않으며 개발자는 다음과 같은 작업을 사용할 수 있습니다. 채팅 완료(기록 없음).
신속한 생성을 위한 필수 모범 사례
새로운 팀원을 온보딩할 때는 그들에게 주는 작업이 가장 효율적이고 빠른 방식으로 수행되도록 해야 합니다. 이는 프롬프트 개발에도 적용됩니다. 이제 몇 가지 유형의 프롬프트와 기술을 알았으므로 프롬프트 생성을 위한 필수적인 모범 사례를 이해하는 것이 중요합니다. 예를 들어 다음과 같습니다.
- 명확하게: LLM이 이해할 수 있도록 명확하고 정확한 메시지를 강조하는 관련 세부 정보가 프롬프트에 포함되어 있는지 확인하십시오. 복잡한 언어는 피하십시오. 예를 들어 다음과 같은 문장을 변경할 수 있습니다. “절차적 방법론을 평가합니다…” 이는 더 공식적인 학술적 글쓰기입니다. “과정을 설명하세요…”.
- 맥락을 설명하세요: LLM에 배경 스토리, 시나리오 또는 설명을 제공하면 일반적으로 맥락 설정으로 인해 더 정확한 결과가 나옵니다. 예를 들어, 최종 사용자에게 다음에 대해 알려주고 싶은 경우 Mendix, 프롬프트에는 이 세부 정보가 포함되어야 합니다.
- 세부 사항 및 제한 사항 제공: 프롬프트에서 세부 사항이나 제한 사항을 지정하면 사용 사례에 대한 보다 구체적이고 적합한 응답이 제공됩니다. 여기에는 지침(예: LLM에 각 응답에 소스나 예를 포함하도록 요청)이 포함될 수 있으며, 답변을 100단어로 제한하거나 출력을 JSON 형식으로 작성하는 것과 같이 결과가 어떻게 표시되어야 하는지 조정할 수 있습니다.
- LLM이 역할을 맡게 하세요: LLM에 페르소나와 역할에 대한 맥락을 제공하면 모델을 개인화하여 사용 사례에 더 잘 맞출 수 있습니다. 예를 들어, 데이터 과학에 대해 가르치는 앱을 빌드합니다. 그런 다음 프롬프트에는 데이터 과학에 익숙하지 않은 청중을 가진 교수의 역할이 포함되어야 합니다.
- 프롬프트를 구체화하고 반복적으로 작업하세요: 프롬프트 테스트 및 개선은 중요한 관행입니다. 때로는 모델 구성(예: GPT3.5-Turbo에서 GPT4o-mini로)과 같은 사소한 변경 사항도 LLM 동작에 상당한 차이를 초래할 수 있습니다. 이러한 변경 사항과 결과를 문서화하면 사용 사례에 가장 적합한 프롬프트를 찾는 데 도움이 될 수 있습니다. 선택적으로 가능한 경우 다른 사람이 피드백을 위해 프롬프트를 테스트하면 반복적 개선의 또 다른 형태를 제공할 수 있습니다.
상위 5가지 프롬프트 기술
사용 사례가 복잡할수록 프롬프트도 복잡해질 수 있습니다. 그러나 초기 결과가 바로 원하는 결과가 아니더라도 걱정하지 마십시오. 대신 다음 프롬프트 기술 중 하나를 사용하여 프롬프트 기술을 향상시키십시오.
| 신속한 기술 | 그것이 무엇인지 | 사례 사용 및 프롬프트 예 |
| 인터뷰 패턴 접근 방식 | 인터뷰 방식의 접근 방식을 사용하면 모델이 최종 사용자에게 후속 질문을 해서 더 적합한 답변을 제공할 수 있습니다. | 사용 사례 : 영화 추천 엔진.
즉각적인 지시: "당신은 영화 추천 전문가 역할을 할 것입니다. 당신은 사용자에게 한 번에 하나씩 자세한 질문을 하여 영화에 대한 선호도를 파악할 것입니다." |
| 지시 사항 프롬프트 | 이 지침은 AI 모델에게 작업을 수행하는 방법에 대한 지침을 제공합니다. 요약이나 번역, 스타일, 형식 등과 같은 출력 유형에 대한 지침이 될 수 있습니다. | 사용 사례 : Mendix ML Kit 파이썬 스크립트 생성기
즉각적인 지시: “당신은 다음 분야에 특화된 Python 개발자로서 활동하게 될 것입니다. Mendix ML 키트. 출력/응답은 주석이 있는 파이썬 스크립트로 제공되어야 합니다. Mendix ML 키트.” |
| 몇 번의 샷 프롬프트 | 이는 예를 제공하여 모델이 작업이나 패턴을 동적으로 학습하도록 돕습니다. 또한 시스템 프롬프트의 일부가 될 수도 있습니다. | 사용 사례 : 영어-스페인어 번역기
즉각적인 지시: “당신은 영어 텍스트를 스페인어로 번역하는 친절한 조수입니다. 예를 들어, 'Good Evening'을 스페인어로: 'Buenas Noches'” |
| 생각의 사슬 | 복잡한 작업을 특정 순서에 따라 이루어지는 개별 단계로 바꿔서 단순화합니다. | 사용 사례 : 인턴을 위한 의학적 진단.
즉각적인 지시: "당신은 수련 의사가 환자의 초기 평가를 위해 일련의 질문을 하는 것을 돕기 위해 설계된 진단 보조원입니다. 당신의 목표는 환자의 증상, 병력 및 기타 관련 변수를 식별하여 정확한 평가를 내리는 것입니다. 결과에 따라 간호사나 의사에게 전달됩니다. 환자에게 주요 증상과 방문 이유에 대해 묻는 것으로 시작합니다. 그런 다음, …" |
| 생각의 나무 | 의사결정 트리와 비슷하게, 이는 모델이 올바른 결과로 이어지는 경로를 평가하고 찾을 수 있도록 여러 가지 사고 흐름을 포함합니다. | 사용 사례 : 지원 보조 봇
즉각적인 지시: "당신은 직원의 요청(지원 티켓, 라이선스 또는 하드웨어 문의 등)을 처리하는 IT 부서를 지원하는 유용한 보조원입니다. 요청 유형에 따라 아래 지침을 따르세요. 사용자가 다음에 대해 질문하는 경우… 요청이 모호하거나 불완전한 경우, … 요청이 라이센스나 하드웨어에 관한 것이라면 먼저 … 사용자가 지원 티켓에 대해 알고 싶어하는 경우… |
이 시리즈의 두 번째 부분에서는 함수 호출이 동작하는 Tree-Of-Thought 프롬프트의 짧은 예를 찾을 수 있습니다. 지원 어시스턴트 스타터 앱.
기본 문제부터 보다 복잡한 문제까지: 프로처럼 프롬프트하는 여정을 시작하세요
사용 사례가 더 복잡해지고 명확한 맥락이 부족해짐에 따라 모델은 "환각"이라고 알려진 조작되거나 관련 없는 정보를 생성할 가능성이 더 큽니다. 배경 정보가 덜 필요한 경우 이 문제는 훨씬 덜 일반적입니다. 이러한 환각을 완화하는 것은 신속한 엔지니어링의 큰 과제 중 하나이므로 이를 달성하는 방법을 탐구하는 여정에 뛰어들어 보겠습니다.
우선, 질문에 답하는 챗봇의 간단한 예를 생각해 보겠습니다. 다음과 같이 쓰기 시작할 것입니다.
You are a helpful assistant who helps users with their questions and requests.
이제 회사를 위한 봇을 만들고 맥락을 제공하고 싶다고 상상해 보세요. 다음과 같이 쓸 수 있습니다.
You are a helpful assistant who provides information about Mendix.
Please collect any publicly available information about the company for the user’s question.
이러한 프롬프트는 사용자가 특정 회사에 대한 공개적으로 이용 가능한 정보를 얻는 데 도움이 되지만, 요청이 더 기술적이 되거나 답변에 쉽게 접근할 수 없거나 접근할 수 없는 경우 환각 상태가 될 수 있습니다.
따라서 보다 나은 사용자 경험을 위한 다음과 같은 지침을 제공하기 시작합니다.
You are a helpful assistant who provides information about Mendix.
If the user has a technical question, include the Mendix documentation link.
If the user is struggling with a bug, check Mendix Forum or Documentation for a solution.
Please provide the source of the information in your response.
Lastly, if you are not sure about the response, do not try to create one but rather inform the user that you do not know the answer.
여기에서 Few-Shot 프롬프트나 Instruction 프롬프트와 같은 다른 유형으로 시스템 프롬프트를 향상할 수 있습니다.
You are a helpful assistant who provides information about Mendix.
1. For technical questions, include a link to the Mendix documentation.
Example: If the user asks about connecting to OpenAI, you can answer:
“You can connect your Mendix App with OpenAI by using the OpenAI Connector.
More information can be found here: https://docs.mendix.com/appstore/modules/genai/openai/.”
2. For bug-related issues, refer to the Mendix Forum or Documentation.
Example: If the user says that they created their first app and have an encryption issue, you can answer
“An encryption key might be missing.
More information can be found here: https://community.mendix.com/link/space/app-development/questions/99504..”
3. If unsure about a response, inform the user rather than guessing.
Example: “I do not know the answer. Please provide more information or check the Mendix Documentation (https://docs.mendix.com/) for an answer.”
물론, 각 요청에 대한 공개 정보를 검색하는 것은 가장 실현 가능한 솔루션이 아닐 수 있습니다. 모델이 해석할 수 있는 여지를 더 많이 허용하여 환각의 가능성을 높이기 때문입니다. 또한, 특정 기간에 대한 지식이 제한되고 최신 데이터를 제공하지 않습니다. 이를 완화하기 위해 모델을 회사의 지식 기반과 통합하면 답변을 찾는 데 통제된 범위를 제공하여 잘못된 응답 가능성을 줄이고 최신 또는 라이브 정보를 제공할 수 있습니다.
우리는 이것을 더 탐구합니다 이 시리즈의 2 부에서
GenAI 사용 사례를 직접 작업 중이고 도움이 필요하거나 피드백을 제공하고 싶다면, 저희에게 연락해 주시기 바랍니다. 고객 성공 관리자에게 문의하거나 메시지를 보내주세요. #제나이-커넥터 채널 Mendix 커뮤니티 슬랙. 여기에서 가입하세요!
확인해 볼 추가 리소스: 프롬프트 라이브러리