Foundry Lokale REST-API-Referenz

Important

  • Foundry Local CLI ist in der Vorschau verfügbar. Öffentliche Vorschauversionen bieten frühzeitige access für Features, die sich in der aktiven Bereitstellung befinden.
  • Features, Ansätze und Prozesse können sich vor der allgemeinen Verfügbarkeit (General Availability, GA) noch ändern oder eine eingeschränkte Funktionalität aufweisen.

Caution

Diese API bezieht sich auf die REST-API, die in der lokalen Cli für Foundry verfügbar ist. Diese API befindet sich in der aktiven Entwicklung und kann unterbrechungslose Änderungen enthalten. Sie sollten sich das Änderungsprotokoll unbedingt ansehen, bevor Sie Produktionsanwendungen erstellen.

POST /v1/chat/completions

Dieser Endpunkt verarbeitet Chatabschlussanforderungen.
Sie ist vollständig kompatibel mit der OpenAI-Chat-Abschluss-API.

Request Body:

---Standard OpenAI-Eigenschaften---

  • model (Zeichenfolge)
    Das spezifische Modell, das für die Vervollständigung verwendet werden soll.
  • messages (Array)
    Der Konversationsverlauf als Liste von Nachrichten.
    • Jede Nachricht erfordert Folgendes:
      • role (Zeichenfolge)
        Die Rolle des Absenders der Nachricht. Muss system, user oder assistant sein.
      • content (Zeichenfolge)
        Der eigentliche Nachrichtentext.
  • temperature (Zahl, optional)
    Steuert die Zufälligkeit, im Bereich von 0 bis 2. Höhere Werte (0,8) erzeugen unterschiedliche Ausgaben, während niedrigere Werte (0,2) fokussierte, konsistente Ausgaben erzeugen.
  • top_p (Zahl, optional)
    Steuert die Tokenauswahlvielfalt von 0 bis 1. Ein Wert von 0,1 bedeutet, dass nur die Token mit der höchsten Wahrscheinlichkeit von 10 % berücksichtigt werden.
  • n (ganze Zahl, optional)
    Anzahl der alternativen Vervollständigungen, die für jede Eingabenachricht generiert werden sollen.
  • stream (boolescher Wert, optional)
    Wenn wahr, sendet Teilnachrichtenantworten als servergesendete Ereignisse, die mit einer data: [DONE] Nachricht enden.
  • stop (Zeichenfolge oder Array, optional)
    Bis zu 4 Sequenzen, die dazu führen, dass das Modell das Generieren weiterer Token beendet.
  • max_tokens (ganze Zahl, optional)
    Maximale Anzahl der zu generierenden Token. Verwenden Sie max_completion_tokens stattdessen für neuere Modelle.
  • max_completion_tokens (ganze Zahl, optional)
    Maximale Anzahl von Token, die das Modell generieren kann, einschließlich sichtbarer Ausgabe- und Begründungstoken.
  • presence_penalty (Zahl, optional)
    Wert zwischen -2,0 und 2,0. Positive Werte ermutigen das Modell, neue Themen zu diskutieren, indem Token bestraft werden, die bereits erschienen sind.
  • frequency_penalty (Zahl, optional)
    Wert zwischen -2,0 und 2,0. Positive Werte verhindern Wiederholungen, indem Token basierend auf ihrer Häufigkeit im Text bestraft werden.
  • logit_bias (Zuordnung, optional)
    Passt die Wahrscheinlichkeit an, dass bestimmte Token in der Vervollständigung auftauchen.
  • user (Zeichenfolge, optional)
    Ein eindeutiger Bezeichner für Ihren Endbenutzer, der bei der Überwachung und Missbrauchsprävention hilft.
  • functions (Array, optional)
    Verfügbare Funktionen, für die das Modell JSON-Eingaben generieren kann.
    • Jede Funktion muss Folgendes enthalten:
      • name (Zeichenfolge)
        Function name.
      • description (Zeichenfolge)
        Function description.
      • parameters (Objekt)
        Funktionsparameter, die als JSON-Schemaobjekt beschrieben werden.
  • function_call (Zeichenfolge oder Objekt, optional)
    Steuert, wie das Modell auf Funktionsaufrufe reagiert.
    • Wenn es sich um ein Objekt handelt, kann Folgendes enthalten sein:
      • name (Zeichenfolge, optional)
        Der Name der aufzurufenden Funktion.
      • arguments (Objekt, optional)
        Die Argumente, die an die Funktion übergeben werden sollen.
  • metadata (Objekt, optional)
    Ein Wörterbuch mit Metadatenschlüssel-Wert-Paaren.
  • top_k (Zahl, optional)
    Die Anzahl der Token mit der höchsten Wahrscheinlichkeit im Vokabular, die bei der Top-k-Filterung beibehalten werden.
  • random_seed (ganze Zahl, optional)
    Seed für reproduzierbare Zufallszahlengenerierung.
  • ep (Zeichenfolge, optional)
    Überschreiben Sie den Anbieter für ONNX-Modelle. Unterstützt: "dml", "cuda", "qnn", "cpu", "webgpu".
  • ttl (ganze Zahl, optional)
    Gültigkeitsdauer für das Modell im Arbeitsspeicher in Sekunden.
  • tools (Objekt, optional)
    Für die Anforderung berechnete Tools.

