Aracılığıyla paylaş


Dökümhane Yerel REST API Başvurusu

Önemli

  • Foundry Local önizleme aşamasındadır. Genel önizleme sürümleri, etkin dağıtımdaki özelliklere erken erişim sağlar.
  • Özellikler, yaklaşımlar ve işlemler, Genel Kullanılabilirlik (GA) öncesinde değişebilir veya sınırlı özelliklere sahip olabilir.

Dikkat

Bu API, DökümHane Yerel CLI'sında bulunan REST API'yi ifade eder. Bu API etkin geliştirme aşamasındadır ve bildirimde bulunmaksızın önemli değişiklikler içerebilir. Üretim uygulamaları oluşturmadan önce değişiklik günlüğü izlemenizi kesinlikle öneririz.

POST /v1/sohbet/tamamlamalar

Bu uç nokta, sohbet tamamlama isteklerini işler.
OpenAI Sohbet Tamamlamaları API'siyle tamamen uyumludur.

İstek Gövdesi:

---Standard OpenAI Özellikleri---

  • model (dize)
    Tamamlamayı sağlamak için kullanılacak belirli model.
  • messages (dizi)
    İleti listesi olarak konuşma geçmişi.
    • Her ileti şunları gerektirir:
      • role (dize)
        İletiyi gönderenin rolü. Şu olmalıdır: system, user veya assistant.
      • content (dize)
        Gerçek ileti metni.
  • temperature (sayı, isteğe bağlı)
    0 ile 2 arasında değişen rastgeleliği denetler. Daha yüksek değerler (0,8) çeşitli çıkışlar oluştururken, daha düşük değerler (0,2) odaklanmış ve tutarlı çıkışlar oluşturur.
  • top_p (sayı, isteğe bağlı)
    Belirteç seçimi çeşitliliğini 0'dan 1'e kadar denetler. 0,1 değeri yalnızca ilk 10% olasılığındaki belirteçlerin dikkate alınıyor olduğu anlamına gelir.
  • n (tamsayı, isteğe bağlı)
    Her giriş iletisi için oluşturulacak alternatif tamamlama sayısı.
  • stream (boole, isteğe bağlı)
    Gerçek olduğunda, kısmi mesaj yanıtlarını data: [DONE] mesajı ile biten, sunucu tarafından gönderilen olaylar olarak gönderir.
  • stop (dize veya dizi, isteğe bağlı)
    Modelin daha fazla belirteç üretmeyi durdurmasına neden olacak en fazla 4 dizi.
  • max_tokens (tamsayı, isteğe bağlı)
    Oluşturulacak maksimum jeton sayısı. Yeni modeller için max_completion_tokens kullanın.
  • max_completion_tokens (tamsayı, isteğe bağlı)
    Görünür çıkış ve muhakeme belirteçleri dahil olmak üzere modelin oluşturabileceği en fazla belirteç sayısı.
  • presence_penalty (sayı, isteğe bağlı)
    -2,0 ile 2,0 arasındaki değer. Pozitif değerler, zaten görünen belirteçleri cezalandırarak modelin yeni konuları tartışmasına katkıda bulunur.
  • frequency_penalty (sayı, isteğe bağlı)
    -2,0 ile 2,0 arasındaki değer. Pozitif değerler, metindeki sıklıklarına göre belirteçleri cezalandırarak yinelemeyi caydırır.
  • logit_bias (harita, isteğe bağlı)
    Tamamlanmada belirli belirteçlerin görünme olasılığını ayarlar.
  • user (dize, isteğe bağlı)
    İzleme ve kötüye kullanımı önlemeye yardımcı olan son kullanıcınız için benzersiz bir tanımlayıcı.
  • functions (dizi, isteğe bağlı)
    Modelin JSON girişleri oluşturabileceği kullanılabilir işlevler.
    • Her işlev şunları içermelidir:
      • name (dize)
        İşlev adı.
      • description (dize)
        İşlev açıklaması.
      • parameters (nesne)
        JSON Şeması nesnesi olarak tanımlanan işlev parametreleri.
  • function_call (dize veya nesne, isteğe bağlı)
    Modelin işlev çağrılarına nasıl yanıt vereceğini denetler.
    • Nesne ise şunları içerebilir:
      • name (dize, isteğe bağlı)
        Çağrılacak işlevin adı.
      • arguments (nesne, isteğe bağlı)
        Fonksiyona iletilecek argümanlar.
  • metadata (nesne, isteğe bağlı)
    Meta veri anahtar-değer çiftlerinin sözlüğü.
  • top_k (sayı, isteğe bağlı)
    En yüksek k filtreleme için tutulacak en yüksek olasılıklı kelime belirteçlerinin sayısı.
  • random_seed (tamsayı, isteğe bağlı)
    Yeniden üretilebilir rastgele sayı oluşturma için tohum.
  • ep (dize, isteğe bağlı)
    ONNX modeller için sağlayıcıyı değiştirin. Destekler: "dml", "cuda", "qnn", "cpu", "webgpu".
  • ttl (tamsayı, isteğe bağlı)
    Bellekteki modelin saniye cinsinden yaşam süresi.
  • tools (nesne, isteğe bağlı)
    İstek için hesaplanan araçlar.

