ChatGPT는 OpenAI가 개발한 대형 언어 모델이에요. 비지도 학습이라는 기법으로 훈련됐으며, 이는 대량의 텍스트 데이터셋을 입력받아 앞선 단어를 기반으로 시퀀스의 다음 단어를 예측하도록 학습했다는 뜻이에요. 덕분에 ChatGPT는 사람과 같은 텍스트를 생성할 수 있어요. 챗봇의 사용자 입력에 대한 응답 생성이나 웹사이트 및 소셜 미디어 콘텐츠 생성 등 다양한 용도로 사용할 수 있어요.
ChatGPT의 주요 기능 중 하나는 문맥을 이해하고 대화에 따라 적절한 응답을 생성하는 능력이에요. 예를 들어 ChatGPT에 질문을 하면 질문과 관련 있고 자연스러운 대화 흐름을 따르는 응답을 생성해요. 이는 모델이 대화의 이전 발언을 "기억"하고 그 정보를 응답에 반영할 수 있기 때문에 가능해요.
또 다른 중요한 기능은 다양하고 풍부한 응답을 생성하는 능력이에요. 대량의 텍스트 데이터셋으로 훈련됐기 때문에 폭넓은 지식을 가지고 있고, 다양한 상황과 주제에 적절한 응답을 생성할 수 있어요. 덕분에 챗봇에서 사용자 입력에 대한 응답을 생성할 때 유용한 도구로 활용할 수 있어요. 대화 주제와 상관없이 관련성 높고 흥미로운 응답을 제공할 수 있기 때문이에요.
전반적으로 ChatGPT는 사람과 같은 텍스트를 생성하고 문맥 및 대화 흐름을 이해하는 강력한 언어 모델이에요. 챗봇, 콘텐츠 생성, 언어 번역 등 다양한 분야에 응용할 수 있고, 우리가 기술과 상호작용하는 방식을 혁신할 잠재력을 가지고 있어요.
현재 ChatGPT 자체에는 API가 없지만, OpenAI 베타 API를 사용해 GPT-3 Text Transformer와 상호 작용할 수 있어요. 다음 주소에서 발급받을 수 있는 API 키만 있으면 돼요.
https://beta.openai.com/account/api-keys
이제 API와 상호 작용을 시작할 수 있어요.
GPT-3 Delphi 코드
API 키를 받으면 API와 상호 작용하는 것은 매우 쉬워요. 아래는 sgcWebSockets 라이브러리를 사용해 상호 작용하는 샘플 코드예요.
function AskChatGPT(const aAPI, aQuestion: string): string;
var
oHTTP: TsgcHTTP1Client;
oStream: TStringStream;
vPostData: string;
oJSON: TJSONValue;
oArray: TJSonArray;
begin
oHTTP := TsgcHTTP1Client.Create(nil);
Try
oHTTP.Request.CustomHeaders.Add('Authorization: Bearer ' + aAPI);
oHTTP.Request.ContentType := 'application/json';
vPostData :=
Format('{"model": "text-davinci-003","prompt": "%s","max_tokens": 2048,"temperature": 0}',
[aQuestion]);
// send request
oStream := TStringStream.Create(vPostData);
Try
result := oHTTP.Post('https://api.openai.com/v1/completions', oStream);
// parse response
oJSON := TJSonObject.ParseJSONValue(result).GetValue<TJSONValue>
('choices');
result := TJSonArray(oJSON).Items[0].GetValue<TJSONString>('text').Value;
Finally
oStream.Free;
End;
Finally
oHTTP.Free;
End;
end;
이 함수에는 두 개의 인수가 있어요.
API: https://beta.openai.com/account/api-keys에서 발급받은 API 키예요.
Question: 질문이 담긴 메시지예요.
API 키는 Bearer 토큰으로 전송되고 메시지는 JSON 객체로 인코딩돼요. 서버는 JSON 객체로 응답을 반환하며 그 안에서 텍스트 메시지를 확인할 수 있어요.

아래에서 전체 프로젝트와 Windows용 컴파일된 실행 파일을 확인해 주세요.
