sgcAI beş dakikada

Bir bileşen, bir sağlayıcı özelliği, bir çağrı. Bu sayfa bir Delphi uygulamasını bir büyük dil modeliyle konuşturur, yanıtı beklemek yerine nasıl akış olarak alacağınızı gösterir ve insanları şaşırtan tek platform sınırı konusunda net olur.

OpenAI, Claude, Gemini, DeepSeek, Ollama, Grok, Mistral
TsgcAIChat yalnızca Windows'ta çalışır
Enterprise sürümü veya bağımsız sgcAI paketi

İlk çağrı için gerekenler

Bir bileşen, bir anahtar, bir model adı ve bir istem. Oluşturulacak JSON ve yapılandırılacak HTTP istemcisi yok.

Bileşen

SGC AI palet sayfasındaki TsgcAIChat. Pakette gelen demoların kodla oluşturduğu TsgcAI_Chat sınıfının ince, yayımlanmış bir sarmalayıcısıdır.

Unit

Sınıf için sgcAI_Chat.pas veya palet bileşeni için barrel unit olan sgcAI.pas. Demolar uses sgcAI_Chat; yazar.

Sağlayıcıyı değiştiren tek özellik

TsgcAIChatProvider türünde Provider. Yedi üye aicpOpenAI, aicpAnthropic, aicpGemini, aicpDeepSeek, aicpOllama, aicpGrok ve aicpMistral değerleridir. Kodunuzda başka hiçbir şey değişmez.

Platform, bunu okuyun

TsgcAIChat yalnızca Windows için, yani Win32 ve Win64 için derlenir. Sağlayıcıya özgü REST istemcileri ile MCP istemcisi ve sunucusu kısıtlı değildir. Nedeni için aşağıdaki tabloya bakın.

Gereksinimler ve sürümler

Sürüm sütunu, kodu kısıtlayan tanımdır; yanında Source/sgcVer.inc içinde bulunduğu satır yer alır.

Konu Değer
IDE Delphi 7'den RAD Studio 13'e ve eşleşen C++Builder sürümleri. ChatAsync, {$IFDEF D2010} içine sarıldığı için daha dar bir alt sınıra sahip tek üyedir.
Uses yan tümcesi TsgcAI_Chat, TsgcAIChatProvider ve olay türleri için sgcAI_Chat.
Sürüm, sgcWebSockets içinde SGC_AI, 760. satırdan 839. satıra kadar uzanan {$IFDEF SGC_EDT_ENT} bloğunun içinde, 798. satırda tanımlanır. Yani Enterprise ve üzeri; Standard değil, Professional da değil.
Sürüm, bağımsız paket sgcAI ürünü 854. satırda SGC_PACK_AI tanımlar ve 943 ile 957. satırlardaki kendi bloğu 945. satırda SGC_AI tanımlar. Aynı bileşenler, kitaplığın geri kalanı olmadan.
Neden yalnızca Windows SGC_AI için her iki tanım da 797. ve 944. satırlarda bir {$IFDEF MSWINDOWS} içinde yer alır. Windows dışında tanım hiç görünmez, bu nedenle sgcAI_Chat.pas boş bir unit olarak derlenir. Bileşen ayrıca ComponentPlatforms(pidWin32 or pidWin64) taşır.
Çok platformlu olan nedir 800. ve 954. satırlardaki SGC_AI_MCP platform koruması taşımaz. Dolayısıyla MCP istemcisi ve sunucusu Linux, macOS, iOS ve Android'de de çalışır. 787 ile 793. satırlardaki SGC_OPENAI, SGC_ANTHROPIC, SGC_GEMINI, SGC_DEEPSEEK, SGC_OLLAMA, SGC_GROK ve SGC_MISTRAL sağlayıcı tanımları da platforma bağlı değildir.

Bir Linux servisi veya mobil uygulama mı geliştiriyorsunuz? TsgcAIChat bileşenini atlayın ve sağlayıcının REST istemcisini doğrudan çağırın; örneğin TsgcHTTP_API_OpenAI veya TsgcHTTP_API_Anthropic. Delphi'den bir LLM çağırma rehberi her iki yolu yan yana gösterir.

Kurun ve palet sayfasını bulun

sgcAI, sgcWebSockets yükleyicisinin içinde ve ayrıca kendi paketi olarak gelir. Her iki durumda da kurulum aynı biçimdedir.

1. Zip dosyasını açın

İndirdiğiniz dosyayı aşağıda {$DIR} olarak adlandırılan bir klasöre açın.

2. Kitaplık yolu

Tools, Options, Library. {$DIR}\source yolunu ve IDE'niz için lib klasörünü ekleyin; örneğin {$DIR}\libD13\$(Platform).

3. Paketleri derleyin