Yanıt gövdesi:

  • id (dize)
    Sohbetin tamamlanması için benzersiz tanımlayıcı.
  • object (dize)
    Nesne türü, her zaman "chat.completion".
  • created (tamsayı)
    Epoch saniyelerinde oluşturma zaman damgası.
  • model (dize)
    Tamamlanmak için kullanılan model.
  • choices (dizi)
    Her biri şunları içeren tamamlama seçeneklerinin listesi:
    • index (tamsayı)
      Bu seçeneğin dizini.
    • message (nesne)
      Aşağıdakilerle oluşturulan ileti:
      • role (dize)
        Yanıtlar için her zaman "assistant".
      • content (dize)
        Oluşturulan gerçek metin.
    • finish_reason (dize)
      Oluşturma neden durduruldu (örneğin, "stop", "length", "function_call").
  • usage (nesne)
    Belirteç kullanımı istatistikleri:
    • prompt_tokens (tamsayı)
      İstemdeki belirteçler.
    • completion_tokens (tamsayı)
      Tamamlanmadaki belirteçler.
    • total_tokens (tamsayı)
      Kullanılan toplam belirteç sayısı.

Example:

İstek içeriği

  {
    "model": "qwen2.5-0.5b-instruct-generic-cpu",
    "messages": [
      {
        "role": "user",
        "content": "Hello, how are you?"
      }
    ],
    "temperature": 0.7,
    "top_p": 1,
    "n": 1,
    "stream": false,
    "stop": null,
    "max_tokens": 100,
    "presence_penalty": 0,
    "frequency_penalty": 0,
    "logit_bias": {},
    "user": "user_id_123",
    "functions": [],
    "function_call": null,
    "metadata": {}
  }

Yanıt gövdesi

  {
    "id": "chatcmpl-1234567890",
    "object": "chat.completion",
    "created": 1677851234,
    "model": "qwen2.5-0.5b-instruct-generic-cpu",
    "choices": [
      {
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "I'm doing well, thank you! How can I assist you today?"
        },
        "finish_reason": "stop"
      }
    ],
    "usage": {
      "prompt_tokens": 10,
      "completion_tokens": 20,
      "total_tokens": 30
    }
  }

GET /openai/status

Sunucu durum bilgilerini alın.

Yanıt gövdesi:

  • Endpoints (dize dizisi)
    HTTP sunucusu bağlama uç noktaları.
  • ModelDirPath (dize)
    Yerel modellerin depolandığı dizin.
  • PipeName (dize)
    Geçerli NamedPipe sunucu ismi.

Example:

Yanıt gövdesi

  {
    "Endpoints": ["http://localhost:5272"],
    "ModelDirPath": "/path/to/models",
    "PipeName": "inference_agent"
  }

GET /foundry/list

Katalogdaki kullanılabilir Foundry Yerel modellerinin listesini alın.

