Lokal REST API-referens för Foundry

Important

  • Foundry Local CLI är tillgängligt som förhandsversion. Offentliga förhandsversioner ger tidiga access till funktioner som är i aktiv distribution.
  • Funktioner, metoder och processer kan ändra eller ha begränsade funktioner, före allmän tillgänglighet (GA).

Caution

Det här API:et refererar till rest-API:et som är tillgängligt i Foundry Local CLI. Det här API:et är under aktiv utveckling och kan innehålla icke-bakåtkompatibla ändringar utan föregående meddelande. Vi rekommenderar starkt att du övervakar ändringsloggen innan du skapar produktionsprogram.

POST /v1/chat/completions

Den här slutpunkten bearbetar begäranden om chattens slutförande.
Det är fullt kompatibelt med OpenAI Chat Completions API.

Request Body:

---Standard OpenAI-egenskaper---

  • model (sträng)
    Den specifika modell som ska användas för slutförande.
  • messages (matris)
    Konversationshistoriken som en lista över meddelanden.
    • Varje meddelande kräver:
      • role (sträng)
        Meddelandesändarrollen. Måste vara system, usereller assistant.
      • content (sträng)
        Den faktiska meddelandetexten.
  • temperature (tal, valfritt)
    Styr slumpmässighet, från 0 till 2. Högre värden (0,8) skapar olika utdata, medan lägre värden (0,2) skapar fokuserade och konsekventa utdata.
  • top_p (tal, valfritt)
    Styr tokenvalsdiversitet från 0 till 1. Ett värde på 0,1 innebär att endast de token med de 10 högsta%-sannolikheterna beaktas.
  • n (heltal, valfritt)
    Antal alternativa slutföranden som ska genereras för varje indatameddelande.
  • stream (booleskt, valfritt)
    När det är sant skickar du partiella meddelandesvar som serversända händelser och slutar med ett data: [DONE] meddelande.
  • stop (sträng eller matris, valfritt)
    Upp till 4 sekvenser som gör att modellen slutar generera ytterligare token.
  • max_tokens (heltal, valfritt)
    Maximalt antal token som ska genereras. Använd i stället för nyare modeller max_completion_tokens .
  • max_completion_tokens (heltal, valfritt)
    Maximalt antal token som modellen kan generera, inklusive synliga utdata och resonemangstoken.
  • presence_penalty (tal, valfritt)
    Värde mellan -2.0 och 2.0. Positiva värden uppmuntrar modellen att diskutera nya ämnen genom att nedsätta tecken som redan har dykt upp.
  • frequency_penalty (tal, valfritt)
    Värde mellan -2.0 och 2.0. Positiva värden motverkar upprepning genom att bestraffa tokens baserat på deras frekvens i texten.
  • logit_bias (karta, valfritt)
    Justerar sannolikheten för specifika tecken som visas i resultatet.
  • user (sträng, valfritt)
    En unik identifierare för slutanvändaren som hjälper till med övervakning och förebyggande av missbruk.
  • functions (matris, valfritt)
    Tillgängliga funktioner som modellen kan generera JSON-indata för.
    • Varje funktion måste innehålla:
      • name (sträng)
        Function name.
      • description (sträng)
        Function description.
      • parameters (objekt)
        Funktionsparametrar som beskrivs som ett JSON-schemaobjekt.
  • function_call (sträng eller objekt, valfritt)
    Styr hur modellen svarar på funktionsanrop.
    • Om det är ett objekt kan följande inkluderas:
      • name (sträng, valfritt)
        Namnet på funktionen som ska anropas.
      • arguments (objekt, valfritt)
        Argumenten som ska skickas till funktionen.
  • metadata (objekt, valfritt)
    En ordlista med nyckel/värde-par för metadata.
  • top_k (tal, valfritt)
    Antalet vokabulärstoken med högsta sannolikhet som ska behållas för top-k-filtrering.
  • random_seed (heltal, valfritt)
    Frö för reproducerbar slumptalsgenerering.
  • ep (sträng, valfritt)
    Skriv över leverantören för ONNX-modeller. Stödjer: "dml", "cuda", "qnn", "cpu", "webgpu".
  • ttl (heltal, valfritt)
    Livslängd för modellen i minnet, angiven i sekunder.
  • tools (objekt, valfritt)
    Verktyg har beräknats för begäran.

