Dökümhane Yerel REST API Başvurusu

Important

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

Caution

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/chat/completions

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

Request Body:

---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)
        Function name.
      • description (dize)
        Function description.
      • 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.

Response body:

  • 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:

Request body

  {
    "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": {}
  }

Response body

  {
    "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
    }
  }

POST /v1/audio/transcriptions

Bu uç nokta ses dosyalarını metne dönüştürmektedir. OpenAI Ses Transkripsiyonları API'siyle uyumludur.

İstek biçimi:multipart/form-data

Request fields:

  • file (dosya, gerekli)
    Dökümü yapılan ses dosyası. Desteklenen biçimler MP3, WAV, FLAC, OGG ve WebM'dir.
  • model (dize, gerekli)
    Transkripsiyon için kullanılacak model kimliği. Whisper modeli yüklenirken döndürülen kimliği kullanın (örneğin, yüklendikten whisper-tinysonra).
  • language (dize, isteğe bağlı)
    Iso 639-1 biçimindeki ses dili (örneğin, "en"). Bunun sağlanması doğruluğu ve hızı artırır.
  • temperature (sayı, isteğe bağlı)
    0 ile 1 arasında örnekleme sıcaklığı. Düşük değerler daha belirleyici sonuçlar üretir.
  • response_format (dize, isteğe bağlı)
    Yanıtın biçimi. Seçenekler: json (varsayılan), text, verbose_json.

Response body:

  • text (dize)
    Dökümü alınmış metin.

Example:

Request

curl -X POST http://localhost:<PORT>/v1/audio/transcriptions \
  -F "file=@recording.wav" \
  -F "model=<MODEL_ID>" \
  -F "language=en"

Important

değerini Foundry Local hizmetinin dinamik bağlantı noktasıyla ve <PORT> model yüklendiğinde döndürülen model kimliğiyle değiştirin<MODEL_ID>. SDK'da uç noktayı almak için (JS) veya manager.endpoint (C#) kullanın config.Web.Urls ; bağlantı noktasını asla sabit kodlamayın.

Response body

{
  "text": "This is the transcribed text from the audio file."
}

Tip

Kullanılabilir Fısıltı modeli diğer adları arasında whisper-tiny, whisper-baseve whisper-smallbulunur. Modelleri indirmek ve yüklemek için SDK ile bu diğer adları kullanın; örneğin JavaScript'te manager.catalog.getModel("whisper-tiny") .

GET /openai/status

Sunucu durum bilgilerini alın.

Response body:

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

Example:

Response body

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

GET /foundry/list

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

Response:

  • 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.

Response:

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

Example:

Response body

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

POST /openai/download

Modeli katalogdan yerel storage indirin.

Note

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.

Request Body:

  • 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ı)
      Includes:
      • 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 publisher.
  • token (dize, isteğe bağlı)
    Korumalı modeller için kimlik doğrulama belirteci (GitHub veya Yüz Tanımayı Kucaklama).
  • 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.

Streaming Response:

İ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:

Request URI

POST /openai/download

Request body

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|>"
    }
  }
}

Response stream

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

Final response

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

GET /openai/load/{name}

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

URI Parameters:

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

Query Parameters:

  • 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.

Response:

  • 200 OK
    Boş yanıt gövdesi

Example:

Request URI

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

GET /openai/unload/{name}

Modeli bellekten kaldırın.

URI Parameters:

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

Query Parameters:

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

Response:

  • 200 Tamam Boş yanıt gövdesi

Example:

Request URI

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

GET /openai/unloadall

Tüm modelleri bellekten boşaltır.

Response:

  • 200 OK
    Boş yanıt gövdesi

GET /openai/loadedmodels

Yüklü olan modellerin listesini alın.

Response:

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

Example:

Response body

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

GET /openai/getgpudevice

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

Response:

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

GET /openai/setgpudevice/{deviceId}

Etkin GPU cihazını ayarlayın.

URI Parameters:

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

Response:

  • 200 OK
    Boş yanıt gövdesi

Example:

  • Request URI
    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.

Request Body:

  • Content-Type: 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.

Response Body:

  • Content-Type: application/json
  • Belirteç sayısı olan JSON nesnesi:
    • tokenCount (tamsayı)
      İstekteki belirteç sayısı.

Example:

Request body

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

Response body

  {
    "tokenCount": 23
  }