Yanıt:

  • models (dizi)
    Model nesneleri dizisi. Her model şunları içerir:
    • name: Modelin benzersiz tanımlayıcısı.
    • displayName: Model için insanlar tarafından okunabilir bir ad, genellikle isimle aynıdır.
    • providerType: Modeli barındıran sağlayıcı türü (örneğin, AzureFoundry).
    • uri: Modelin kayıt defterindeki konumuna işaret eden kaynak URI'si.
    • version: Modelin sürüm numarası.
    • modelType: Modelin biçimi veya türü (örneğin, ONNX).
    • promptTemplate:
      • assistant: Yardımcının yanıtı için şablon.
      • prompt: Kullanıcı yardımcısı etkileşimi için şablon.
    • publisher: Modeli yayımlayan varlık veya kuruluş.
    • task: Modelin gerçekleştirmek üzere tasarlandığı birincil görev (örneğin, sohbet tamamlama).
    • runtime:
      • deviceType: Modelin üzerinde çalışmak üzere tasarlandığı donanım türü (örneğin, CPU).
      • executionProvider: Modeli çalıştırmak için kullanılan yürütme sağlayıcısı.
    • fileSizeMb: Model dosyasının megabayt cinsinden boyutu.
    • modelSettings:
      • parameters: Model için yapılandırılabilir parametrelerin listesi.
    • alias: Model için alternatif bir ad veya kısaltma
    • supportsToolCalling: Modelin araç çağırma işlevini destekleyip desteklemediğini gösterir.
    • license: Modelin altında dağıtıldığı lisans türü.
    • licenseDescription: Ayrıntılı bir açıklama veya lisans koşullarının bağlantısı.
    • parentModelUri: Bu modelin türetildiği üst modelin URI'si.

GET /openai/models

Yerel ve kayıtlı dış modeller de dahil olmak üzere önbelleğe alınmış modellerin listesini alın.

Yanıt:

  • 200 Tamam
    Model adları bir dizi olarak "string" formatında verilmiştir.

Example:

Yanıt gövdesi

  ["Phi-4-mini-instruct-generic-cpu", "phi-3.5-mini-instruct-generic-cpu"]

POST /openai/download

Modeli katalogdan yerel depolama alanına indirin.

Uyarı

Büyük model indirme işlemleri uzun sürebilir. Erken sonlandırmayı önlemek için bu istek için yüksek bir zaman aşımı ayarlayın.

İstek Gövdesi:

  • model (WorkspaceInferenceModel nesne)
    • Uri (dize)
      İndirilmesi gereken model URI'si.
    • Name (metin) Model adı.
    • ProviderType (dize, isteğe bağlı)
      Sağlayıcı türü (örneğin, "AzureFoundryLocal", "HuggingFace").
    • Path (dize, isteğe bağlı)
      Model dosyalarının uzak yolu. Örneğin, Yüz Tanıma deposunda bu, model dosyalarının yoludur.
    • PromptTemplate (Dictionary<string, string>, isteğe bağlı)
      Şunları içerir:
      • system (dize, isteğe bağlı)
        Sistem iletisinin şablonu.
      • user (dize, isteğe bağlı) Kullanıcının iletisinin şablonu.
      • assistant (dize, isteğe bağlı)
        Yardımcının yanıtı için şablon.
      • prompt (dize, isteğe bağlı)
        Kullanıcı yardımcısı etkileşimi için şablon.
    • Publisher (dize, isteğe bağlı)
      Modelin yayıncısı.
  • token (dize, isteğe bağlı)
    Korumalı modeller için kimlik doğrulama belirteci (GitHub veya Hugging Face).
  • progressToken (nesne, isteğe bağlı)
    Yalnızca AITK için. İndirme ilerlemesini takip etmek için bir belirteç.
  • customDirPath (dize, isteğe bağlı)
    Özel indirme dizini (CLI için kullanılır, AITK için gerekli değildir).
  • bufferSize (tamsayı, isteğe bağlı)
    KB olarak HTTP indirme arabellek boyutu. NIM veya Azure Foundry modelleri üzerinde hiçbir etkisi yoktur.
  • ignorePipeReport (boole, isteğe bağlı)
    Eğer true ise, ilerleme raporlamayı boru hattı yerine HTTP akışı üzerinden zorlar. Varsayılan olarak AITK için false ve Dökümhane Yerel için true kullanılır.

Akış Yanıtı:

İndirme sırasında sunucu, ilerleme durumunu şu biçimde güncelleştirir:

("file name", percentage_complete)

Son Yanıt gövdesi:

  • Success (boole)
    İndirme işleminin başarıyla tamamlanıp tamamlanmadığı.
  • ErrorMessage (dize, isteğe bağlı)
    İndirme başarısız olursa hata ayrıntıları.

Example:

İstenilen URI

POST /openai/download

İstek içeriği

Sürüm son ekinin model adında sağlanması gerektiğini unutmayın.