Response body:

  • id (sträng)
    Unik identifierare för chattens slutförande.
  • object (sträng)
    Objekttypen, alltid "chat.completion".
  • created (heltal)
    Tidsstämpel för skapande i epoksekunder.
  • model (sträng)
    Den modell som används för slutförande.
  • choices (matris)
    Lista över slutförandealternativ som var och en innehåller:
    • index (heltal)
      Det här alternativets index.
    • message (objekt)
      Det genererade meddelandet med:
      • role (sträng)
        Alltid "assistant" för svar.
      • content (sträng)
        Den faktiska genererade texten.
    • finish_reason (sträng)
      Varför genereringen stoppades (t.ex. "stop", "length", "function_call").
  • usage (objekt)
    Tokenanvändningsstatistik:
    • prompt_tokens (heltal)
      Token i prompten.
    • completion_tokens (heltal)
      Token i genereringen.
    • total_tokens (heltal)
      Totalt antal token som används.

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

Den här slutpunkten transkriberar ljudfiler till text. Det är kompatibelt med API:et för OpenAI-ljudavskrifter.

Format för begäran:multipart/form-data

Request fields:

  • file (fil, krävs)
    Ljudfilen som ska transkriberas. Format som stöds är MP3, WAV, FLAC, OGG och WebM.
  • model (sträng, krävs)
    Modell-ID:t som ska användas för transkription. Använd det ID som returneras när du läser in en Whisper-modell (till exempel efter inläsning whisper-tiny).
  • language (sträng, valfritt)
    Språket för ljudet i ISO 639-1-format (till exempel "en"). Genom att tillhandahålla detta förbättras noggrannheten och hastigheten.
  • temperature (tal, valfritt)
    Samplingstemperatur mellan 0 och 1. Lägre värden ger mer deterministiska resultat.
  • response_format (sträng, valfritt)
    Formatet på svaret. Alternativ: json (standard), text, verbose_json.

Response body:

  • text (sträng)
    Den transkriberade texten.

Example:

Request

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

Important