Response body:

  • id (Zeichenfolge)
    Eindeutiger Bezeichner für den Chatabschluss.
  • object (Zeichenfolge)
    Der Objekttyp, immer "chat.completion".
  • created (ganze Zahl)
    Zeitstempel der Erstellung in Epochensekunden.
  • model (Zeichenfolge)
    Das für die Vervollständigung verwendete Modell
  • choices (Array)
    Liste der Abschlussoptionen, die jeweils Folgendes enthalten:
    • index (ganze Zahl)
      Der Index dieser Auswahl.
    • message (Objekt)
      Die generierte Nachricht mit:
      • role (Zeichenfolge)
        Für Antworten immer "assistant".
      • content (Zeichenfolge)
        Der tatsächlich generierte Text.
    • finish_reason (Zeichenfolge)
      Warum die Erzeugung gestoppt wurde (z. B. "stop", "length", "function_call").
  • usage (Objekt)
    Tokenverwendungsstatistiken:
    • prompt_tokens (ganze Zahl)
      Token im Prompt.
    • completion_tokens (ganze Zahl)
      Token im Abschluss.
    • total_tokens (ganze Zahl)
      Gesamtanzahl der verwendeten Tokens.

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

Dieser Endpunkt transkribiert Audiodateien in Text. Sie ist kompatibel mit der OpenAI-Audiotranskriptions-API.

Anforderungsformat:multipart/form-data

Request fields:

  • file (Datei, erforderlich)
    Die zu transkribierende Audiodatei. Unterstützte Formate sind MP3, WAV, FLAC, OGG und WebM.
  • model (Zeichenfolge, erforderlich)
    Die Modell-ID, die für die Transkription verwendet werden soll. Verwenden Sie die BEIM Laden eines Flüstermodells zurückgegebene ID (z. B. nach dem Laden whisper-tiny).
  • language (Zeichenfolge, optional)
    Die Sprache des Audiosignals im ISO 639-1-Format (z. B "en". ). Dadurch wird Genauigkeit und Geschwindigkeit verbessert.
  • temperature (Zahl, optional)
    Probenahmetemperatur zwischen 0 und 1. Niedrigere Werte erzeugen deterministische Ergebnisse.
  • response_format (Zeichenfolge, optional)
    Das Format der Antwort. Optionen: json (Standard), text, verbose_json.

Response body:

  • text (Zeichenfolge)
    Der transkribierte Text.

Example:

Request

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

Important