{
  "model": {
    "Uri": "azureml://registries/azureml/models/Phi-4-mini-instruct-generic-cpu/versions/4",
    "ProviderType": "AzureFoundryLocal",
    "Name": "Phi-4-mini-instruct-generic-cpu:4",
    "Publisher": "",
    "PromptTemplate": {
      "system": "<|system|>{Content}<|end|>",
      "user": "<|user|>{Content}<|end|>",
      "assistant": "<|assistant|>{Content}<|end|>",
      "prompt": "<|user|>{Content}<|end|><|assistant|>"
    }
  }
}

Yanıt akışı

  ("genai_config.json", 0.01)
  ("genai_config.json", 0.2)
  ("model.onnx.data", 0.5)
  ("model.onnx.data", 0.78)
  ...
  ("", 1)

Son yanıt

  {
    "Success": true,
    "ErrorMessage": null
  }

GET /openai/load/{name}

Daha hızlı çıkarım için bir modeli belleğe yükleyin.

URI Parametreleri:

  • name (dize)
    Yüklenecek model adı.

Sorgu Parametreleri:

  • unload (boole, isteğe bağlı)
    Boşta kalma süresinden sonra modelin otomatik olarak kaldırılıp kaldırılmayacağı. Varsayılan olarak true değerini alır.
  • ttl (tamsayı, isteğe bağlı)
    Yaşam süresi, saniye cinsinden. 0'dan büyükse, bu değer parametresini unload geçersiz kılar.
  • ep (dize, isteğe bağlı)
    Modeli çalıştıracak yürütme sağlayıcısı. Destekler: "dml", "cuda", "qnn", "cpu", "webgpu".
    Belirtilmezse, genai_config.json üzerindeki ayarları kullanır.

Yanıt:

  • 200 Tamam
    Boş yanıt gövdesi

Example:

İstenilen URI

  GET /openai/load/Phi-4-mini-instruct-generic-cpu?ttl=3600&ep=dml

GET /openai/unload/{name}

Modeli bellekten kaldırın.

URI Parametreleri:

  • name (dize) Kaldırılan model adı.

Sorgu Parametreleri:

  • force (boole, isteğe bağlı) ise true, TTL ayarlarını yoksayar ve hemen kaldırır.

Yanıt:

  • 200 Tamam Boş yanıt gövdesi

Example:

İstenilen URI

GET /openai/unload/Phi-4-mini-instruct-generic-cpu?force=true

GET /openai/unloadall

Tüm modelleri bellekten boşaltır.

Yanıt:

  • 200 Tamam
    Boş yanıt gövdesi

GET /openai/loadedmodels

Yüklü olan modellerin listesini alın.

Yanıt:

  • 200 Tamam
    Model adları bir dizi olarak "string" formatında verilmiştir.

Example:

Yanıt gövdesi

["Phi-4-mini-instruct-generic-cpu", "phi-3.5-mini-instruct-generic-cpu"]

GET /openai/getgpudevice

Geçerli GPU cihaz kimliğini alın.

Yanıt:

  • 200 Tamam
    Geçerli GPU cihaz kimliğini temsil eden bir tamsayı.

GET /openai/setgpudevice/{deviceId}

Etkin GPU cihazını ayarlayın.

URI Parametreleri:

  • deviceId (tamsayı)
    Kullanılacak GPU cihaz kimliği.

Yanıt:

  • 200 Tamam
    Boş yanıt gövdesi

Example:

  • İstek URI'si
    GET /openai/setgpudevice/1
    

POST /v1/chat/completions/tokenizer/encode/count

Çıkarım yapmadan belirli bir sohbet tamamlama isteği için belirteçleri sayar.

İstek Gövdesi:

  • İçerik Türü: application/json
  • JSON nesnesi şu ChatCompletionCreateRequest şekilde biçimlendirilir:
    • model (dize)
      Belirteç oluşturma için kullanılacak model.
    • messages (dizi)
      role ve content ile ileti nesnelerinin dizisi.

Yanıt Gövdesi:

  • İçerik Türü: application/json
  • Belirteç sayısı olan JSON nesnesi:
    • tokenCount (tamsayı)
      İstekteki belirteç sayısı.

Example:

İstek içeriği

  {
    "messages": [
      {
        "role": "system",
        "content": "This is a system message"
      },
      {
        "role": "user",
        "content": "Hello, what is Microsoft?"
      }
    ],
    "model": "Phi-4-mini-instruct-cuda-gpu"
  }

Yanıt gövdesi

  {
    "tokenCount": 23
  }