Ollama Delphi API İstemcisi

· Bileşenler

Ollama, büyük dil modellerini kendi donanımınızda yerel olarak çalıştırmayı kolaylaştırır: bulut bağımlılığı yok, API maliyeti yok ve tam veri gizliliği. Yerel yapay zeka yeteneklerini uygulamalarına entegre etmek isteyen Delphi geliştiricileri için sgcWebSockets, tüm Ollama API'sini temiz ve tür güvenli Delphi koduyla saran yerel bir bileşen olan TsgcHTTP_API_Ollama'yı sunar.

Hassas verileri şirket içinde tutmanız, çevrimdışı çalışabilen yapay zeka özellikleri oluşturmanız, kendi model kitaplığınızı yönetmeniz veya yerel vektör araması için embedding üretmeniz gerekiyorsa, bu bileşen size her Ollama özelliğine doğrudan erişim sağlar. Bulut hesabı yok. Yinelenen API ücreti yok. Yalnızca bileşeni ekleyin, Ollama örneğinize yönlendirin ve oluşturmaya başlayın.

Eksiksiz API Kapsamı

Ollama API'sinin her başlıca özelliği kutudan çıktığı haliyle desteklenir.

Chat Completions
Sistem prompt'larıyla mesaj gönderin, yanıtları senkron olarak veya akış halinde alın. Temperature, top-p ve stop dizileri üzerinde tam kontrol.
Gerçek Zamanlı Akış
Yanıtları Server-Sent Events kullanarak token token akıtın. Yerel olarak çalışan modellerle duyarlı kullanıcı arayüzleri oluşturun.
Model Yönetimi
Modelleri programatik olarak çekin, ayrıntılarını gösterin, etiketlerini listeleyin ve silin. Delphi kodundan tam yaşam döngüsü yönetimi.
Embeddings
Vektör embedding'lerini yerel olarak üretin. Verileri buluta göndermeden anlamsal aramayı, kümelemeyi ve sınıflandırmayı güçlendirin.
Kendi Sunucunuzda / Yapılandırılabilir Host
Yapılandırılabilir host URL'si aracılığıyla herhangi bir Ollama örneğine bağlanın. Yerel olarak, bir LAN sunucusunda veya özel bir bulutta çalıştırın.
Yerleşik Yeniden Deneme ve Günlük Kaydı
Yapılandırılabilir deneme sayıları ve bekleme aralıklarıyla geçici hatalarda otomatik yeniden deneme. Hata ayıklama için tam istek/yanıt günlüğü.

Başlarken

Ollama'yı Delphi projenize bir dakikadan kısa sürede entegre edin. Bileşeni ekleyin, host'u yapılandırın ve ilk mesajınızı gönderin.

// Create the component and configure the host
var
  Ollama: TsgcHTTP_API_Ollama;
  vResponse: string;
begin
  Ollama := TsgcHTTP_API_Ollama.Create(nil);
  Try
    Ollama.OllamaOptions.Host := 'http://localhost:11434';
    // Send a simple message to a local model
    vResponse := Ollama._CreateMessage(
      'llama3', 'Hello, Ollama!');
    ShowMessage(vResponse);
  Finally
    Ollama.Free;
  End;
end;

API anahtarı gerekmez. Yerel bir Ollama örneğine bağlanırken kimlik doğrulama gerekmez. Uzak veya güvenli dağıtımlar için, isteğe bağlı olarak OllamaOptions.ApiKey aracılığıyla bir API anahtarı ayarlayabilirsiniz.

Chat Completions ve Akış

Chat Completions API'si, Ollama örneğinize çektiğiniz herhangi bir modelle çalışır. İsteğe bağlı sistem prompt'larıyla metin gönderin ve yanıtları senkron olarak veya gerçek zamanlı akış halinde alın.

Sistem Prompt'ları

Konuşma için bağlamı, kişiliği veya kısıtlamaları belirleyen bir sistem prompt'u sağlayarak model davranışını kontrol edin.

