Sdílet prostřednictvím


Referenční informace k místnímu rozhraní REST API služby Foundry

Důležité

  • Foundry Local je k dispozici ve verzi Preview. Verze Public Preview poskytují dřívější access funkcím, které jsou v aktivním nasazení.
  • Funkce, přístupy a procesy se můžou před obecnou dostupností měnit nebo mít omezené možnosti.

Upozornění

Toto rozhraní API odkazuje na rozhraní REST API dostupné v rozhraní příkazového řádku Foundry Local CLI. Toto rozhraní API je ve fázi aktivního vývoje a může obsahovat zásadní změny bez předchozího upozornění. Před vytvářením produkčních aplikací důrazně doporučujeme monitorovat protokol změn.

POST /v1/chat/completions

Tento koncový bod zpracovává žádosti o dokončení chatu.
Je plně kompatibilní s rozhraním API pro dokončování chatu OpenAI.

text požadavku :

---Standardní vlastnosti OpenAI---

  • model (řetězec)
    Konkrétní model, který se má použít k dokončení.
  • messages (matice)
    Historie konverzací jako seznam zpráv.
    • Každá zpráva vyžaduje:
      • role (řetězec)
        Role odesílatele zprávy. Musí být system, usernebo assistant.
      • content (řetězec)
        Skutečný text zprávy.
  • temperature (číslo, volitelné)
    Řídí náhodnost v rozsahu od 0 do 2. Vyšší hodnoty (0,8) vytvářejí různé výstupy, zatímco nižší hodnoty (0,2) vytvářejí prioritní konzistentní výstupy.
  • top_p (číslo, volitelné)
    Řídí rozmanitost výběru tokenů od 0 do 1. Hodnota 0,1 znamená, že se považují pouze tokeny s deseti nejvyššími hodnotami pravděpodobnosti%.
  • n (celé číslo, volitelné)
    Počet alternativních dokončování, které se mají vygenerovat pro každou vstupní zprávu
  • stream (logická hodnota, volitelné)
    Pokud je pravda, odešle částečné odpovědi na zprávy jako události odeslané serverem, končící zprávou data: [DONE] .
  • stop (řetězec nebo pole, volitelné)
    Až 4 sekvence, které způsobí, že model přestane generovat další tokeny.
  • max_tokens (celé číslo, volitelné)
    Maximální počet tokenů, které se mají vygenerovat. Pro novější modely použijte max_completion_tokens místo toho.
  • max_completion_tokens (celé číslo, volitelné)
    Maximální počet tokenů, které model může vygenerovat, včetně viditelných výstupů a zdůvodnění tokenů.
  • presence_penalty (číslo, volitelné)
    Hodnota mezi -2,0 a 2,0. Kladné hodnoty podporují model, aby diskutoval o nových tématech tím, že penalizuje tokeny, které se už objevily.
  • frequency_penalty (číslo, volitelné)
    Hodnota mezi -2,0 a 2,0. Kladné hodnoty odrazují opakování tím, že penalizují tokeny na základě jejich četnosti v textu.
  • logit_bias (mapa, volitelné)
    Upraví pravděpodobnost výskytu konkrétních tokenů v generování.
  • user (řetězec, volitelné)
    Jedinečný identifikátor pro koncového uživatele, který pomáhá s monitorováním a prevenci zneužitím.
  • functions (pole, volitelné)
    Dostupné funkce, pro které může model generovat vstupy JSON.
    • Každá funkce musí obsahovat:
      • name (řetězec)
        Název funkce
      • description (řetězec)
        Popis funkce
      • parameters (objekt)
        Parametry funkce popsané jako objekt schématu JSON.
  • function_call (řetězec nebo objekt, volitelné)
    Určuje, jak model reaguje na volání funkcí.
    • Pokud se jedná o objekt, může obsahovat:
      • name (řetězec, volitelné)
        Název funkce, která se má volat.
      • arguments (objekt, volitelné)
        Argumenty, které se mají předat funkci.
  • metadata (objekt, volitelné)
    Slovník párů klíč-hodnota metadat.
  • top_k (číslo, volitelné)
    Počet nejpravděpodobnějších tokenů ze slovní zásoby, které se mají ponechat pro filtrování pomocí metody top-k.
  • random_seed (celé číslo, volitelné)
    Semeno pro reprodukovatelné generování náhodných čísel.
  • ep (řetězec, volitelné)
    Přepište poskytovatele pro modely ONNX. Podporuje: "dml", "cuda", "qnn", "cpu", "webgpu".
  • ttl (celé číslo, volitelné)
    Čas životnosti modelu v paměti v sekundách.
  • tools (objekt, volitelné)
    Nástroje vypočítané pro žádost

