Vertex AI, Google'ın Google Cloud üzerindeki üretken yapay zeka platformudur. Gemini modellerini, bir GenerateContent çağrısının isteminizi gönderip modelin yanıtını döndürdüğü bir gRPC PredictionService aracılığıyla sunar. sgcWebSockets Enterprise, TsgcGRPCClient üzerine oturan türlü bir Vertex AI gRPC istemcisi içerir, böylece Gemini'yi Delphi ve C++Builder'dan doğrudan gRPC üzerinden, herhangi bir harici çalışma zamanı olmadan ve Protocol Buffers'ı elle bir araya getirmeden çağırabilirsiniz.
Nasıl çalışır
gRPC, HTTP/2 üzerinde çerçevelenmiş Protocol Buffers mesajlarıdır, bu nedenle bir Vertex AI çağrısı, bölgesel aiplatform.googleapis.com uç noktasına bir HTTP/2 isteğidir. Taşıma, TLS etkinken 443 numaralı bağlantı noktasında bölge ana bilgisayarına yönlendirilmiş bir TsgcHTTP2Client'tır ve TsgcGRPCClient, onun üzerinde çerçevelemeyi, üst bilgileri, zaman aşımlarını ve trailer'ları işler.
Vertex AI yardımcısı, sgcGRPC_Google_VertexAI içindeki bir dizi türlü mesaj sınıfıdır. Kod içinde bir TsgcGRPCVertexAIGenerateContentRequest oluşturursunuz, onu ToBytes ile serileştirir, baytları gRPC istemcisine verir, ardından yanıt baytlarını bir TsgcGRPCVertexAIGenerateContentResponse'a geri yüklersiniz. İstek, Vertex AI şemasını yansıtır: bir istek, bir model kaynak adı ve bir içerik listesi taşır, her içeriğin bir rolü ve bir veya daha fazla parçası vardır ve bir parça ya metin ya da satır içi ikili veri tutar.
Vertex AI, Google Cloud hizmet hesabı kimlik doğrulaması kullanır. İstemci, bir hizmet hesabı JWT'si imzalar ve onu gRPC meta verisinde bir authorization: Bearer üst bilgisi olarak gönderir, böylece her çağrı bölgesel Vertex AI uç noktasına karşı kimlik doğrulanır.
Bir hizmet hesabıyla kimlik doğrulama
Google Cloud istemcisi, hizmet hesabı JSON anahtarınızdan kendinden imzalı bir hizmet hesabı JWT'si imzalar. Bu JWT hedef kitleye bağlıdır, bu nedenle bölgesel Vertex AI uç noktasını hedeflemesi gerekir, aksi takdirde aiplatform.googleapis.com onu UNAUTHENTICATED ile reddeder. Bir belirteç elde edildikten sonra, her çağrıyla taşınması için onu gRPC istemcisinin DefaultMetadata'sına ekleyin.
uses
sgcHTTP_Google_Cloud, sgcGRPC_Client;
// CloudClient is a TsgcHTTPGoogleCloud_PubSub_Client used here only to sign the JWT
CloudClient.GoogleCloudOptions.Authentication := gcaJWT;
CloudClient.GoogleCloudOptions.JWT.ClientEmail := ClientEmail;
CloudClient.GoogleCloudOptions.JWT.PrivateKeyId := PrivateKeyId;
CloudClient.GoogleCloudOptions.JWT.PrivateKey.Text := PrivateKey;
CloudClient.GoogleCloudOptions.JWT.ProjectId := ProjectId;
CloudClient.GoogleCloudOptions.JWT.API_Endpoint :=
'https://' + Region + '-aiplatform.googleapis.com/';
// after the token arrives in OnAuthToken
GRPC.DefaultMetadata.Clear;
GRPC.DefaultMetadata.Add('authorization', 'Bearer ' + Token);
Taşımanın kurulması
Bölgesel ana bilgisayar için bir TsgcHTTP2Client oluşturun ve onu gRPC istemcisine atayın. Vertex AI, application/grpc+proto konuşur, bu nedenle kanal içerik türünü grpcProto olarak bırakın.
uses
sgcHTTP2_Client, sgcGRPC_Client, sgcGRPC_Types;
HTTP2 := TsgcHTTP2Client.Create(nil);
HTTP2.Host := Region + '-aiplatform.googleapis.com'; // e.g. us-central1-...
HTTP2.Port := 443;
HTTP2.TLS := True;
GRPC := TsgcGRPCClient.Create(nil);
GRPC.Client := HTTP2;
GRPC.ChannelOptions.ContentType := grpcProto;
GRPC.ChannelOptions.Compression := grpcNoCompression;
HTTP2.Active := True;
Bir istemden içerik oluşturma
İsteği türlü mesaj sınıflarından oluşturun. Model, tam kaynak adıdır, tek içerik user rolüne sahiptir ve istem bir metin parçasına girer. Call, yanıt gelene kadar bloklar ve türlü bir yanıta yüklediğiniz ham Data baytlarıyla bir TsgcGRPCResponse döndürür.
uses
sgcGRPC_Client, sgcGRPC_Types, sgcGRPC_Google_VertexAI;
var
oRequest: TsgcGRPCVertexAIGenerateContentRequest;
oContent: TsgcGRPCVertexAIContent;
oPart: TsgcGRPCVertexAIPart;
oResponse: TsgcGRPCResponse;
begin
oRequest := TsgcGRPCVertexAIGenerateContentRequest.Create;
try
oRequest.Model := 'projects/' + ProjectId + '/locations/' + Region +
'/publishers/google/models/' + Model; // e.g. gemini-2.0-flash
oContent := oRequest.AddContent;
oContent.Role := 'user';
oPart := oContent.AddPart;
oPart.Text := 'Explain gRPC in one sentence.';
oResponse := GRPC.Call(
'google.cloud.aiplatform.v1.PredictionService', 'GenerateContent',
oRequest.ToBytes);
if oResponse.StatusCode = grpcOK then
ParseResponse(oResponse.Data)
else
ShowMessage('gRPC error: ' + oResponse.StatusMessage);
finally
oRequest.Free;
end;
end;
Yanıtı okuma
Yanıt baytlarını bir TsgcGRPCVertexAIGenerateContentResponse'a yükleyin. Her biri içerik parçaları ve bir bitiş nedeniyle birlikte adayları, ayrıca istem, aday ve toplam belirteç sayılarını içeren bir UsageMetadata bloğunu sunar.
procedure ParseResponse(const aData: TBytes);
var
oResponse: TsgcGRPCVertexAIGenerateContentResponse;
oCandidate: TsgcGRPCVertexAICandidate;
i, j: Integer;
begin
oResponse := TsgcGRPCVertexAIGenerateContentResponse.Create;
try
oResponse.LoadFromBytes(aData);
for i := 0 to oResponse.CandidateCount - 1 do
begin
oCandidate := oResponse.Candidate(i);
for j := 0 to oCandidate.Content.PartCount - 1 do
Memo1.Lines.Add(oCandidate.Content.Part(j).Text);
end;
Memo1.Lines.Add('Total tokens: ' +
IntToStr(oResponse.UsageMetadata.TotalTokenCount));
finally
oResponse.Free;
end;
end;
Oluşturma yapılandırması ve güvenlik ayarları
İstek ayrıca isteğe bağlı bir GenerationConfig ve bir güvenlik ayarları listesi taşır. Örneklemeyi ve uzunluğu kontrol etmek için yapılandırmayı kullanın: Temperature, TopP, TopK, CandidateCount, MaxOutputTokens ve StopSequences. Her güvenlik ayarı, bir zarar Category'sini bir engelleme Threshold'u ile eşleştirir.
oRequest.GenerationConfig.Temperature := 0.7;
oRequest.GenerationConfig.MaxOutputTokens := 1024;
oRequest.GenerationConfig.StopSequences.Add('END');
with oRequest.AddSafetySetting do
begin
Category := 7; // HARM_CATEGORY_DANGEROUS_CONTENT
Threshold := 2; // BLOCK_MEDIUM_AND_ABOVE
end;
Akışlı yanıtlar
Vertex AI ayrıca, yanıtı tek bir blok yerine bir dizi kısmi parça olarak döndüren sunucu akışı karşılığı olan StreamGenerateContent'i sunar. Vertex AI yardımcısı TsgcGRPCClient üzerine kurulu olduğundan, aynı türlü istek istemcinin sunucu akışı API'sini besler: çağrıyı başlatın, her parçayı geldikçe bir TsgcGRPCVertexAIGenerateContentResponse'a çözün ve model yazdıkça kullanıcı arayüzünü güncellemek için adaylarından gelen metni ekleyin.
Kullanılabilirlik
Vertex AI gRPC istemcisi, sgcWebSockets Enterprise sürümünün bir parçasıdır. Çalıştırılmaya hazır bir örnek Demos\21.GRPC\17.Vertex_AI içinde yer alır: hizmet hesabı JSON anahtarınızı yapıştırın veya yükleyin, projeyi, bölgeyi ve modeli ayarlayın, bağlanın, ardından Generate Content ile bir istem gönderin. Tam referans gRPC Client ürün sayfasında bulunur.
Sorularınız veya geri bildirimleriniz mi var? Bize ulaşın. Kodu yazan kişilerden bir yanıt alacaksınız.