Ersätt <PORT> med den dynamiska porten för den lokala foundry-tjänsten och <MODEL_ID> med modell-ID:t som returnerades när modellen lästes in. I SDK använder du manager.endpoint (JS) eller config.Web.Urls (C#) för att hämta slutpunkten – hårdkoda aldrig porten.

Response body

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

Tip

Tillgängliga Whisper-modellalias är whisper-tiny, whisper-baseoch whisper-small. Använd dessa alias med SDK för att ladda ned och läsa in modeller , till exempel manager.catalog.getModel("whisper-tiny") i JavaScript.

GET /openai/status

Hämta information om serverstatus.

Response body:

  • Endpoints (matris med strängar)
    HTTP-serverbindningsslutpunkterna.
  • ModelDirPath (sträng)
    Katalog där lokala modeller lagras.
  • PipeName (sträng)
    Det aktuella namnet på NamedPipe-servern.

Example:

Response body

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

GET /foundry/list

Hämta en lista över tillgängliga lokala Foundry-modeller i katalogen.

Response:

  • models (matris)
    Matris med modellobjekt. Varje modell innehåller:
    • name: Den unika identifieraren för modellen.
    • displayName: Ett läsbart namn för modellen, ofta samma som namnet.
    • providerType: Den typ av leverantör som är värd för modellen (till exempel AzureFoundry).
    • uri: Resurs-URI:n som pekar på modellens plats i registret.
    • version: Modellens versionsnummer.
    • modelType: Modellens format eller typ (till exempel ONNX).
    • promptTemplate:
      • assistant: Mallen för assistentens svar.
      • prompt: Mallen för interaktionen mellan användarassistenten och användaren.
    • publisher: Entiteten eller organisationen som publicerade modellen.
    • task: Den primära uppgift som modellen är utformad för att utföra (till exempel slutförande av chatt).
    • runtime:
      • deviceType: Den typ av maskinvara som modellen är utformad för att köras på (till exempel CPU).
      • executionProvider: Körningsprovidern som används för att köra modellen.
    • fileSizeMb: Storleken på modellfilen i megabyte.
    • modelSettings:
      • parameters: En lista över konfigurerbara parametrar för modellen.
    • alias: Ett alternativt namn eller en förkortning för modellen
    • supportsToolCalling: Indikerar om modellen stödjer funktionalitet för att anropa verktyg.
    • license: Licenstypen som modellen distribueras under.
    • licenseDescription: En detaljerad beskrivning eller länk till licensvillkoren.
    • parentModelUri: URI:n för den överordnade modellen som modellen härleds från.

GET /openai/models

Hämta en lista över cachelagrade modeller, inklusive lokala och registrerade externa modeller.

Response:

  • 200 OK
    En matris med modellnamn som strängar.

Example:

Response body

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

POST /openai/download

Ladda ned en modell från katalogen till lokala storage.

Note

Det kan ta lång tid att ladda ned stora modeller. Ange en hög tidsgräns för den här begäran för att undvika tidig uppsägning.

Request Body:

  • model (WorkspaceInferenceModel objekt)
    • Uri (sträng)
      Modell-URI:n som ska laddas ned.
    • Name (sträng) Modellnamnet.
    • ProviderType (sträng, valfritt)
      Providertypen (till exempel "AzureFoundryLocal", "HuggingFace").
    • Path (sträng, valfritt)
      Fjärrsökväg till modellfilerna. I en lagringsplats för kramande ansikten är det till exempel sökvägen till modellfilerna.
    • PromptTemplate (Dictionary<string, string>valfritt)
      Includes:
      • system (sträng, valfritt)
        Mallen för systemmeddelandet.
      • user (sträng, valfritt) Mallen för användarens meddelande.
      • assistant (sträng, valfritt)
        Mallen för assistentens svar.
      • prompt (sträng, valfritt)
        Mallen för interaktionen mellan användarassistenten och användaren.
    • Publisher (sträng, valfritt)
      Modellens publisher.
  • token (sträng, valfritt)
    Autentiseringstoken för skyddade modeller (GitHub eller Hugging Face).
  • progressToken (objekt, valfritt)
    Endast för AITK. Token för att spåra nedladdningsstatus.
  • customDirPath (sträng, valfritt)
    Anpassad nedladdningskatalog (används för CLI, behövs inte för AITK).
  • bufferSize (heltal, valfritt)
    HTTP-nedladdningsbuffertstorlek i KB. Ingen effekt på NIM- eller Azure Foundry-modeller.
  • ignorePipeReport (booleskt, valfritt)
    Om truetvingar fram förloppsrapportering via HTTP-ström i stället för pipe. Standardvärdet är false för AITK och true för Foundry Local.

Streaming Response:

Under nedladdningen strömmar servern förloppsuppdateringar i formatet:

("file name", percentage_complete)

Slutsvarstext:

  • Success (boolesk)
    Om nedladdningen har slutförts.
  • ErrorMessage (sträng, valfritt)
    Felinformation om nedladdningen misslyckades.

Example:

Request URI

POST /openai/download

Request body

Observera att versionssuffixet måste anges i modellnamnet.

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

Läs in en modell i minnet för snabbare slutsatsdragning.

URI Parameters:

  • name (sträng)
    Modellnamnet som ska läsas in.

Query Parameters:

  • unload (booleskt, valfritt)
    Huruvida modellen automatiskt ska avlastas efter inaktiv tid. Standardinställningen är true.
  • ttl (heltal, valfritt)
    Livslängd i sekunder. Om det är större än 0 åsidosätter det här värdet parametern unload .
  • ep (sträng, valfritt)
    Utförandetjänst för att köra den här modellen. Stödjer: "dml", "cuda", "qnn", "cpu", "webgpu".
    Om det inte anges använder du inställningar från genai_config.json.

Response:

  • 200 OK
    Tom svarskropp

Example:

Request URI

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

GET /openai/unload/{name}

Ta bort en modell från minnet.

URI Parameters:

  • name (sträng) Modellnamnet som ska tas bort.

Query Parameters:

  • force (booleskt, valfritt) Om trueignorerar du TTL-inställningar och tas bort omedelbart.

Response:

  • 200 OK Tom svarstext

Example:

Request URI

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

GET /openai/unloadall

Laddar ur alla modeller från minnet.

Response:

  • 200 OK
    Tom svarskropp

GET /openai/loadedmodels

Hämta listan över för närvarande laddade modeller.

Response:

  • 200 OK
    En matris med modellnamn som strängar.

Example:

Response body

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

GET /openai/getgpudevice

Hämta det aktuella GPU-enhets-ID:t.

Response:

  • 200 OK
    Ett heltal som representerar det aktuella GPU-enhets-ID:t.

GET /openai/setgpudevice/{deviceId}

Ange den aktiva GPU-enheten.

URI Parameters:

  • deviceId (heltal)
    GPU-enhets-ID som ska användas.

Response:

  • 200 OK
    Tom svarskropp

Example:

  • Request URI
    GET /openai/setgpudevice/1
    

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

Räknar token för en viss begäran om chattavslut utan att utföra slutsatsdragning.

Request Body:

  • Content-Type: application/json
  • JSON-objekt i ChatCompletionCreateRequest format med:
    • model (sträng)
      Modell som ska användas för tokenisering.
    • messages (matris)
      Matris med meddelandeobjekt med role och content.

Response Body:

  • Content-Type: application/json
  • JSON-objekt med tokenantal:
    • tokenCount (heltal)
      Antal token i begäran.

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
  }