Text odpovědi:

  • id (řetězec)
    Jedinečný identifikátor dokončení chatu.
  • object (řetězec)
    Typ objektu, vždy "chat.completion".
  • created (celé číslo)
    Časové razítko vytváření v epochových sekundách
  • model (řetězec)
    Model použitý k dokončení.
  • choices (matice)
    Seznam voleb dokončení, z nichž každá obsahuje:
    • index (celé číslo)
      Index této volby.
    • message (objekt)
      Vygenerovaná zpráva s:
      • role (řetězec)
        Pro odpovědi vždy "assistant".
      • content (řetězec)
        Skutečný vygenerovaný text.
    • finish_reason (řetězec)
      Proč se generování zastavilo (např "stop". , "length", "function_call").
  • usage (objekt)
    Statistika využití tokenů:
    • prompt_tokens (celé číslo)
      Tokeny v příkazovém řádku
    • completion_tokens (celé číslo)
      Tokeny v rámci dokončení.
    • total_tokens (celé číslo)
      Využité tokeny celkem

Příklad:

Obsah požadavku

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

Obsah odpovědi

  {
    "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/přepisy

Tento koncový bod přepisuje zvukové soubory na text. Je kompatibilní s rozhraním API pro přepisy zvuku OpenAI.

Formát požadavku:multipart/form-data

Pole žádosti:

  • file (soubor, povinné)
    Zvukový soubor, který se má přepisovat. Mezi podporované formáty patří MP3, WAV, FLAC, OGG a WebM.
  • model (řetězec, povinné)
    ID modelu, které se má použít k přepisu. Použijte ID vrácené při načítání modelu Whisper (například po načtení whisper-tiny).
  • language (řetězec, volitelné)
    Jazyk zvuku ve formátu ISO 639-1 (například "en"). Tím se zvyšuje přesnost a rychlost.
  • temperature (číslo, volitelné)
    Vzorkovací teplota mezi 0 a 1. Nižší hodnoty vytvářejí deterministické výsledky.
  • response_format (řetězec, volitelné)
    Formát odpovědi. Možnosti: json (výchozí), text, verbose_json.

Text odpovědi:

  • text (řetězec)
    Přepisovaný text.

Příklad:

Prosba

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

Důležité

Nahraďte <PORT> dynamickým portem místní služby Foundry a <MODEL_ID> ID modelu vráceným při načtení modelu. V sadě SDK použijte manager.endpoint (JS) nebo config.Web.Urls (C#) k získání koncového bodu – nikdy pevně zakódujte port.

Obsah odpovědi

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

Návod

Dostupné aliasy modelu Whisper zahrnují whisper-tiny, whisper-basea whisper-small. Pomocí těchto aliasů se sadou SDK můžete stahovat a načítat modely, manager.catalog.getModel("whisper-tiny") například v JavaScriptu.

GET /openai/status

Získejte informace o stavu serveru.

Text odpovědi:

  • Endpoints (pole řetězců)
    Koncové body vazby serveru HTTP.
  • ModelDirPath (řetězec)
    Adresář, kde jsou uloženy místní modely.
  • PipeName (řetězec)
    Aktuální název serveru NamedPipe.

Příklad:

Obsah odpovědi

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

GET /foundry/list

Získejte seznam dostupných místních modelů Foundry v katalogu.

Odpověď:

  • models (matice)
    Pole objektů modelu Každý model zahrnuje:
    • name: Jedinečný identifikátor modelu.
    • displayName: Název modelu čitelný pro člověka, často stejný jako název.
    • providerType: Typ poskytovatele hostujícího model (například AzureFoundry).
    • uri: Identifikátor URI prostředku odkazující na umístění modelu v registru.
    • version: Číslo verze modelu.
    • modelType: Formát nebo typ modelu (například ONNX).
    • promptTemplate:
      • assistant: Šablona pro odpověď asistenta.
      • prompt: Šablona pro interakci s uživatelským asistentem.
    • publisher: Entita nebo organizace, které model publikovaly.
    • task: Primární úkol, který model má provést (například dokončení chatu).
    • runtime:
      • deviceType: Typ hardwaru, na který má model běžet (například procesor).
      • executionProvider: Zprostředkovatel spuštění použitý ke spuštění modelu.
    • fileSizeMb: Velikost souboru modelu v megabajtech.
    • modelSettings:
      • parameters: Seznam konfigurovatelných parametrů pro model.
    • alias: Alternativní název nebo zkratka modelu
    • supportsToolCalling: Určuje, jestli model podporuje funkce volání nástrojů.
    • license: Typ licence, pod kterou se model distribuuje.
    • licenseDescription: Podrobný popis nebo odkaz na licenční podmínky.
    • parentModelUri: Identifikátor URI nadřazeného modelu, ze kterého je tento model odvozen.

GET /openai/models

Získejte seznam modelů uložených v mezipaměti, včetně místních a registrovaných externích modelů.

Odpověď:

  • 200 OK
    Pole názvů modelů jako řetězců

Příklad:

Obsah odpovědi

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

POST /openai/download

Stáhněte si model z katalogu do místního storage.

Poznámka:

Stahování velkých modelů může trvat delší dobu. Nastavte pro tento požadavek vysoký časový limit, abyste se vyhnuli předčasnému ukončení.

text požadavku :

  • model (WorkspaceInferenceModel objekt)
    • Uri (řetězec)
      Identifikátor URI modelu, který chcete stáhnout.
    • Name (řetězec) Název modelu.
    • ProviderType (řetězec, volitelné)
      Typ zprostředkovatele (například "AzureFoundryLocal", "HuggingFace").
    • Path (řetězec, volitelné)
      Vzdálená cesta k souborům modelu Například v úložišti Hugging Face je to cesta k souborům modelu.
    • PromptTemplate (Dictionary<string, string>volitelné)
      Zahrnuje:
      • system (řetězec, volitelné)
        Šablona pro systémovou zprávu.
      • user (řetězec, volitelné) Šablona pro zprávu uživatele.
      • assistant (řetězec, volitelné)
        Šablona pro odpověď asistenta.
      • prompt (řetězec, volitelné)
        Šablona pro interakci s uživatelským asistentem.
    • Publisher (řetězec, volitelné)
      Publisher modelu.
  • token (řetězec, volitelné)
    Ověřovací token pro chráněné modely (GitHub nebo Hugging Face).
  • progressToken (objekt, volitelné)
    Pouze pro AITK. Token ke sledování průběhu stahování
  • customDirPath (řetězec, volitelné)
    Vlastní adresář pro stahování (používaný pro rozhraní příkazového řádku, není potřeba pro AITK).
  • bufferSize (celé číslo, volitelné)
    Velikost vyrovnávací paměti pro stahování HTTP v kB. Žádný vliv na modely NIM nebo Azure Foundry.
  • ignorePipeReport (logická hodnota, volitelné)
    Pokud true, vynutí hlášení průběhu prostřednictvím HTTP streamu místo potrubí. Výchozí hodnota je false pro AITK a true pro Foundry Local.

Odpověď streamování:

Během stahování server poskytuje aktualizace průběhu ve formátu:

("file name", percentage_complete)

Konečný text odpovědi:

  • Success (logická hodnota)
    Zda bylo stahování úspěšně dokončeno.
  • ErrorMessage (řetězec, volitelné)
    Podrobnosti o chybě, pokud stahování selhalo.

Příklad:

Požadavek na URI

POST /openai/download

Obsah požadavku

Všimněte si, že přípona verze musí být zadána v názvu modelu.

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

Stream odpovědí

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

Konečná odpověď

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

GET /openai/load/{name}

Načtěte model do paměti pro rychlejší odvozování.

Parametry identifikátoru URI:

  • name (řetězec)
    Název modelu, který se má načíst.

Parametry dotazu:

  • unload (logická hodnota, volitelné)
    Určuje, jestli se má model automaticky uvolnit po době nečinnosti. Výchozí hodnota je true.
  • ttl (celé číslo, volitelné)
    Čas přežití v sekundách. Pokud je větší než 0, tato hodnota přepíše unload parametr.
  • ep (řetězec, volitelné)
    Zprostředkovatel spouštění pro spuštění tohoto modelu Podporuje: "dml", "cuda", "qnn", "cpu", "webgpu".
    Pokud není zadáno, použije nastavení z genai_config.json.

Odpověď:

  • 200 OK
    Prázdný text odpovědi

Příklad:

Požadavek na URI

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

GET /openai/unload/{name}

Uvolnění modelu z paměti

Parametry identifikátoru URI:

  • name (řetězec) Název modelu, který se má uvolnit.

Parametry dotazu:

  • force (logická hodnota, volitelné) Pokud true, ignoruje nastavení hodnoty TTL a okamžitě se uvolní.

Odpověď:

  • 200 OK Prázdný text odpovědi

Příklad:

Požadavek na URI

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

GET /openai/unloadall

Uvolní všechny modely z paměti.

Odpověď:

  • 200 OK
    Prázdný text odpovědi

GET /openai/loadedmodels

Získejte seznam aktuálně načtených modelů.

Odpověď:

  • 200 OK
    Pole názvů modelů jako řetězců

Příklad:

Obsah odpovědi

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

GET /openai/getgpudevice

Získejte aktuální ID zařízení GPU.

Odpověď:

  • 200 OK
    Celé číslo představující aktuální ID zařízení GPU.

GET /openai/setgpudevice/{deviceId}

Nastavte aktivní zařízení GPU.

Parametry identifikátoru URI:

  • deviceId (celé číslo)
    ID zařízení GPU, které se má použít.

Odpověď:

  • 200 OK
    Prázdný text odpovědi

Příklad:

  • Požadavek URI
    GET /openai/setgpudevice/1
    

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

Počítá tokeny pro danou žádost o dokončení chatu bez odvozování.

text požadavku :

  • Typ obsahu: application/json
  • Objekt JSON ve ChatCompletionCreateRequest formátu s:
    • model (řetězec)
      Model, který se má použít pro tokenizaci
    • messages (matice)
      Pole objektů zpráv s role a content.

Text odpovědi:

  • Typ obsahu: application/json
  • Objekt JSON s počtem tokenů:
    • tokenCount (celé číslo)
      Počet tokenů v požadavku

Příklad:

Obsah požadavku

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

Obsah odpovědi

  {
    "tokenCount": 23
  }