Delphi용 OpenAI Assistants

· 컴포넌트

Assistants API를 사용하면 애플리케이션 내에서 AI 어시스턴트를 만들 수 있어요. Assistant는 지침을 가지며, 모델, 도구, 파일을 활용해 사용자 질의에 응답할 수 있어요. Assistants API는 현재 세 가지 도구 유형을 지원해요: Code Interpreter, File Search, Function calling.


개요

Assistants API의 일반적인 통합 흐름은 다음과 같아요:

1단계: Assistant 만들기

Assistant는 모델, 지침, 도구 같은 여러 매개변수를 사용해 사용자의 메시지에 응답하도록 설정할 수 있는 엔티티예요. 

// ... create a new assistant
oAssistant := TsgcAIOpenAIAssistant.Create(nil);
// ... set your api key
oAssistant.OpenAIOptions.ApiKey := txtAPIKey.Text;
// ... assistant options
oAssistant.AssistantOptions.Name := 'Math Tutor';
oAssistant.AssistantOptions.Instructions.Text := 'You are a personal math tutor. Write and run code to answer math questions.';
oAssistant.AssistantOptions.Model := 'gpt-4o';
// ... create the assistant
oAssistant.CreateAssistant(); 

2단계: Thread 만들기

Thread는 사용자와 하나 또는 여러 Assistant 간의 대화를 나타내요. 사용자(또는 AI 애플리케이션)가 Assistant와 대화를 시작할 때 Thread를 만들 수 있어요. 

oThread := oAssistant.CreateThread; 

3단계: Thread에 메시지 추가 및 실행

사용자나 애플리케이션이 만든 메시지의 내용은 Message 객체로 Thread에 추가돼요. 메시지는 텍스트와 파일을 모두 포함할 수 있어요. Thread에 추가할 수 있는 메시지 수에는 제한이 없어요 — 모델의 컨텍스트 윈도우에 맞지 않는 컨텍스트는 스마트하게 잘라낼 거예요.

모든 사용자 메시지가 Thread에 추가되면, 어떤 Assistant로든 Thread를 실행할 수 있어요. Run을 생성하면 Assistant와 연관된 모델과 도구를 사용해 응답을 생성해요. 이러한 응답은 어시스턴트 메시지로 Thread에 추가돼요.

procedure SendMessage(const oAssistant: TsgcAIOpenAIAssistant; const oThread: TsgcAIClass_Thread; const aMessage: string);
var
  i: Integer;
  oMessage: TsgcOpenAIClass_Message;
  oMessages: TsgcOpenAIClass_Response_List_Messages;
  oRun: TsgcOpenAIClass_Run;
begin
  DoLog('[user]: ' + aMessage);
  oMessage := oAssistant.CreateMessageText(oThread.Id, aMessage);
  if Assigned(oMessage) then
  begin
    oRun := oAssistant.CreateRunAndWait(oThread.Id);
    if Assigned(oRun) then
    begin
      oMessages := oAssistant.GetMessages(oThread.Id, oRun.Id);
      if Assigned(oMessages) and (Length(oMessages.Messages) > 0) then
      begin
        for i := 0 to Length(oMessages.Messages) - 1 do
          DoLog('[assistant]: ' + DoFormatResponse(oMessages.Messages[i].ContentText + #13#10));
      end;
    end;
  end;
end; 

Delphi 데모

아래에서 Windows용 sgcWebSockets Enterprise를 사용해 빌드된 OpenAI Assistants 데모를 확인하세요.