OpenAI Delphi İstemcisi Güncellemesi

· Özellikler

sgcWebSockets 2026.4.0, OpenAI API entegrasyonunda büyük bir genişleme sunarak şunlara tam destek getirir: yeni Responses API (kullanımdan kaldırılan Assistants API'sinin resmi yerini alır), Audio Speech metin-konuşma, Fine-Tuning Jobs yönetimi, asenkron toplu işleme için Batch API, büyük dosya işleme için Uploads API ve araç çağırma ile yapılandırılmış çıktı desteğine sahip modernleştirilmiş Chat Completions. Bu makale, her yeni metodu, parametrelerini ve pratik Delphi kod örneklerini kapsar.

İçindekiler

  1. Responses API (Assistants'ın Yerini Alır)
  2. Audio Speech (Metin-Konuşma)
  3. Fine-Tuning Jobs
  4. Chat Completions Güncellemeleri
  5. Batch API
  6. Uploads API
Not: OpenAI Assistants API kullanımdan kaldırıldı ve 2026-08-26 tarihinde sonlandırılması planlanıyor. Yeni Responses API, bunun resmi yerini alır. Şu anda Assistants API'sini sgcWebSockets üzerinden kullanıyorsanız, kodunuzu bu makalede ele alınan Responses API'sine taşımaya başlamalısınız. Responses API, yerleşik araç kullanımı, dosya arama ve web arama yetenekleriyle daha basit, daha esnek bir arayüz sunar.

1. Responses API (Assistants'ın Yerini Alır)

Responses API, bu sürümdeki en önemli eklentidir. Kullanımdan kaldırılan Assistants API'sinin yerini /responses uç noktası aracılığıyla sunulan, sadeleştirilmiş, durumsuz bir arayüzle alır. Tüm metotlar TsgcHTTP_API_OpenAI bileşeninde kullanılabilir. Assistants'tan farklı olarak, her Responses API çağrısı; araç tanımlarını, dosya aramayı, web aramayı ve yapılandırılmış çıktıyı tek bir istekte içerebilen tek bir gidiş-dönüştür.

Metotlar

Metot Açıklama Endpoint
CreateResponse Yeni bir model yanıtı oluşturur. Bir model tanımlayıcısını ve girdi metnini (veya yapılandırılmış girdi dizisini) kabul eder. Modelin ürettiği çıktıyı, varsa araç çağrılarıyla birlikte döndürür. POST /responses
RetrieveResponse Daha önce oluşturulmuş bir yanıtı benzersiz kimliğine göre alır. Tamamlanmış yanıtları yoklamak veya denetlemek için kullanışlıdır. GET /responses/{response_id}
DeleteResponse Depolanmış bir yanıtı kalıcı olarak siler. Yalnızca oluşturma sırasında store: true kullanıldığında geçerlidir. DELETE /responses/{response_id}
CancelResponse Devam eden bir yanıtı iptal eder. Arka plan modunda oluşturulan yanıtlar için geçerlidir. POST /responses/{response_id}/cancel
ListInputItems Bir yanıtla ilişkili girdi öğelerini listeler. Modele gönderilen konuşma bağlamını incelemek için kullanışlıdır. GET /responses/{response_id}/input_items

Delphi Örneği

var
  OpenAI: TsgcHTTP_API_OpenAI;
  vResponse: String;
begin
  OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
  Try
    OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
    // Create a simple response
    vResponse := OpenAI._CreateResponse('gpt-4o', 'Explain quantum computing');
    ShowMessage(vResponse);
    // Retrieve a previously created response
    vResponse := OpenAI._RetrieveResponse('resp_abc123');
    ShowMessage(vResponse);
    // Delete a stored response
    OpenAI._DeleteResponse('resp_abc123');
  Finally
    OpenAI.Free;
  end;
end;

2. Audio Speech (Metin-Konuşma)

Audio Speech API, OpenAI'nin TTS modellerini kullanarak metin-konuşma yetenekleri sağlar. İki model kademesini destekler: düşük gecikmeli akış kullanım senaryoları için tts-1 ve daha yüksek kaliteli çıktı için tts-1-hd. Altı yerleşik ses mevcuttur: alloy, echo, fable, onyx, nova ve shimmer. Çıktı mp3, opus, aac, flac, wav veya pcm biçiminde döndürülebilir.

Metotlar

Metot Açıklama Endpoint
CreateSpeech Belirtilen model ve sesi kullanarak sağlanan metin girdisinden ses üretir. Ses içeriğini ikili bir akış olarak döndürür. POST /audio/speech

Delphi Örneği

var
  OpenAI: TsgcHTTP_API_OpenAI;
  vAudioStream: TMemoryStream;
begin
  OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
  Try
    OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
    // Generate speech using the 'alloy' voice
    oStream := TFileStream.Create('stream.mpeg', fmCreate or fmOpenRead);
    Try
      OpenAI._CreateSpeech('tts-1', 'Hello world', 'alloy', oStream);
    Finally
      oStream.Free;
    End;
    // Generate high-definition speech with 'nova' voice
    oStream := TFileStream.Create('stream.mpeg', fmCreate or fmOpenRead);
    Try
      OpenAI._CreateSpeech('tts-1-hd', 'Welcome to sgcWebSockets.', 'nova', oStream);
    Finally
      oStream.Free;
    End;
  Finally
    OpenAI.Free;
  end;
end;
Not: tts-1 modeli gerçek zamanlı, düşük gecikmeli uygulamalar için optimize edilmiştir; tts-1-hd ise biraz artan gecikme pahasına daha yüksek ses kalitesi sağlar. Uygulama gereksinimlerinize göre seçim yapın.

3. Fine-Tuning Jobs

Fine-Tuning Jobs API, kullanımdan kaldırılan /fine-tunes uç noktasının yerini yeni /fine_tuning/jobs uç noktasıyla alır. İnce ayar işlemleri için tam yaşam döngüsü yönetimi sağlar: işler oluşturma, etkin ve tamamlanmış işleri listeleme, ayrıntıları alma, devam eden işleri iptal etme ve eğitim olaylarını akıtma. Bu API, kendi eğitim verilerinizi kullanarak gpt-4o-mini-2024-07-18 gibi modellerin ince ayarını destekler.

Metotlar

Metot Açıklama Endpoint
CreateFineTuningJob Belirtilen bir temel modeli ve daha önce yüklenmiş bir eğitim dosyasını kullanarak yeni bir ince ayar işi oluşturur. İş nesnesini kimliği ve durumuyla birlikte döndürür. POST /fine_tuning/jobs
ListFineTuningJobs Organizasyon için tüm ince ayar işlerini sayfalama desteğiyle listeler. İşleri oluşturma tarihine göre sıralı olarak döndürür. GET /fine_tuning/jobs
RetrieveFineTuningJob Belirli bir ince ayar işi hakkında durum, hiperparametreler ve sonuç dosyaları dahil olmak üzere ayrıntılı bilgi alır. GET /fine_tuning/jobs/{job_id}
CancelFineTuningJob Devam eden bir ince ayar işini iptal eder. İş durumu "cancelled" olarak değişir ve başka eğitim gerçekleşmez. POST /fine_tuning/jobs/{job_id}/cancel
ListFineTuningJobEvents Bir ince ayar işi için eğitim kaybı, doğrulama metrikleri ve tamamlanma durumu dahil olmak üzere durum olaylarını listeler. Sayfalamayı destekler. GET /fine_tuning/jobs/{job_id}/events

Delphi Örneği

var
  OpenAI: TsgcHTTP_API_OpenAI;
  vResponse: String;
begin
  OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
  Try
    OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
    // Create a fine-tuning job
    vResponse := OpenAI._CreateFineTuningJob('gpt-4o-mini-2024-07-18', 'file-abc123');
    ShowMessage(vResponse);
    // List all fine-tuning jobs
    vResponse := OpenAI._ListFineTuningJobs;
    ShowMessage(vResponse);
    // Retrieve a specific job
    vResponse := OpenAI._RetrieveFineTuningJob('ftjob-xyz789');
    ShowMessage(vResponse);
    // List events for a job
    vResponse := OpenAI._ListFineTuningJobEvents('ftjob-xyz789');
    ShowMessage(vResponse);
    // Cancel an in-progress job
    OpenAI._CancelFineTuningJob('ftjob-xyz789');
  Finally
    OpenAI.Free;
  end;
end;

4. Chat Completions Güncellemeleri

sgcWebSockets 2026.4.0'daki Chat Completions API'si, birkaç yeni istek özelliği ve yanıt alanıyla modernleştirildi. Bu eklemeler; araç/işlev çağırma, yapılandırılmış JSON çıktısı, seed'ler aracılığıyla deterministik üretim ve paralel araç yürütme için tam destek getirir.

Yeni İstek Özellikleri

Özellik Açıklama Endpoint
Tools Modelin çağırabileceği bir araçlar (işlevler) listesi tanımlar. Her araç bir ad, açıklama ve parametreleri için bir JSON Schema içerir. POST /chat/completions
ToolChoice Modelin araçları nasıl seçtiğini denetler. Seçenekler: auto, none, required veya belirli bir işlev adı. POST /chat/completions
ResponseFormat Çıktı biçimini belirtir. Garantili JSON çıktısı için json_object'i veya sağlanan bir şemaya uygun yapılandırılmış çıktı için json_schema'yı kullanın. POST /chat/completions
Seed Deterministik örnekleme için bir tamsayı seed. Aynı seed ve parametreler kullanıldığında, model aynı çıktıyı üretmeye çalışır. POST /chat/completions
MaxCompletionTokens Modelin yanıtta üretebileceği token sayısına bir üst sınır koyar. Daha eski max_tokens parametresinin yerini alır. POST /chat/completions
ParallelToolCalls Etkinleştirildiğinde, model tek bir yanıtta birden çok araç çağrısı yapabilir ve istemci tarafında paralel yürütmeye olanak tanır. POST /chat/completions
StreamOptions Akış yanıtları için yapılandırma. Son akış parçasında token kullanım istatistiklerini almak üzere include_usage gibi seçenekler içerir. POST /chat/completions

Yeni Yanıt Alanları

Alan Açıklama Endpoint
ToolCalls Asistan mesajındaki araç çağrısı nesnelerinin dizisi. Her biri, istemci tarafı yürütme için bir kimlik, işlev adı ve argümanlar içerir. POST /chat/completions
Refusal Modelin, güvenlik veya içerik politikası kısıtlamaları nedeniyle bir isteği yerine getirmeyi reddettiğinde verdiği ret mesajını içerir. POST /chat/completions
SystemFingerprint Yanıtı üretmek için kullanılan arka uç yapılandırmasını temsil eden bir parmak izi. Seed kullanırken deterministik çıktıyı doğrulamak için kullanışlıdır. POST /chat/completions

Delphi Örneği

var
  OpenAI: TsgcHTTP_API_OpenAI;
  vResponse: String;
begin
  OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
  Try
    OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
    // Configure Chat Completions with new properties
    OpenAI.ChatCompletions.Model := 'gpt-4o';
    OpenAI.ChatCompletions.MaxCompletionTokens := 1024;
    OpenAI.ChatCompletions.Seed := 42;
    OpenAI.ChatCompletions.ParallelToolCalls := True;
    OpenAI.ChatCompletions.ResponseFormat := 'json_object';
    // Add a user message and create the completion
    OpenAI.ChatCompletions.AddMessage('user', 'List 3 benefits of Delphi in JSON format.');
    vResponse := OpenAI._CreateChatCompletion;
    ShowMessage(vResponse);
  Finally
    OpenAI.Free;
  end;
end;

5. Batch API

Batch API, asenkron işleme için büyük API istek gruplarını göndermenize olanak tanır. Bu; toplu sınıflandırma, embedding üretimi veya büyük ölçekli içerik denetimi gibi anında yanıt gerektirmeyen iş yükleri için idealdir. Toplu istekler genellikle 24 saat içinde tamamlanır ve senkron API çağrılarına kıyasla %50 maliyet azaltımı sunar. Tüm toplu metotlar, TsgcHTTP_API_OpenAI bileşeninde, /batches uç noktası aracılığıyla kullanılabilir.

Metotlar

Metot Açıklama Endpoint
CreateBatch API istekleri içeren, daha önce yüklenmiş bir JSONL dosyasından yeni bir toplu iş oluşturur. Girdi dosyası kimliğini ve hedef uç noktayı gerektirir. POST /batches
RetrieveBatch Bir toplu işin geçerli durumunu ve ayrıntılarını, ilerleme sayıları ve çıktı dosyası referansları dahil olmak üzere alır. GET /batches/{batch_id}
ListBatches Organizasyon için tüm toplu işleri listeler. after ve limit parametreleri aracılığıyla sayfalamayı destekler. GET /batches
CancelBatch Devam eden bir toplu işi iptal eder. Toplu işteki tamamlanmış istekler etkilenmez. POST /batches/{batch_id}/cancel

Delphi Örneği

var
  OpenAI: TsgcHTTP_API_OpenAI;
  vResponse: String;
begin
  OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
  Try
    OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
    // Create a batch job targeting chat completions
    vResponse := OpenAI._CreateBatch('file-abc123', '/v1/chat/completions');
    ShowMessage(vResponse);
    // Check batch status
    vResponse := OpenAI._RetrieveBatch('batch_xyz789');
    ShowMessage(vResponse);
    // List all batches
    vResponse := OpenAI._ListBatches;
    ShowMessage(vResponse);
    // Cancel a batch if needed
    OpenAI._CancelBatch('batch_xyz789');
  Finally
    OpenAI.Free;
  end;
end;
Not: CreateBatch için girdi dosyası, purpose batch ile Files API aracılığıyla yüklenmiş bir JSONL dosyası olmalıdır. Dosyadaki her satır, özel bir kimlik, metot, URL ve gövdeye sahip tek bir API isteğini temsil eder.

6. Uploads API

Uploads API, büyük dosyaların birden çok parça halinde yüklenmesini sağlar; bu, tek istek yükleme limitini (genellikle 512 MB) aşan dosyalarla çalışırken gereklidir. İş akışı; bir yükleme oturumu oluşturmayı, parçaları sıralı olarak eklemeyi ve ardından bir yükleme oturumunu tamamlayarak diğer API uç noktalarıyla kullanılabilen bir File nesnesi almayı içerir. Tüm metotlar, TsgcHTTP_API_OpenAI bileşeninde, /uploads uç noktası aracılığıyla kullanılabilir.

Metotlar

Metot Açıklama Endpoint
CreateUpload Yeni bir çok parçalı yükleme oturumu başlatır. Dosya adını, amacı, toplam bayt sayısını ve MIME türünü gerektirir. Benzersiz kimliğe sahip bir yükleme nesnesi döndürür. POST /uploads
AddUploadPart Devam eden bir yüklemeye bir dosya verisi parçası ekler. Parçalar sıralı olarak eklenmelidir ve her parça, tamamlama için gereken bir parça kimliği döndürür. POST /uploads/{upload_id}/parts
CompleteUpload Sıralı parça kimlikleri listesini sağlayarak çok parçalı yüklemeyi tamamlar. Diğer API'lerle kullanılabilen son File nesnesini döndürür. POST /uploads/{upload_id}/complete
CancelUpload Devam eden bir yükleme oturumunu iptal eder. Yüklenen tüm parçalar atılır ve yükleme kimliği geçersiz hale gelir. POST /uploads/{upload_id}/cancel

Delphi Örneği

var
  OpenAI: TsgcHTTP_API_OpenAI;
  vUploadResponse: String;
  vPartResponse: String;
  vCompleteResponse: String;
begin
  OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
  Try
    OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
    // Step 1: Create an upload session
    vUploadResponse := OpenAI._CreateUpload(
      'training_data.jsonl', 'fine-tune', 104857600, 'application/jsonl');
    ShowMessage(vUploadResponse);
    // Step 2: Add file parts
    vPartResponse := OpenAI._AddUploadPart('upload_abc123', 'C:\data\part1.jsonl');
    ShowMessage(vPartResponse);
    vPartResponse := OpenAI._AddUploadPart('upload_abc123', 'C:\data\part2.jsonl');
    ShowMessage(vPartResponse);
    // Step 3: Complete the upload
    vCompleteResponse := OpenAI._CompleteUpload('upload_abc123',
      '["part_def456", "part_ghi789"]');
    ShowMessage(vCompleteResponse);
  Finally
    OpenAI.Free;
  end;
end;
Not: Yükleme oturumları bir saatlik etkinlik olmamasının ardından sona erer. Her parça en az 5 MB olmalıdır (son parça hariç) ve parçalar birleştirilecekleri sırayla eklenmelidir. Maksimum toplam yükleme boyutu 8 GB'dir.