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.