{$DIR}\Packages\ altında IDE sürümünüz için paket grubunu açın. Önce çalışma zamanı .dpk dosyasını derleyin, ardından tasarım zamanı dcl dosyasını kurun.

4. Paleti kontrol edin

On beş bileşen içeren SGC AI adlı bir sayfa görünür. İlki TsgcAIChat bileşenidir. Windows dışı bir hedefte sayfa yoksa bu beklenen bir durumdur, çünkü SGC_AI Windows'a bağlıdır.

5. Bir API anahtarı alın

Barındırılan bir sağlayıcı için o sağlayıcıdan kendi anahtarınızı alıp ChatOptions.ApiKey özelliğine atarsınız. Model kendi makinenizde çalıştığı için Ollama hiç anahtar gerektirmez.

İlk yanıtınız, yaklaşık on satırda

Bileşeni oluşturun, bir sağlayıcı, bir anahtar ve bir model ayarlayın, ardından Chat çağırın ve döndürdüğü dizeyi okuyun.

fUnifiedChat.pas
uses
  Classes, SysUtils,
  // sgc
  sgcAI_Chat;

procedure TfrmUnifiedChat.btnChatClick(Sender: TObject);
var
  oChat: TsgcAI_Chat;
begin
  oChat := TsgcAI_Chat.Create(nil);
  try
    oChat.Provider := aicpOpenAI;
    oChat.ChatOptions.ApiKey := GetApiKey;
    oChat.ChatOptions.Model := 'gpt-4o-mini';
    oChat.ChatOptions.MaxTokens := 1024;
    oChat.SystemMessage := 'You are a concise assistant inside a Delphi ERP.';

    memoResponse.Lines.Text := oChat.Chat(memoPrompt.Text);
  finally
    oChat.Free;
  end;
end;

Sağlayıcıyı değiştirmek tek satırdır. Provider, aicpOpenAI, aicpAnthropic, aicpGemini, aicpDeepSeek, aicpOllama, aicpGrok ve aicpMistral değerlerini kabul eder. Geri kalan her şey olduğu yerde kalır.

fUnifiedChat.pas
procedure TfrmUnifiedChat.OnChatStream(Sender: TObject; const aChunk: string;
  var Cancel: Boolean);
begin
  memoResponse.Text := memoResponse.Text + aChunk;
  // set Cancel to stop the generation early
end;

procedure TfrmUnifiedChat.OnChatError(Sender: TObject; const aError: string);
begin
  memoResponse.Text := 'error: ' + aError;
end;

procedure TfrmUnifiedChat.btnChatStreamClick(Sender: TObject);
begin
  GetChat.Provider := aicpAnthropic;
  GetChat.ChatOptions.ApiKey := GetApiKey;
  GetChat.ChatOptions.Model := 'claude-sonnet-4-20250514';
  GetChat.SystemMessage := memoSystem.Text;

  memoResponse.Lines.Clear;
  GetChat.ChatStream(memoPrompt.Text);
end;

Demo bileşenini GetChat içinde bir kez oluşturur ve OnChatStream ile OnChatError olaylarını orada atar. ChatStream tam yanıtı da döndürür; bu nedenle dönüş değerini yok sayıp yalnızca olayı kullanabilir ya da ikisini birden kullanabilirsiniz.

uLocal.pas
uses
  Classes, SysUtils,
  // sgc
  sgcAI_Chat;

var
  oChat: TsgcAI_Chat;
begin
  oChat := TsgcAI_Chat.Create(nil);
  try
    // no API key at all: the model runs on this machine
    oChat.Provider := aicpOllama;
    oChat.ChatOptions.Model := 'llama3';

    // BaseUrl is read only for the Ollama provider, and only when
    // the server is not on the default address. Internally it is
    // forwarded to the Ollama client's Host property.
    oChat.ChatOptions.BaseUrl := 'http://localhost:11434';

    Writeln(oChat.Chat('Summarise this invoice in one line.'));
  finally
    oChat.Free;
  end;
end;

OllamaOptions.BaseUrl yoktur. Ham API düzeyinde özellik TsgcHTTP_API_Ollama üzerindeki OllamaOptions.Host özelliğidir ve bu katmandan onu besleyen ChatOptions.BaseUrl özelliğidir.

İlk iki sekme, form denetimleri sabit değerlerle değiştirilmiş olarak paketle gelen Demos\15.AI\02.Applications\06.UnifiedChat\fUnifiedChat.pas demosudur. Üçüncü sekme, yerel bir Ollama sunucusuna yöneltilmiş aynı bileşendir. İkinci bir demo olan 07.ConversationHistory, geçmiş API'sini aynı klasörde gösterir.

Çalıştığını kontrol edin ve çalışmadığında hatayı görün

Chat, başarısız bir çağrıda istisna oluşturmaz; bu insanları şaşırtır. Bunun yerine boş bir dize döndürür ve bir olay tetikler.

