이 포스트는 원문을 개인적으로 번역한 내용입니다. 오역이나 개인적인 견해가 포함되어 있을 수 있으니 양해 부탁드리며, 좀 더 정확한 정보는 원문을 참조하시길 바라겠습니다.
OpenAI와 .NET에 대한 블로그 시리즈에 오신 것을 환영합니다!
만약 이 블로그 시리즈에 처음 오신 거라면, 먼저 이 시리즈를 소개하고 .NET에서 OpenAI를 활용하는 방법에 대해 다루는 첫 번째 포스트를 확인하세요.
이번 포스트에서는 컴플리션(Completions)을 중점으로 다룹니다. 그럼 시작해 보겠습니다!
컴플리션이란 무엇인가요?
컴플리션은 GPT와 같은 모델에 의해 생성된 응답입니다.
생성할 수 있는 응답 유형은 다음과 같습니다.
Text
입력 : "Hello"를 스페인어로 번역
출력 : "Hola"
Code
입력 : 두 개의 정수를 더하는 C# 함수 생성
출력 :
int Add(int x, int y)
{
return x + y
}
Images
입력 : 러그 속의 포근한 퍼그
출력 :
이 포스트에서는 Text와 Code 컴플리션에 대해서 살펴보도록 하겠습니다.
컴플리션은 어떻게 생성되나요?
컴플리션을 생성하는 데 필요한 몇 가지 요소가 있습니다.
- 모델
- 사용자 입력(프롬프트)
모델은 상태 저장 함수라고 생각할 수 있으며, 알고리즘을 사용하여 데이터의 패턴을 식별하기 위해 개발된 시스템입니다. 모델의 기능은 모델을 구축하는 데 사용된 데이터 및 알고리즘에 따라 달라집니다. 다양한 유형의 모델 및 해당 기능에 대한 자세한 내용은 Azure OpenAI Service 모델 설명서를 참조하세요.
GPT와 같은 OpenAI 모델을 구축하는 데 사용되는 알고리즘은 트랜스포머(transformers)라고 알려져 있는 신경망입니다. 좀 더 구체적으로 말하자면, GPT와 같은 모델은 그 크기(large)와 해결하려는 문제 유형(language) 때문에 일반적으로 대규모 언어 모델(LLMs)이라고 불립니다.
대규모 언어 모델의 기술적 세부 사항은 이 포스트의 범위를 벗어납니다. 하지만 더 자세히 알아보고 싶다면, What Is ChatGPT Doing … and Why Does It Work? 기사와 Language models are few-shot learners 논문을 참조하길 바랍니다.
프롬프트(prompt)라고도 하는 사용자 입력은 모델을 안내하고 모델이 출력할 내용에 대한 지침을 제공하는 것입니다. 보다 정확한 결과를 얻기 위해 프롬프트에는 다음과 같은 내용을 포함합니다:
- 콘텍스트(Context)
- 태스크(Task) / 쿼리(Query)
예를 들어 다음과 같은 프롬프트가 있다고 가정했을 때:
2학년 학생을 위해 이 내용을 요약하세요.
목성은 태양에서 다섯 번째 행성이며 태양계에서 가장 큰 행성입니다. 질량은 태양의 1000분의 1이지만 태양계의 다른 모든 행성을 합친 것보다 2.5배나 큰 가스 거성입니다. 목성은 밤하늘에서 육안으로 볼 수 있는 가장 밝은 천체 중 하나로, 역사가 기록되기 전부터 고대 문명에 알려져 왔습니다. 목성이라는 이름은 로마의 신 목성(Jupiter)에서 따온 것입니다. 지구에서 볼 때 목성은 반사된 빛이 눈에 보이는 그림자를 드리울 정도로 밝고, 평균적으로 밤하늘에서 달과 금성에 이어 세 번째로 밝은 천체입니다.
다음과 같이 구분할 수 있습니다:
- 콘텍스트 : 목성은 태양에서 다섯 번째 행성이며 태양계에서 가장 큰 행성입니다. 질량은 태양의 1000분의 1이지만 태양계의 다른 모든 행성을 합친 것보다 2.5배나 큰 가스 거성입니다. 목성은 밤하늘에서 육안으로 볼 수 있는 가장 밝은 천체 중 하나로, 역사가 기록되기 전부터 고대 문명에 알려져 왔습니다. 목성이라는 이름은 로마의 신 목성(Jupiter)에서 따온 것입니다. 지구에서 볼 때 목성은 반사된 빛이 눈에 보이는 그림자를 드리울 정도로 밝고, 평균적으로 밤하늘에서 달과 금성에 이어 세 번째로 밝은 천체입니다.
- 태스크/쿼리 : 2학년 학생을 위해 이 내용을 요약하세요.
컴플리션 결과물은 다음과 유사할 것입니다:
목성은 태양에서 다섯 번째 행성이며 우리 태양계에서 가장 큰 행성입니다. 밤하늘에서 매우 밝고 고대부터 알려져 왔습니다. 로마의 신 목성(Jupiter)의 이름을 따서 명명되었습니다. 일반적으로 달과 금성에 이어 밤하늘에서 세 번째로 밝은 천체입니다.
여기서 중요한 부분은 모델이 특정 종류의 출력을 생성하도록 안내하는 태스크/쿼리입니다. 예를 들어 태스크/쿼리를 "태양과 비교하여 목성의 질량은 얼마인가요?" 로 변경하면 "목성의 질량은 태양의 1000분의 1 또는 0.001 태양 질량입니다" 와 유사한 결과를 얻을 수 있습니다.
보시다시피, GPT와 같은 모델을 잘 구성된 프롬프트와 결합하면 AI를 사용하여 모든 유형의 애플리케이션을 구축할 수 있는 효과적인 기반을 형성할 수 있습니다.
프롬프트에 얼마나 많은 텍스트를 입력할 수 있나요?
프롬프트의 크기는 토큰 단위로 측정됩니다. 기본적으로 GPT 모델은 단어를 "토큰"으로 나눕니다. 여러 음절로 이루어진 일반적인 단어는 단일 토큰인 경우가 많지만, 일반적이지 않은 단어는 음절로 구분됩니다. 각 모델에는 토큰 제한이 있습니다. 자세한 내용은 Azure OpenAI Service 모델 설명서를 참조하세요.
프롬프트의 토큰 수를 계산하려면 Microsoft.ML.Tokenizers NuGet 패키지를 사용하세요.
더 자세한 내용은 토큰화 샘플 설명서를 참조하세요.
독자적인 컴플리션을 생성하려면 어떻게 해야 하나요?
이제 컴플리션이 무엇이며 어떻게 생성되는지 알았으니, 독자적인 컴플리션을 생성해 볼 차례입니다. 다음과 같이 시작할 수 있습니다.
- OpenAI 또는 Azure OpenAI Service에 가입하거나 액세스를 요청합니다.
- 자격 증명을 사용하여 OpenAI .NET 샘플을 참고합니다.
다음 주제는 무엇인가요?
다음 포스트에서는 보다 정확한 답변을 생성하기 위해 프롬프트를 최적화하는 프로세스인 프롬프트 엔지니어링에 대해 자세히 다룰 예정입니다.
여러분의 의견을 듣고 싶습니다.
여러분이 애플리케이션에서 AI를 어떻게 활용하고자 하는지 좀 더 자세히 알고 싶습니다. 잠시 시간을 내어 이 설문조사에 참여해 주세요.
또, 더 자세히 알아보고 싶은 주제가 있다면 댓글로 알려주세요.
이 포스트 시리즈 전체 보기
3. [번역] 프롬프트 엔지니어링(Prompt Engineering)으로 GPT 게임 레벨 업그레이드하기
2. [번역] .NET으로 OpenAI 컴플리션(Completions) 생성하기
'TechTalk' 카테고리의 다른 글
[Microsoft Learn] AI Skills Challenges for MVPs and Communities (0) | 2024.01.24 |
---|---|
[번역] .NET에서 ChatGPT 활용하기 (0) | 2023.06.13 |
Microsoft Build 2023 관련 Micosoft Learn 컬렉션 (0) | 2023.06.12 |
[번역] 프롬프트 엔지니어링(Prompt Engineering)으로 GPT 게임 레벨 업그레이드하기 (2) | 2023.06.07 |
[번역] .NET에서 OpenAI 활용하기 (0) | 2023.05.25 |
댓글