Ersetzen Sie den <PORT> dynamischen Port des lokalen Foundry-Diensts und <MODEL_ID> die Modell-ID, die beim Laden des Modells zurückgegeben wurde. Verwenden Sie manager.endpoint im SDK (JS) oder config.Web.Urls (C#) zum Abrufen des Endpunkts – nie hartcodieren Sie den Port.

Response body

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

Tip

Verfügbare Flüstermodellaliasen umfassen whisper-tiny, whisper-baseund whisper-small. Verwenden Sie diese Aliase mit dem SDK, um Modelle herunterzuladen und zu laden , manager.catalog.getModel("whisper-tiny") z. B. in JavaScript.

GET /openai/status

Abrufen von Serverstatusinformationen.

Response body:

  • Endpoints (Array von Zeichenfolgen)
    Die Bindungsendpunkte des HTTP-Servers.
  • ModelDirPath (Zeichenfolge)
    Verzeichnis, in dem lokale Modelle gespeichert werden.
  • PipeName (Zeichenfolge)
    Der aktuelle Name des NamedPipe-Servers.

Example:

Response body

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

GET /foundry/list

Rufen Sie eine Liste der verfügbaren lokalen Foundry-Modelle im Katalog ab.

Response:

  • models (Array)
    Feld von Modellobjekten. Jedes Modell umfasst:
    • name: Der eindeutige Bezeichner für das Modell.
    • displayName: Ein lesbarer Name für das Modell, häufig identisch mit dem Namen.
    • providerType: Der Typ des Anbieters, der das Modell hosten (z. B. AzureFoundry).
    • uri: Die Ressourcen-URI, die auf den Speicherort des Modells im Verzeichnis verweist.
    • version: Die Versionsnummer des Modells.
    • modelType: Das Format oder der Typ des Modells (z. B. ONNX).
    • promptTemplate:
      • assistant: Die Vorlage für die Antwort des Assistenten.
      • prompt: Die Vorlage für die Benutzer-Assistent-Interaktion.
    • publisher: Die Entität oder Organisation, die das Modell veröffentlicht hat.
    • task: Die primäre Aufgabe, die das Modell ausführen soll (z. B. Chatabschluss).
    • runtime:
      • deviceType: Der Typ der Hardware, auf der das Modell ausgeführt werden soll (z. B. CPU).
      • executionProvider: Der Ausführungsanbieter, der für die Ausführung des Modells verwendet wird.
    • fileSizeMb: Die Größe der Modelldatei in Megabyte.
    • modelSettings:
      • parameters: Eine Liste konfigurierbarer Parameter für das Modell.
    • alias: Ein alternativer Name oder eine Kurzform für das Modell
    • supportsToolCalling: Gibt an, ob das Modell Funktionen zum Aufrufen von Tools unterstützt.
    • license: Der Lizenztyp, unter dem das Modell verteilt wird.
    • licenseDescription: Eine detaillierte Beschreibung oder ein Link zu den Lizenzbedingungen.
    • parentModelUri: Der URI des übergeordneten Modells, von dem dieses Modell abgeleitet wird.

GET /openai/models

Dient zum Abrufen einer Liste zwischengespeicherter Modelle, einschließlich lokaler und registrierter externer Modelle.

Response:

  • 200 OK
    Ein Zeichenfolgenarray von Modellnamen.

Example:

Response body

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

POST /openai/download

Laden Sie ein Modell aus dem Katalog in lokale storage herunter.

Note

Große Modelldownloads können eine lange Zeit in Anspruch nehmen. Legen Sie einen hohen Timeout für diese Anforderung fest, um eine vorzeitige Beendigung zu vermeiden.

Request Body:

  • model (WorkspaceInferenceModel Objekt)
    • Uri (Zeichenfolge)
      Der Modell-URI, der heruntergeladen werden soll.
    • Name (Zeichenfolge) Der Modellname.
    • ProviderType (Zeichenfolge, optional)
      Der Anbietertyp (z "AzureFoundryLocal". B. , "HuggingFace").
    • Path (Zeichenfolge, optional)
      Remotepfad zu den Modelldateien. Dies ist z. B. in einem Hugging Face-Repository der Pfad zu den Modelldateien.
    • PromptTemplate (Dictionary<string, string>, fakultativ)
      Includes:
      • system (Zeichenfolge, optional)
        Die Vorlage für die Systemmeldung.
      • user (Zeichenfolge, optional) Die Vorlage für die Nachricht des Benutzers.
      • assistant (Zeichenfolge, optional)
        Die Vorlage für die Antwort des Assistenten.
      • prompt (Zeichenfolge, optional)
        Die Vorlage für die Benutzer-Assistent-Interaktion.
    • Publisher (Zeichenfolge, optional)
      Die publisher des Modells.
  • token (Zeichenfolge, optional)
    Authentifizierungstoken für geschützte Modelle (GitHub oder Hugging Face).
  • progressToken (Objekt, optional)
    Nur für AITK. Token zum Nachverfolgen des Downloadfortschritts.
  • customDirPath (Zeichenfolge, optional)
    Benutzerdefiniertes Downloadverzeichnis (für CLI verwendet, für AITK nicht erforderlich).
  • bufferSize (ganze Zahl, optional)
    GRÖßE des HTTP-Downloadpuffers in KB. Keine Auswirkung auf NIM- oder Azure Foundry-Modelle.
  • ignorePipeReport (boolescher Wert, optional)
    Wenn dieser Wert true ist, wird die Statusberichterstattung über HTTP-Datenstrom anstelle von Pipe erzwungen. Für AITK standardmäßig false und für Foundry Local true.

Streaming Response:

Während des Downloads streamt der Server Statusaktualisierungen im Format:

("file name", percentage_complete)

Endgültiger Antworttext:

  • Success (boolesch)
    Ob der Download erfolgreich abgeschlossen wurde.
  • ErrorMessage (Zeichenfolge, optional)
    Fehlerdetails, wenn der Download fehlgeschlagen ist.

Example:

Request URI

POST /openai/download

Request body

Beachten Sie, dass das Versionssuffix im Modellnamen angegeben werden muss.

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

Laden Sie ein Modell in den Arbeitsspeicher, um eine schnellere Ableitung zu ermöglichen.

URI Parameters:

  • name (Zeichenfolge)
    Der zu ladende Modellname.

Query Parameters:

  • unload (boolescher Wert, optional)
    Gibt an, ob das Modell nach Leerlaufzeit automatisch entladen werden soll. Wird standardmäßig auf true festgelegt.
  • ttl (ganze Zahl, optional)
    Gültigkeitsdauer in Sekunden. Wenn er größer als 0 ist, überschreibt dieser Wert den unload Parameter.
  • ep (Zeichenfolge, optional)
    Ausführungsanbieter für dieses Modell. Unterstützt: "dml", "cuda", "qnn", "cpu", "webgpu".
    Wenn nicht angegeben, werden die Einstellungen von genai_config.json verwendet.

Response:

  • 200 OK
    Leerer Antwortkörper

Example:

Request URI

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

GET /openai/unload/{name}

Entladen sie ein Modell aus dem Arbeitsspeicher.

URI Parameters:

  • name (Zeichenfolge) Der Modellname, der entladen werden soll.

Query Parameters:

  • force (boolescher Wert, optional) Wenn true, ignoriert TTL-Einstellungen und Entladungen sofort.

Response:

  • 200 OK Leerer Antworttext

Example:

Request URI

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

GET /openai/unloadall

Entlädt alle Modelle aus dem Arbeitsspeicher.

Response:

  • 200 OK
    Leerer Antwortkörper

GET /openai/loadedmodels

Ruft die Liste der derzeit geladenen Modelle ab.

Response:

  • 200 OK
    Ein Zeichenfolgenarray von Modellnamen.

Example:

Response body

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

GET /openai/getgpudevice

Abrufen der aktuellen GPU-Geräte-ID.

Response:

  • 200 OK
    Eine ganze Zahl, die die aktuelle GPU-Geräte-ID darstellt.

GET /openai/setgpudevice/{deviceId}

Legen Sie das aktive GPU-Gerät fest.

URI Parameters:

  • deviceId (ganze Zahl)
    Die zu verwendende GPU-Geräte-ID.

Response:

  • 200 OK
    Leerer Antwortkörper

Example:

  • Request URI
    GET /openai/setgpudevice/1
    

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

Zählt Token für eine bestimmte Chat-Abschlussanforderung ohne Ableitung.

Request Body:

  • Content-Type: application/json
  • JSON-Objekt im ChatCompletionCreateRequest Format mit:
    • model (Zeichenfolge)
      Modell, das für die Tokenisierung verwendet werden soll.
    • messages (Array)
      Array von Nachrichtenobjekten mit role und content.

Response Body:

  • Content-Type: application/json
  • JSON-Objekt mit Tokenanzahl:
    • tokenCount (ganze Zahl)
      Anzahl der Token in der Anforderung.

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
  }