Google Gemini, bugün mevcut olan en güçlü çok modlu yapay zeka model ailelerinden biridir; metin üretimi, görüntü anlama, yapılandırılmış çıktılar ve geniş bir kullanım yelpazesinde işlev çağırma konularında üstünlük gösterir. Gemini'yi uygulamalarına entegre etmek isteyen Delphi geliştiricileri için sgcWebSockets, TsgcHTTP_API_Gemini sunar; bu, tüm Google Gemini API yüzeyini saran kapsamlı, yerel bir bileşendir.
İster sohbet asistanları oluşturuyor, yapılandırılmış veri üretiyor, görüntü işliyor, anlamsal arama için embeddings oluşturuyor ister araçla zenginleştirilmiş iş akışlarını düzenliyor olun, bu bileşen temiz, tip güvenli Delphi kodu aracılığıyla her Gemini özelliğine doğrudan erişim sağlar. REST kalıp kodu yok. JSON ile boğuşmak yok. Yalnızca bileşeni bırakın, API anahtarınızı ayarlayın ve oluşturmaya başlayın.
Tam API Kapsamı
Google Gemini API'sinin her büyük özelliği kutudan çıkar çıkmaz desteklenir.
|
İçerik Üretimi İsteğe bağlı sistem talimatlarıyla istemlerden metin üretin. Çıktıyı temperature, top-p, top-k ve durdurma dizileriyle ince ayarlayın. |
Gerçek Zamanlı Akış Server-Sent Events kullanarak yanıtları belirteç belirteç akıtın. Yanıtları üretildikçe gösteren duyarlı arayüzler oluşturun. |
Görüntü (Vision) Bir metin istemiyle base64 kodlu veri göndererek görüntüleri analiz edin. Gemini, görsel içeriği tanımlar, yorumlar ve hakkında akıl yürütür. |
|
Yapılandırılmış JSON Çıktısı Gemini'yi şemanıza uygun geçerli JSON döndürmeye zorlayın. Garantili ayrıştırılabilir sonuçlar için bir yanıt MIME türü ve şema ayarlayın. |
İşlev Çağırma JSON Schema ile özel işlevler tanımlayın. Gemini bunları ne zaman çağıracağına karar vererek aracılı, çok adımlı iş akışlarını mümkün kılar. |
Embeddings Metin için vektör embeddings üretin. Anlamsal arama, kümeleme, sınıflandırma ve öneri sistemlerine güç verin. |
|
Belirteç Sayımı İstek göndermeden önce belirteçleri sayın. Maliyetleri doğru bir şekilde tahmin edin ve bağlam penceresi bütçelerini yönetin. |
Model Yönetimi Mevcut tüm Gemini modellerini listeleyin veya giriş/çıkış belirteç sınırları dahil belirli bir modelin ayrıntılarını alın. |
Yerleşik Yeniden Deneme & Günlük Kaydı Yapılandırılabilir deneme ve bekleme aralıklarıyla geçici hatalarda otomatik yeniden deneme. Hata ayıklama için tam istek/yanıt günlük kaydı. |
Başlarken
Google Gemini'yi Delphi projenize bir dakikadan kısa sürede entegre edin. Bileşeni bırakın, API anahtarınızı yapılandırın ve ilk mesajınızı gönderin.
// 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;
İki API stili. Her özellik hem kolaylık metotları (dize tabanlı, minimum kod) hem de tipli istek/yanıt sınıfları (tam denetim, tip güvenliği) sunar. Kullanım senaryonuza en uygun yaklaşımı seçin.
İçerik Üretimi & Akış
GenerateContent API'si, her Gemini etkileşiminin temelidir. İsteğe bağlı sistem talimatlarıyla metin gönderin ve yanıtları senkron olarak veya gerçek zamanlı akış halinde alın.
Sistem Talimatları
Konuşma için bağlamı, kişiliği veya kısıtlamaları belirleyen bir sistem talimatı sağlayarak Gemini'nin davranışını denetleyin.
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."
Gerçek Zamanlı Akış
Duyarlı kullanıcı arayüzleri için, Server-Sent Events kullanarak Gemini'nin yanıtını belirteç belirteç akıtın. OnHTTPAPISSE olay işleyicisini atayın ve _CreateContentStream çağırın.
// 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;
Gelişmiş Tipli API
İstek parametreleri üzerinde tam denetim için (temperature, top-p, top-k, durdurma dizileri, maksimum çıkış belirteçleri) tipli istek ve yanıt sınıflarını kullanın.
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;
Görüntü (Vision), Görüntü Anlama
Gemini doğal olarak çok modludur. Bir metin istemiyle birlikte fotoğraflar, ekran görüntüleri, diyagramlar veya grafikler gönderin ve ayrıntılı açıklamalar, veri çıkarımı veya görsel soru-cevap alın.
// 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;
Kullanım senaryosu. Kalite denetimini otomatikleştirin, erişilebilirlik için alt metin üretin, grafiklerden veri çıkarın veya görsel arama özellikleri oluşturun; hepsi yerel Delphi kodundan.
Yapılandırılmış JSON Çıktısı
Gemini'nin tam şemanıza uygun, ayrıştırılabilir geçerli JSON döndürmesini garanti edin. Son işlemeyi ortadan kaldırmak için bir yanıt MIME türü ve şema ayarlayın; yanıt, doğrudan Delphi kayıtlarınıza seri durumdan çıkarılmaya hazırdır.
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;
Şema uygulaması. ResponseMimeType'ı 'application/json' olarak ayarlayıp bir ResponseSchema sağlayarak, Gemini her seferinde yapısal olarak geçerli çıktıyı garanti eder.
İşlev Çağırma
JSON Schema ile özel işlevler tanımlayın; Gemini bunları ne zaman ve nasıl çağıracağına karar verecektir. Bu, yapay zekayı iş mantığınıza bağlayan aracılı, çok adımlı iş akışları oluşturmanın temelidir.
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
Metin için yüksek kaliteli vektör embeddings üretin. Embeddings; anlamsal aramaya, belge kümelemesine, öneri motorlarına ve sınıflandırma görevlerine güç verir.
// Generate embeddings for a text
var
vEmbedding: string;
begin
vEmbedding := Gemini._EmbedContent(
'text-embedding-004',
'Delphi is a powerful programming language.');
ShowMessage(vEmbedding);
end;
Tam denetim için, ham embedding değerleri dizisine erişmek üzere tipli API'yi kullanın.
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;
Belirteç Sayımı
İstek göndermeden önce maliyetleri tahmin edin ve bağlam penceresi bütçelerini doğru bir şekilde yönetin.
var
vTokens: string;
begin
vTokens := Gemini._CountTokens(
'gemini-2.5-flash',
'How many tokens does this message consume?');
ShowMessage(vTokens);
end;
Model Yönetimi
Mevcut Gemini modellerini programatik olarak sorgulayın. Tüm modelleri listeleyin veya görünen ad, açıklama ve belirteç sınırları dahil belirli bir model kimliğinin ayrıntılarını alın.
// 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;
Yapılandırma & Seçenekler
Bileşen davranışını kapsamlı yapılandırma seçenekleriyle ince ayarlayın.
| Özellik | Açıklama |
|---|---|
GeminiOptions.ApiKey |
Google Gemini API anahtarınız (zorunlu) |
HttpOptions.ReadTimeout |
Milisaniye cinsinden HTTP okuma zaman aşımı (varsayılan: 60000) |
LogOptions.Enabled |
İstek/yanıt günlük kaydını etkinleştirir |
LogOptions.FileName |
İstek/yanıt yakalama için günlük dosyası yolu |
RetryOptions.Enabled |
Geçici hatalarda otomatik yeniden deneme (429, 503) |
RetryOptions.Retries |
Maksimum yeniden deneme sayısı (varsayılan: 3) |
RetryOptions.Wait |
Milisaniye cinsinden yeniden denemeler arası bekleme süresi (varsayılan: 3000) |
İstek Parametreleri
| Parametre | Açıklama |
|---|---|
Temperature |
Örnekleme sıcaklığı (0,0–2,0). Düşük değerler = daha deterministik. |
TopP |
Çekirdek örnekleme (0,0–1,0). Kümülatif olasılık eşiğini denetler. |
TopK |
Top-K örnekleme. Belirteç seçimini en iyi K aday ile sınırlar. |
MaxOutputTokens |
Yanıttaki maksimum belirteç sayısı (varsayılan: 4096). |
StopSequences |
Karşılaşıldığında üretimi durduran özel diziler. |
ResponseMimeType |
Çıkış biçimi: JSON için 'application/json', metin için 'text/plain'. |
ToolChoice |
Modelin çağrılacak işlevleri nasıl seçeceğini denetler. |
