AI Chat

TsgcAIChat is één chatclient voor zeven providers van large language models. Zet Provider, geef een API-sleutel en een model op en roep Chat aan. Van leverancier wisselen is één toewijzing, de rest van je code blijft hetzelfde.

TsgcAIChat

Een providerneutraal chatcomponent. Het bewaart de gespreksgeschiedenis, bouwt de providerspecifieke JSON-body op, stuurt de bijbehorende HTTP-API-client aan en geeft je de tekst van de assistent terug, in één aanroep of token voor token.

Componentklasse

TsgcAIChat

Doel

Providerneutrale LLM-chat

Familie

Chat & agents

Platforms

Win32 en Win64

sgcAI is zelfstandig. Dit component zit in sgcAI, samen met de sgcWebSockets Core runtime waarop het gebouwd is.

Stel een model een vraag

Kies de provider, geef de sleutel en het model op en roep Chat aan. De streaming- en async-varianten gebruiken dezelfde configuratie.

uses
  sgcAI, sgcAI_Chat;

var
  oChat: TsgcAIChat;
  vAnswer: string;
begin
  oChat := TsgcAIChat.Create(nil);
  oChat.Provider := aicpAnthropic;
  oChat.ChatOptions.ApiKey    := 'sk-ant-...';
  oChat.ChatOptions.Model     := 'claude-sonnet-4-5';
  oChat.ChatOptions.MaxTokens := 4096;
  oChat.SystemMessage := 'You are a Delphi expert.';
  oChat.MaxHistoryMessages := 20;

  // Blocking call, returns the assistant text.
  vAnswer := oChat.Chat('How do I keep a WebSocket connection alive?');

  // Token by token, delivered on OnChatStream.
  oChat.OnChatStream := OnChatStreamHandler;
  oChat.ChatStream('Now explain it to a beginner.');
end;

procedure TForm1.OnChatStreamHandler(Sender: TObject;
  const aChunk: string; var Cancel: Boolean);
begin
  Memo1.Text := Memo1.Text + aChunk;
  Cancel := StopRequested;   // abort a long generation
end;
// includes: sgcAI.hpp, sgcAI_Chat.hpp

TsgcAIChat *oChat = new TsgcAIChat(NULL);
oChat->Provider = aicpOpenAI;
oChat->ChatOptions->ApiKey = "sk-...";
oChat->ChatOptions->Model  = "gpt-6-astra";
oChat->SystemMessage = "You are a Delphi expert.";

String vAnswer = oChat->Chat("How do I keep a WebSocket connection alive?");

// Local models: same code, no data leaves the machine.
oChat->Provider = aicpOllama;
oChat->ChatOptions->BaseUrl = "http://127.0.0.1:11434";
oChat->ChatOptions->Model   = "llama3";
vAnswer = oChat->Chat("Same question, local model.");

Belangrijkste eigenschappen & methoden

De leden die je het vaakst gebruikt.

Provider

Provider kiest de leverancier: aicpOpenAI, aicpAnthropic, aicpGemini, aicpDeepSeek, aicpOllama, aicpGrok of aicpMistral. Als je hem wijzigt, wordt de client in de cache van de vorige provider vrijgegeven.

ChatOptions

ApiKey, Model, MaxTokens, Temperature, TopP en BaseUrl. Laat je Temperature en TopP op hun standaardwaarde staan, dan worden ze weggelaten uit het verzoek en geldt de standaard van de provider.

Gesprek

SystemMessage legt de persona vast voor elke beurt. MaxHistoryMessages begrenst hoeveel eerdere berichten opnieuw worden meegestuurd, wat de tokenkosten beperkt. ClearHistory en GetHistory resetten en lezen het transcript.

Aanroepen

Chat blokkeert en geeft het antwoord terug. ChatStream streamt over SSE. ChatWithSystem overschrijft de systeemprompt voor één beurt. ChatAsync geeft een future terug op Delphi 2010 en later.

Gebeurtenissen

OnChatMessage meldt elk voltooid bericht met zijn rol. OnChatStream levert elke chunk en draagt een Cancel-vlag mee. OnChatError brengt fouten van de provider en van het transport naar boven.

Documenten en extractie