vResponse := Ollama._CreateMessageWithSystem(
  'llama3',
  '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, modelin yanıtını Server-Sent Events kullanarak token token akıtın.

// Enable streaming via SSE
Ollama.OnHTTPAPISSE := OnSSEEvent;
Ollama._CreateMessageStream('llama3',
  'Write a short poem about Delphi programming.');
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ş Türlü API

İstek parametreleri (temperature, top-p, stop dizileri, max tokens) üzerinde tam kontrol için türlü istek ve yanıt sınıflarını kullanın.

var
  oRequest: TsgcOllamaClass_Request_ChatCompletion;
  oMessage: TsgcOllamaClass_Request_Message;
  oResponse: TsgcOllamaClass_Response_ChatCompletion;
begin
  oRequest := TsgcOllamaClass_Request_ChatCompletion.Create;
  Try
    oRequest.Model := 'llama3';
    oRequest.MaxTokens := 2048;
    oRequest.Temperature := 0.7;
    oMessage := TsgcOllamaClass_Request_Message.Create;
    oMessage.Role := 'user';
    oMessage.Content := 'Explain quantum computing in simple terms.';
    oRequest.Messages.Add(oMessage);
    oResponse := Ollama.CreateMessage(oRequest);
    Try
      if Length(oResponse.Choices) > 0 then
        ShowMessage(oResponse.Choices[0].MessageContent);
    Finally
      oResponse.Free;
    End;
  Finally
    oRequest.Free;
  End;
end;

Model Yönetimi

Tüm yerel model kitaplığınızı Delphi kodundan yönetin. Yeni modeller çekin, ayrıntılarını inceleyin, mevcut etiketleri listeleyin ve artık ihtiyaç duymadığınız modelleri silin; tümü programatik olarak.

Bir Model Çekme

// Download a model from the Ollama registry
Ollama._PullModel('llama3');

Model Ayrıntılarını Gösterme

// Get detailed information about a model
vDetails := Ollama._ShowModel('llama3');
ShowMessage(vDetails);

Modelleri ve Etiketleri Listeleme

// List all models via OpenAI-compatible endpoint
vModels := Ollama._GetModels;
// List model tags with detailed metadata (name, size, digest)
vTags := Ollama._GetTags;
// Typed API: access tag properties directly
var
  oTags: TsgcOllamaClass_Response_Tags;
  i: Integer;
begin
  oTags := Ollama.GetTags;
  Try
    for i := 0 to Length(oTags.Models) - 1 do
      Memo1.Lines.Add(Format('%s (%d bytes)',
        [oTags.Models[i].Name, oTags.Models[i].Size]));
  Finally
    oTags.Free;
  End;
end;

Bir Modeli Silme

// Remove a model from the local system
Ollama._DeleteModel('old-model:latest');

Embeddings

Embedding üretebilen herhangi bir modeli kullanarak vektör embedding'lerini yerel olarak üretin. Embedding'ler; anlamsal aramayı, belge kümelemeyi ve sınıflandırmayı güçlendirir, hepsi de verileri harici sunuculara göndermeden.

// Generate embeddings locally
var
  vEmbedding: string;
begin
  vEmbedding := Ollama._CreateEmbeddings(
    'nomic-embed-text',
    'Delphi is a powerful programming language.');
  ShowMessage(vEmbedding);
end;

Tam kontrol için, ham embedding değerlerine erişmek üzere türlü API'yi kullanın.

var
  oResponse: TsgcOllamaClass_Response_Embeddings;
  i: Integer;
begin
  oResponse := Ollama.CreateEmbeddings(
    'nomic-embed-text',
    'Delphi is a powerful programming language.');
  Try
    for i := 0 to oResponse.EmbeddingCount - 1 do
      Memo1.Lines.Add(FloatToStr(oResponse.GetEmbeddingValue(i)));
  Finally
    oResponse.Free;
  End;
end;

Veri gizliliği. Ollama ile verileriniz ağınızdan asla ayrılmaz. Bu, veri yerleşimi ve gizliliğinin kritik gereksinimler olduğu denetime tabi sektörler (sağlık, finans, kamu) için ideal hale getirir.

Yapılandırma ve Seçenekler

Kapsamlı yapılandırma seçenekleriyle bileşen davranışında ince ayar yapın.

Özellik Açıklama
OllamaOptions.Host Ollama sunucu URL'si (örneğin http://localhost:11434)
OllamaOptions.ApiKey Güvenli dağıtımlar için isteğe bağlı API anahtarı
HttpOptions.ReadTimeout Milisaniye cinsinden HTTP okuma zaman aşımı (varsayılan: 60000)
LogOptions.Enabled İstek/yanıt günlüğünü etkinleştir
RetryOptions.Enabled Geçici hatalarda otomatik yeniden deneme
RetryOptions.Retries Maksimum yeniden deneme sayısı (varsayılan: 3)
RetryOptions.Wait Milisaniye cinsinden yeniden denemeler arasındaki bekleme süresi (varsayılan: 3000)

Desteklenen Modeller

Ollama, yüzlerce açık kaynaklı modeli destekler. İşte bazı popüler seçenekler:

Model Parametreler En İyi Kullanım
llama3 8B / 70B Genel amaçlı sohbet, akıl yürütme
mistral 7B Hızlı, verimli metin üretimi
codellama 7B / 13B / 34B Kod üretimi ve analizi
nomic-embed-text 137M Metin embedding'leri, anlamsal arama

Sıfır maliyet, tam kontrol. Yapay zeka modellerini token başına ücret olmadan kendi donanımınızda çalıştırın. sgcWebSockets'in yerleşik yeniden deneme mantığı ve günlük kaydıyla birleştiğinde, Delphi için üretime hazır yerel yapay zeka entegrasyonu elde edersiniz.