Dönüş değeri

Chat, asistan metnini bir string olarak döndürür. Boş bir dize çağrının başarısız olduğu anlamına gelir, çünkü bir hata istisna oluşturmaz.

OnChatError

procedure(Sender: TObject; const aError: string). Hem Chat hem de ChatStream istisnayı yakalar ve buraya yönlendirir. Bu, her şeyden önce bağlanacak ilk olaydır.

OnChatStream

procedure(Sender: TObject; const aChunk: string; var Cancel: Boolean). Model hâlâ yazarken not alanında metnin belirmesi, akışın tamponlama yapmadığının, gerçekten çalıştığının kanıtıdır.

Konuşma

GetHistory, bileşenin bir sonraki çağrıda yeniden oynattığı içeriği döndürür. MaxHistoryMessages bunu sınırlar ve ClearHistory baştan başlatır.

İlk seferde genellikle ne ters gider

Başarısız olan ilk çağrıların neredeyse tamamı altı sorundan kaynaklanır.

Unit Windows dışında derlenmiyor

Bu tasarım gereğidir. SGC_AI, 797. satırda ve yine 944. satırda bir {$IFDEF MSWINDOWS} içinde tanımlanır; bu nedenle Linux, macOS, iOS ve Android'de sgcAI_Chat.pas boş bir unit'tir. Bu hedeflerde sağlayıcıların REST istemcilerini kullanın.

Chat boş bir dize döndürüyor ve hiçbir şey oluşturulmuyor

Chat ve ChatStream istisnayı yutar ve imzası procedure(Sender: TObject; const aError: string) olan OnChatError olayına yönlendirir. Başka bir şeyi hata ayıklamadan önce bu olayı bağlayın.

Yerel bir Ollama modeli yok sayılıyor

Ollama temel adresi sağlayıcı seçenekleri nesnesine değil, ChatOptions.BaseUrl özelliğine girilir. Dahili olarak OllamaOptions.Host özelliğine iletilir ve BaseUrl değerinin okunduğu tek sağlayıcı odur.

Uzun bir yanıt sırasında form donuyor

Chat ve ChatStream eşzamanlıdır. Delphi 2010 ve sonrasında, IsgcFuture<string> döndüren ChatAsync kullanın. Daha eski derleyicilerde çağrıyı kendi iş parçacığınızda çalıştırın.

Model adı reddediliyor

Model adları bileşene değil sağlayıcıya aittir ve değişir. ChatOptions.Model olduğu gibi aktarılır, bu nedenle sağlayıcının konsolunda çalışan bir ad burada da çalışır.

Uzun bir konuşmada fatura büyüyor

Bileşen geçmişi her çağrıda yeniden oynatır; bir takip sorusunun çalışmasını sağlayan budur. Onu MaxHistoryMessages ile sınırlayın ve ClearHistory ile baştan başlayın.

İnsanlar ilk yanıttan sonra ne oluşturuyor

Bir istem kutusu başlangıçtır. Bu dördünün hepsi zaten pakette bulunur.

Kendi belgelerinizden yanıt verin

İçeriğinizi TsgcAIOpenAIEmbeddings ile vektörlere dönüştürün, TsgcAIDatabaseVectorFile veya TsgcAIDatabaseVectorPinecone içinde saklayın ve isteme koymak üzere en yakın pasajları getirin.

Embeddings başvurusu ve vektör veritabanı başvurusu

Onunla sesli konuşun

TsgcAIOpenAIChatBot; bir kaydediciyi, yazıya dökmeyi, sohbet çağrısını ve metinden konuşmayı tek bir bileşende birleştirir. TsgcAIOpenAITranslator aynısını canlı çeviri için yapar.

ChatBot başvurusu ve çevirmen başvurusu

Uygulamanızı bir ajana açın

MCP sunucusu bileşeni uygulamanızı bir asistanın çağırabileceği bir araca dönüştürür; MCP istemcisi ise diğer sunucuları kullanır. İkisi de Windows'a bağlı değildir, dolayısıyla Delphi'de yazılmış bir MCP sunucusu Linux'ta çalışır.

MCP sunucusu başvurusu ve MCP istemcisi başvurusu

Sağlayıcının tüm API'sini kullanın

Görüntü işleme, belgeler, genişletilmiş düşünme, toplu işler, görüntü üretimi, yazıya dökme ve denetim, tarafsız sohbet katmanında değil, sağlayıcıya özgü REST istemcilerinde bulunur.

OpenAI başvurusu ve Anthropic başvurusu

Başvuru, demolar ve belgeler

Başvuru sayfaları her seçeneği ve olayı belgelendirir. Demo projeleri indirmenin içinde, Demos\15.AI altında gelir.

