API Asystentów pozwala budować asystentów SI we własnych aplikacjach. Asystent ma instrukcje i może korzystać z modeli, narzędzi i plików, aby odpowiadać na zapytania użytkownika. API Asystentów obsługuje obecnie trzy typy narzędzi: Code Interpreter, File Search i Function calling.
Przegląd
Typowa integracja z API Asystentów wygląda następująco:
- Utwórz asystenta, definiując jego niestandardowe instrukcje i wybierając model. Jeśli to przydatne, dodaj pliki i włącz narzędzia takie jak Code Interpreter, File Search i Function calling.
- Utwórz wątek, gdy użytkownik rozpoczyna rozmowę.
- Dodawaj wiadomości do wątku, gdy użytkownik zadaje pytania.
- Uruchom asystenta w wątku, aby wygenerować odpowiedź, wywołując model i narzędzia.
Krok 1: Utwórz asystenta
Asystent reprezentuje encję, którą można skonfigurować, aby odpowiadała na wiadomości użytkownika, używając kilku parametrów takich jak model, instrukcje i narzędzia.
// ... 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();
Krok 2: Utwórz wątek
Wątek reprezentuje rozmowę między użytkownikiem a jednym lub wieloma asystentami. Możesz utworzyć wątek, gdy użytkownik (lub twoja aplikacja SI) rozpoczyna rozmowę z asystentem.
oThread := oAssistant.CreateThread;
Krok 3: Dodaj wiadomość do wątku i uruchom
Treść wiadomości tworzonych przez użytkowników lub aplikacje jest dodawana do wątku jako obiekty Message. Wiadomości mogą zawierać zarówno tekst, jak i pliki. Nie ma ograniczeń co do liczby wiadomości, które możesz dodać do wątków — inteligentnie skracamy kontekst, który nie mieści się w oknie kontekstowym modelu.
Gdy wszystkie wiadomości użytkownika zostaną dodane do wątku, możesz uruchomić wątek z dowolnym asystentem. Utworzenie uruchomienia używa modelu i narzędzi powiązanych z asystentem, aby wygenerować odpowiedź. Te odpowiedzi są dodawane do wątku jako wiadomości asystenta.
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 demo
Poniżej znajdziesz a compiled demo of OpenAI Assistants using sgcWebSockets Enterprise for Windows.
