Google Gemini is een van de krachtigste multimodale AI-modelfamilies die vandaag beschikbaar is. Hij blinkt uit in tekstgeneratie, beeldbegrip, gestructureerde outputs en function-calling voor een breed scala aan use cases. Voor Delphi-ontwikkelaars die Gemini in hun toepassingen willen integreren, biedt sgcWebSockets TsgcHTTP_API_Gemini — een veelomvattend, native component dat het volledige oppervlak van de Google Gemini-API verpakt.
Of je nu conversationele assistenten bouwt, gestructureerde data genereert, afbeeldingen verwerkt, embeddings maakt voor semantische zoekopdrachten of tool-uitgebreide workflows orkestreert: dit component geeft je rechtstreeks toegang tot elke Gemini-functie via nette, type-veilige Delphi-code. Geen REST-boilerplate. Geen JSON-gepuzzel. Plaats het component, stel je API-sleutel in en begin met bouwen.
Volledige API-dekking
Elke belangrijke functie van de Google Gemini-API wordt direct ondersteund.
| Content-generatie Genereer tekst uit prompts met optionele system-instructions. Verfijn de output met temperature, top-p, top-k en stop-sequences. |
Realtime-streaming Stream antwoorden token voor token via Server-Sent Events. Bouw responsive UI's die antwoorden tonen terwijl ze worden gegenereerd. |
Vision Analyseer afbeeldingen door base64-gecodeerde data met een tekst-prompt te versturen. Gemini beschrijft, interpreteert en redeneert over visuele inhoud. |
| Gestructureerde JSON-output Dwing Gemini om geldige JSON terug te geven die aan jouw schema voldoet. Stel een response-MIME-type en -schema in voor gegarandeerd parsbare resultaten. |
Function-calling Definieer eigen functies met JSON Schema. Gemini beslist wanneer hij ze aanroept, waardoor agentische, meerstaps workflows mogelijk worden. |
Embeddings Genereer vector-embeddings voor tekst. Voed semantische zoekopdrachten, clustering, classificatie en aanbevelingssystemen. |
| Token-telling Tel tokens voordat je requests verstuurt. Schat kosten nauwkeurig en beheer budgets voor context-windows. |
Modelbeheer Vraag alle beschikbare Gemini-modellen op of haal details op voor een specifiek model, inclusief invoer-/uitvoer-tokenlimieten. |
Ingebouwde retry & logging Automatisch opnieuw proberen bij tijdelijke storingen met instelbare pogingen en wachttijden. Volledige request/response-logging voor debuggen. |
Aan de slag
Integreer Google Gemini binnen een minuut in je Delphi-project. Plaats het component, configureer je API-sleutel en verstuur je eerste bericht.
// Create the component and configure the API key
var
Gemini: TsgcHTTP_API_Gemini;
vResponse: string;
begin
Gemini := TsgcHTTP_API_Gemini.Create(nil);
Try
Gemini.GeminiOptions.ApiKey := 'YOUR_API_KEY';
// Send a simple message to Gemini
vResponse := Gemini._CreateContent(
'gemini-2.5-flash', 'Hello, Gemini!');
ShowMessage(vResponse);
Finally
Gemini.Free;
End;
end;
Twee API-stijlen. Elke functie biedt zowel gemaks-methoden (op basis van strings, minimale code) als getypte request/response-klassen (volledige controle, typeveiligheid). Kies de aanpak die het beste past bij jouw use case.
Content-generatie & streaming
De GenerateContent-API is de basis van elke Gemini-interactie. Verstuur tekst met optionele system-instructions en ontvang antwoorden synchroon of in realtime gestreamd.
System-instructions
Stuur het gedrag van Gemini bij door een system-instruction mee te geven die de context, persoonlijkheid of beperkingen voor het gesprek vastlegt.
vResponse := Gemini._CreateContentWithSystem(
'gemini-2.5-flash',
'You are a helpful assistant that responds in Spanish.',
'What is the capital of France?');
// Returns: "La capital de Francia es París."
Realtime-streaming
Stream voor responsive-gebruikersinterfaces het antwoord van Gemini token voor token via Server-Sent Events. Wijs de event-handler OnHTTPAPISSE toe en roep _CreateContentStream aan.
// Enable streaming via SSE
Gemini.OnHTTPAPISSE := OnSSEEvent;
Gemini._CreateContentStream('gemini-2.5-flash',
'Tell me a story about a brave explorer.');
procedure TForm1.OnSSEEvent(Sender: TObject;
const aEvent, aData: string; var Cancel: Boolean);
begin
// aData: JSON payload with generated content
Memo1.Lines.Add(aData);
end;
Geavanceerde getypeerde API
Gebruik de getypte request- en response-klassen voor volledige controle over request-parameters — temperature, top-p, top-k, stop-sequences, max output tokens.
var
oRequest: TsgcGeminiClass_Request_GenerateContent;
oResponse: TsgcGeminiClass_Response_GenerateContent;
begin
oRequest := TsgcGeminiClass_Request_GenerateContent.Create;
Try
oRequest.Model := 'gemini-2.5-flash';
oRequest.SystemInstruction := 'You are a helpful assistant.';
oRequest.MaxOutputTokens := 2048;
oRequest.Temperature := 0.7;
oRequest.TopP := 0.9;
oRequest.TopK := 40;
oRequest.Contents.Add('user', 'Explain quantum computing in simple terms.');
oResponse := Gemini.CreateContent(oRequest);
Try
if Length(oResponse.Candidates) > 0 then
ShowMessage(oResponse.Candidates[0].Parts[0].Text);
Finally
oResponse.Free;
End;
Finally
oRequest.Free;
End;
end;
Vision — beeldherkenning
Gemini is van nature multimodaal. Stuur foto's, screenshots, diagrammen of grafieken naast een tekst-prompt mee en ontvang gedetailleerde beschrijvingen, data-extractie of visuele Q&A.
// Load an image and ask Gemini to describe it
var
vBase64: string;
begin
vBase64 := sgcBase64Encode(LoadFileToBytes('product-photo.png'));
ShowMessage(Gemini._CreateVisionContent(
'gemini-2.5-flash',
'Describe this product image for an e-commerce listing.',
vBase64, 'image/png'));
end;
Use case. Automatiseer kwaliteitsinspectie, genereer alt-tekst voor toegankelijkheid, extraheer data uit grafieken of bouw visuele zoekfuncties — allemaal vanuit native Delphi-code.
Gestructureerde JSON-output
Garandeer dat Gemini geldige, parsbare JSON retourneert die exact aan jouw schema voldoet. Stel een response-MIME-type en -schema in om nabewerking te elimineren — de respons is direct klaar om te deserialiseren naar je Delphi-records.
var
vSchema, vResponse: string;
begin
vSchema :=
'{"type":"object","properties":{"name":{"type":"string"},' +
'"age":{"type":"integer"}},"required":["name","age"]}';
vResponse := Gemini._CreateContentJSON(
'gemini-2.5-flash',
'Extract the name and age: John is 30 years old.',
vSchema);
// Returns: {"name": "John", "age": 30}
end;
Schema-handhaving. Door ResponseMimeType op 'application/json' te zetten en een ResponseSchema mee te geven, garandeert Gemini elke keer structureel geldige output.
Function-calling
Definieer eigen functies met JSON Schema en Gemini beslist wanneer en hoe hij ze aanroept. Dit is de basis voor het bouwen van agentische, meerstaps workflows die de AI verbinden met je bedrijfslogica.
var
oRequest: TsgcGeminiClass_Request_GenerateContent;
oFunc: TsgcGeminiClass_Request_FunctionDeclaration;
oResponse: TsgcGeminiClass_Response_GenerateContent;
begin
oRequest := TsgcGeminiClass_Request_GenerateContent.Create;
Try
oRequest.Model := 'gemini-2.5-flash';
// Define a function
oFunc := TsgcGeminiClass_Request_FunctionDeclaration.Create;
oFunc.Name := 'get_weather';
oFunc.Description := 'Get the current weather in a location';
oFunc.Parameters :=
'{"type":"object","properties":{"location":{"type":"string"}}}';
oRequest.FunctionDeclarations.Add(oFunc);
oRequest.Contents.Add('user',
'What is the weather in Madrid?');
oResponse := Gemini.CreateContent(oRequest);
Try
// Check if Gemini wants to call a function
if oResponse.Candidates[0].Parts[0].FunctionCallName '' then
begin
ShowMessage('Function: ' + oResponse.Candidates[0].Parts[0].FunctionCallName);
ShowMessage('Args: ' + oResponse.Candidates[0].Parts[0].FunctionCallArgs);
end;
Finally
oResponse.Free;
End;
Finally
oRequest.Free;
End;
end;
Embeddings
Genereer hoogwaardige vector-embeddings voor tekst. Embeddings voeden semantische zoekopdrachten, document-clustering, aanbevelings-engines en classificatie-taken.
// Generate embeddings for a text
var
vEmbedding: string;
begin
vEmbedding := Gemini._EmbedContent(
'text-embedding-004',
'Delphi is a powerful programming language.');
ShowMessage(vEmbedding);
end;
Gebruik voor volledige controle de getypeerde API om de ruwe embedding-waarden-array te benaderen.
var
oResponse: TsgcGeminiClass_Response_Embedding;
i: Integer;
begin
oResponse := Gemini.EmbedContent(
'text-embedding-004',
'Delphi is a powerful programming language.');
Try
for i := 0 to Length(oResponse.Values) - 1 do
Memo1.Lines.Add(FloatToStr(oResponse.Values[i]));
Finally
oResponse.Free;
End;
end;
Token-telling
Schat kosten en beheer budgets voor context-windows nauwkeurig voordat je requests verstuurt.
var
vTokens: string;
begin
vTokens := Gemini._CountTokens(
'gemini-2.5-flash',
'How many tokens does this message consume?');
ShowMessage(vTokens);
end;
Modelbeheer
Vraag beschikbare Gemini-modellen programmatisch op. Toon alle modellen of haal details op voor een specifieke model-ID, inclusief displaynaam, beschrijving en tokenlimieten.
// List all available Gemini models
vModels := Gemini._GetModels;
// Get details for a specific model
vModel := Gemini._GetModel('gemini-2.5-flash');
// Typed API: access model properties directly
var
oModel: TsgcGeminiClass_Response_Model;
begin
oModel := Gemini.GetModel('gemini-2.5-flash');
Try
ShowMessage('Name: ' + oModel.DisplayName);
ShowMessage('Input limit: ' + IntToStr(oModel.InputTokenLimit));
ShowMessage('Output limit: ' + IntToStr(oModel.OutputTokenLimit));
Finally
oModel.Free;
End;
end;
Configuratie & opties
Verfijn het gedrag van het component met uitgebreide configuratie-opties.
| Eigenschap | Beschrijving |
|---|---|
GeminiOptions.ApiKey | Je Google Gemini-API-sleutel (verplicht) |
HttpOptions.ReadTimeout | HTTP-leestime-out in milliseconden (standaard: 60000) |
LogOptions.Enabled | Schakel request/response-logging in |
LogOptions.FileName | Pad naar logbestand voor het vastleggen van request/response |
RetryOptions.Enabled | Automatisch opnieuw proberen bij tijdelijke storingen (429, 503) |
RetryOptions.Retries | Maximaal aantal nieuwe pogingen (standaard: 3) |
RetryOptions.Wait | Wachttijd tussen pogingen in milliseconden (standaard: 3000) |
Request-parameters
| Parameter | Beschrijving |
|---|---|
Temperature | Sampling-temperatuur (0,0–2,0). Lagere waarden = deterministischer. |
TopP | Nucleus-sampling (0,0–1,0). Bepaalt de cumulatieve waarschijnlijkheidsgrens. |
TopK | Top-K-sampling. Beperkt token-selectie tot de top-K-kandidaten. |
MaxOutputTokens | Maximaal aantal tokens in het antwoord (standaard: 4096). |
StopSequences | Aangepaste sequenties die generatie stoppen wanneer ze worden aangetroffen. |
ResponseMimeType | Uitvoerformaat: 'application/json' voor JSON, 'text/plain' voor tekst. |
ToolChoice | Bepaal hoe het model functies selecteert om aan te roepen. |