Rehber, Delphi'den bir LLM çağırma Uzun biçimli anlatım: akış, araç çağırma ve barındırılan ile yerel karşılaştırması.
Başvuru, OpenAI istemcisi TsgcHTTP_API_OpenAI üzerindeki her metot, seçenek ve olay.
Başvuru, Anthropic istemcisi TsgcHTTP_API_Anthropic üzerinde mesajlar, araçlar, görüntü işleme, toplu işler ve belirteç sayımı.
Başvuru, MCP sunucusu Bir asistanın uygulamanızı çağırmasını sağlayan bileşen.
TsgcAIChat bileşen sayfası Sohbet bileşenindeki her özellik ve olay; diğer on dördü buradan bağlantılıdır.
Çevrimiçi yardım Oluşturulan başvuru, her zaman güncel sürümle uyumludur.

İlgili okumalar: yapay zeka destekli Delphi uygulamaları geliştirme, Delphi'den sağlayıcıları karşılaştırma ve bir MCP sunucusu yazma. Her ürünün kendi hızlı başlangıcı vardır ve başlarken sayfasında listelenir.

sgcAI hızlı başlangıç soruları

SGC AI palet sayfasından TsgcAIChat bileşenini bırakın. sgcAI.pas içinde, sgcAI_Chat.pas içinde bildirilen TsgcAI_Chat sınıfının yayımlanmış bir sarmalayıcısı olarak bildirilmiştir. Nesneyi çalışma zamanında oluşturan kod, pakette gelen demolarda olduğu gibi TsgcAI_Chat ve uses sgcAI_Chat; kullanır. İkisi de aynı özellikleri verir.
sgcWebSockets içinde kapı, sgcVer.inc dosyasının 798. satırında, 760 ile 839. satırlar arasındaki SGC_EDT_ENT bloğunun içinde tanımlanan SGC_AI değeridir. Bu, Enterprise sürümü ve üzeridir. Standard (675 ile 724. satırlar) ve Professional (727 ile 758. satırlar) bunu tanımlamaz. Kitaplığın geri kalanını istemiyorsanız, bağımsız sgcAI paketi 854. satırda SGC_PACK_AI tanımlar; 943 ile 957. satırlardaki kendi bloğu aynı bileşenleri açar.
Çünkü SGC_AI yalnızca bir {$IFDEF MSWINDOWS} içinde tanımlanır; Enterprise bloğunda 797. satırda ve bağımsız paket bloğunda 944. satırda. Tanım yokken sgcAI_Chat.pas ve sgcAI.pas içindeki TsgcAIChat bölümü hiçbir şeye derlenmez. Tasarım zamanı bunu ComponentPlatforms(pidWin32 or pidWin64) ile yansıtır. Bu hedeflerde bunun yerine sağlayıcıların REST istemcilerini çağırın ya da platform koruması taşımayan MCP bileşenlerini kullanın.
Provider değerini değiştirin. aicpOpenAI, aicpAnthropic, aicpGemini, aicpDeepSeek, aicpOllama, aicpGrok ve aicpMistral değerlerini kabul eder. Ardından o sağlayıcı için anahtarı ve modeli ayarlayın. aicpOllama için anahtar yoktur ve sunucu varsayılan adreste değilse, bileşenin dahili olarak Ollama istemcisine ilettiği ChatOptions.BaseUrl özelliğini ayarlarsınız.
Chat yerine ChatStream çağırın ve OnChatStream olayını işleyin. İmzası procedure(Sender: TObject; const aChunk: string; var Cancel: Boolean) biçimindedir: aChunk geldikçe not alanınıza ekleyin ve üretimi erken durdurmak için Cancel değerini True yapın.
Chat ve ChatStream istisna oluşturmaz. İstisnayı yakalar, iletiyle OnChatError olayını tetikler ve boş bir dize döndürür. Dolayısıyla işlenmemiş bir OnChatError, hiçbir şey yanıtlamamış bir model gibi görünür. Önce onu bağlayın.
Delphi 2010 ve sonrasında, {$IFDEF D2010} içine sarılı olan ve IsgcFuture<string> döndüren ChatAsync çağırın. Delphi 7'den 2009'a kadar bu metot yoktur, bu nedenle Chat çağrısını kendi oluşturduğunuz bir iş parçacığında çalıştırın.
Evet. Alışverişi tutar ve bir sonraki çağrıda yeniden oynatır; bir takip sorusunun çalışmasını sağlayan budur. MaxHistoryMessages ne kadarının yeniden oynatılacağını sınırlar, ClearHistory yeni bir konuşma başlatır ve GetHistory saklanan mesajları döndürür.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

Uygulamanızın içine bir model koymaya hazır mısınız?

Denemeyi indirin ve birleşik sohbet demosunu kendi anahtarınızla çalıştırın.