ChatWithDocument en ChatWithDocumentBase64 versturen een PDF of een afbeelding met het bericht, ChatWithAttachments en ChatJSONWithAttachments versturen er meerdere, gehouden in een TsgcAIChatAttachments-lijst. OpenAI, Anthropic en Gemini lezen PDF's native, de andere providers nemen afbeeldingen. Koppel de chat aan een TsgcAIDocumentExtractor om facturen, bonnetjes en identiteitsdocumenten om te zetten in JSON die tegen een schema is gevalideerd, met een confidence per veld.

Lokale modellen

Met Provider op aicpOllama wijst ChatOptions.BaseUrl het component naar je eigen Ollama-host, zodat prompts en antwoorden de machine nooit verlaten.

Tool calling

ChatWithTools stuurt je tooldefinities (naam, beschrijving en JSON Schema) met het bericht mee en geeft de toolaanroepen terug die het model vraagt. Voer ze uit, geef elk resultaat terug met AddToolResult en roep opnieuw aan. Het werkt op alle zeven providers, elk in zijn eigen formaat. TsgcAIAgent draait deze loop voor je.

Modelaliassen en fallback

ChatOptions.Model kan een alias zijn zoals fast of smart, in ModelAliases gekoppeld aan een model of aan provider:model, en geladen met LoadModelAliasesFromFile, LoadModelAliasesFromJSON of LoadModelAliasesFromURL. Fallbacks geeft de volgende provider en het volgende model op die worden geprobeerd bij een verbindingsfout, HTTP 5xx, HTTP 429 of een onbekend model, en OnFallback meldt elke overstap.

Tokengebruik en guardrails

LastUsage en OnChatUsage melden provider, model, invoer-, uitvoer- en gecachete tokens van elk verzoek, met UserId en SessionId, en LastFinishReason vertelt waarom het laatste antwoord eindigde, zoals stop of length. Koppel een TsgcAIUsageMeter aan UsageMeter voor kosten en budgetten, en een TsgcAIGuardrails aan Guardrails voor PII-maskering, toolregels en schemavalidatie.

Modelaliassen, fallback en tokengebruik

Geef modellen een naam op basis van hun rol, blijf antwoorden als een provider uitvalt en lees de tokens van elk verzoek af. Nieuw in 2026.11.0.

uses
  sgcAI, sgcAI_Chat;

procedure TForm1.ChatWithFallback;
var
  oFallback: TsgcAIChatFallback;
begin
  sgcAIChat1.Provider := aicpOpenAI;
  sgcAIChat1.ChatOptions.ApiKey := 'sk-...';
  // aliases: alias=model or alias=provider:model
  sgcAIChat1.ModelAliases.Add('fast=gpt-6-luna');
  sgcAIChat1.ModelAliases.Add('smart=anthropic:claude-opus-5-5');
  sgcAIChat1.ProviderApiKeys.Add('anthropic=sk-ant-...');
  sgcAIChat1.ChatOptions.Model := 'fast';
  // tried in order on a connection error, HTTP 5xx, HTTP 429 or an unknown model
  oFallback := sgcAIChat1.Fallbacks.Add;
  oFallback.Provider := aicpGemini;
  oFallback.Model := 'gemini-3-flash';
  oFallback.ApiKey := 'AIza...';
  sgcAIChat1.OnFallback := DoFallback;

  Memo1.Lines.Add(sgcAIChat1.Chat('Write a haiku about Delphi.'));
  Memo1.Lines.Add(Format('Answered by %s %s: %d input, %d output tokens',
    [sgcAIChat1.LastUsage.Provider, sgcAIChat1.LastUsage.Model,
    sgcAIChat1.LastUsage.InputTokens, sgcAIChat1.LastUsage.OutputTokens]));
end;

procedure TForm1.DoFallback(Sender: TObject; const aFromProvider, aFromModel,
  aToProvider, aToModel, aError: string);
begin
  Memo1.Lines.Add('Fallback from ' + aFromProvider + ' to ' + aToProvider +
    ': ' + aError);
end;

Specificaties & referenties

Gezaghebbende bronnen voor de diensten en protocollen die dit component gebruikt.

Blijf ontdekken

Online helpVolledige API-referentie en gebruiksgids voor de sgcAI-componenten.
Alle sgcAI-componentenBekijk de volledige functiematrix van alle 15 componenten.
Download de gratis proefversieProbeer alle zeven providers met je eigen API-sleutels.
PrijzenSingle-, Team- en Site-licenties, volledige broncode.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om aan de slag te gaan?

Download de gratis proefversie en zet in een paar minuten een taalmodel achter een Delphi-formulier.