Assistants API를 사용하면 애플리케이션 내에서 AI 어시스턴트를 만들 수 있어요. Assistant는 지침을 가지며, 모델, 도구, 파일을 활용해 사용자 질의에 응답할 수 있어요. Assistants API는 현재 세 가지 도구 유형을 지원해요: Code Interpreter, File Search, Function calling.
개요
Assistants API의 일반적인 통합 흐름은 다음과 같아요:
- 맞춤 지침을 정의하고 모델을 선택해 Assistant를 만드세요. 필요하다면 파일을 추가하고 Code Interpreter, File Search, Function calling 같은 도구를 활성화하세요.
- 사용자가 대화를 시작할 때 Thread를 만드세요.
- 사용자가 질문할 때마다 Thread에 메시지를 추가하세요.
- Thread에서 Assistant를 실행해 모델과 도구를 호출하여 응답을 생성하세요.
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 데모를 확인하세요.
