Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
- Foundry Local è disponibile in anteprima. Le versioni di anteprima pubblica consentono l'accesso anticipato alle funzionalità in fase di distribuzione attiva.
- Funzionalità, approcci e processi possono subire variazioni o avere funzionalità limitate, prima della disponibilità generale (GA).
Attenzione
Questa API fa riferimento all'API REST disponibile nell'interfaccia della riga di comando locale di Foundry. Questa API è in fase di sviluppo attivo e può includere modifiche di rilievo senza preavviso. È consigliabile monitorare il log delle modifiche prima di compilare applicazioni di produzione.
POST /v1/chat/completions
Questo endpoint elabora le richieste di completamento della chat.
È completamente compatibile con l'API OpenAI Chat Completions.
Corpo della richiesta:
---Proprietà OpenAI standard---
-
model(stringa)
Modello specifico da usare per il completamento. -
messages(matrice)
Cronologia delle conversazioni come elenco di messaggi.- Ogni messaggio richiede:
-
role(stringa)
Ruolo del mittente del messaggio. Deve esseresystem,useroassistant. -
content(stringa)
Testo effettivo del messaggio.
-
- Ogni messaggio richiede:
-
temperature(numero, facoltativo)
Controlla la casualità, compreso tra 0 e 2. I valori più alti (0,8) creano output diversi, mentre i valori inferiori (0,2) creano output mirati e coerenti. -
top_p(numero, facoltativo)
Controlla la diversità di selezione dei token da 0 a 1. Un valore pari a 0,1 indica che vengono considerati solo i token con probabilità più alta tra le prime 10%. -
n(integer, facoltativo)
Numero di completamenti alternativi da generare per ogni messaggio di input. -
stream(booleano, facoltativo)
Quando è vero, invia risposte parziali ai messaggi come eventi inviati dal server, terminando con un messaggiodata: [DONE]. -
stop(stringa o matrice, facoltativo)
Fino a 4 sequenze che causeranno l'arresto della generazione di altri token da parte del modello. -
max_tokens(integer, facoltativo)
Numero massimo di token da generare. Per i modelli più recenti, usaremax_completion_tokensinvece . -
max_completion_tokens(integer, facoltativo)
Numero massimo di token che il modello può generare, inclusi l'output visibile e i token di ragionamento. -
presence_penalty(numero, facoltativo)
Valore compreso tra -2.0 e 2.0. I valori positivi incoraggiano il modello a discutere nuovi argomenti penalizzando i token già apparsi. -
frequency_penalty(numero, facoltativo)
Valore compreso tra -2.0 e 2.0. I valori positivi scoraggiano la ripetizione penalizzando i token in base alla loro frequenza nel testo. -
logit_bias(mappa, facoltativo)
Regola la probabilità di token specifici visualizzati nel completamento. -
user(stringa, facoltativa)
Identificatore univoco per l'utente finale che consente di monitorare e prevenire gli abusi. -
functions(matrice, facoltativo)
Funzioni disponibili per le quali il modello può generare input JSON.- Ogni funzione deve includere:
-
name(stringa)
Nome della funzione. -
description(stringa)
Descrizione della funzione. -
parameters(oggetto)
Parametri della funzione descritti come oggetto Schema JSON.
-
- Ogni funzione deve includere:
-
function_call(stringa o oggetto, facoltativo)
Controlla la modalità di risposta del modello alle chiamate di funzione.- Se oggetto, può includere:
-
name(stringa, facoltativa)
Nome della funzione da chiamare. -
arguments(oggetto, facoltativo)
Argomenti da passare alla funzione.
-
- Se oggetto, può includere:
-
metadata(oggetto, facoltativo)
Dizionario di coppie chiave-valore di metadati. -
top_k(numero, facoltativo)
Numero di token di vocabolario di probabilità più elevati da mantenere per il filtro top-k. -
random_seed(integer, facoltativo)
Seme per la generazione di numeri casuali riproducibili. -
ep(stringa, facoltativa)
Sovrascrivi il provider per i modelli ONNX. Supporta:"dml","cuda","qnn","cpu","webgpu". -
ttl(integer, facoltativo)
Tempo di durata in secondi per il modello in memoria. -
tools(oggetto, facoltativo)
Strumenti calcolati per la richiesta.
Corpo della risposta:
-
id(stringa)
Identificatore univoco per il completamento della chat. -
object(stringa)
Tipo di oggetto, sempre"chat.completion". -
created(intero)
Timestamp di creazione in secondi dell'epoca. -
model(stringa)
Modello usato per il completamento. -
choices(matrice)
Elenco di scelte di completamento, ognuna contenente:-
index(intero)
Indice di questa scelta. -
message(oggetto)
Messaggio generato con:-
role(stringa)
Sempre"assistant"per le risposte. -
content(stringa)
Il testo realmente generato.
-
-
finish_reason(stringa)
Perché la generazione si è fermata (ad esempio,"stop","length","function_call").
-
-
usage(oggetto)
Statistiche sull'utilizzo dei token:-
prompt_tokens(intero)
Token nel prompt. -
completion_tokens(intero)
Token nel completamento. -
total_tokens(intero)
Totale dei token usati.
-
Esempio:
Testo della richiesta
{
"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": {}
}
Corpo della risposta
{
"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
Ottenere informazioni sullo stato del server.
Corpo della risposta:
-
Endpoints(matrice di stringhe)
Endpoint di associazione del server HTTP. -
ModelDirPath(stringa)
Directory in cui vengono archiviati i modelli locali. -
PipeName(stringa)
Nome corrente del server NamedPipe.
Esempio:
Corpo della risposta
{
"Endpoints": ["http://localhost:5272"],
"ModelDirPath": "/path/to/models",
"PipeName": "inference_agent"
}
GET /foundry/list
Ottieni un elenco dei Foundry modelli locali disponibili nel catalogo.
Risposta:
-
models(matrice)
Matrice di oggetti modello. Ogni modello include:-
name: identificatore univoco per il modello. -
displayName: nome leggibile per il modello, spesso uguale al nome. -
providerType: tipo di provider che ospita il modello, ad esempio AzureFoundry. -
uri: URI della risorsa che punta alla posizione del modello nel registro. -
version: numero di versione del modello. -
modelType: formato o tipo del modello , ad esempio ONNX. -
promptTemplate:-
assistant: modello per la risposta dell'assistente. -
prompt: modello per l'interazione con l'assistente utente.
-
-
publisher: entità o organizzazione che ha pubblicato il modello. -
task: l'attività primaria che il modello è progettato per eseguire (ad esempio, il completamento della chat). -
runtime:-
deviceType: il tipo di hardware in cui il modello è progettato per l'esecuzione (ad esempio, CPU). -
executionProvider: provider di esecuzione usato per l'esecuzione del modello.
-
-
fileSizeMb: dimensioni del file del modello in megabyte. -
modelSettings:-
parameters: elenco di parametri configurabili per il modello.
-
-
alias: nome alternativo o abbreviato per il modello -
supportsToolCalling: indica se il modello supporta la funzionalità di chiamata degli strumenti. -
license: tipo di licenza con cui viene distribuito il modello. -
licenseDescription: una descrizione dettagliata o un collegamento alle condizioni di licenza. -
parentModelUri: URI del modello padre da cui deriva questo modello.
-
GET /openai/models
Ottenere un elenco di modelli memorizzati nella cache, inclusi modelli esterni locali e registrati.
Risposta:
- 200 Va bene
Matrice di nomi di modello come stringhe.
Esempio:
Corpo della risposta
["Phi-4-mini-instruct-generic-cpu", "phi-3.5-mini-instruct-generic-cpu"]
POST /openai/download
Scaricare un modello dal catalogo all'archiviazione locale.
Annotazioni
I download di modelli di grandi dimensioni possono richiedere molto tempo. Impostare un timeout elevato per questa richiesta per evitare la terminazione anticipata.
Corpo della richiesta:
-
model(WorkspaceInferenceModeloggetto)-
Uri(stringa)
URI del modello da scaricare. -
Name(string) Nome del modello. -
ProviderType(stringa, facoltativa)
Tipo di provider , ad esempio"AzureFoundryLocal","HuggingFace". -
Path(stringa, facoltativa)
Percorso remoto dei file del modello. Ad esempio, in un repository Hugging Face, si tratta del percorso dei file del modello. -
PromptTemplate(Dictionary<string, string>, facoltativo)
Include:-
system(stringa, facoltativa)
Modello per il messaggio di sistema. -
user(stringa, facoltativa) Modello per il messaggio dell'utente. -
assistant(stringa, facoltativa)
Modello per la risposta dell'assistente. -
prompt(stringa, facoltativa)
Modello per l'interazione con l'assistente utente.
-
-
Publisher(stringa, facoltativa)
Editore del modello.
-
-
token(stringa, facoltativa)
Token di autenticazione per i modelli protetti (GitHub o Hugging Face). -
progressToken(oggetto, facoltativo)
Solo per AITK. Token per tenere traccia dello stato di avanzamento del download. -
customDirPath(stringa, facoltativa)
Directory di download personalizzata (usata per l'interfaccia della riga di comando, non necessaria per AITK). -
bufferSize(integer, facoltativo)
Dimensioni del buffer di download HTTP in KB. Nessun effetto sui modelli NIM o Azure Foundry. -
ignorePipeReport(booleano, facoltativo)
Setrue, impone la segnalazione del progresso tramite flusso HTTP invece di tramite pipe. La configurazione di default èfalseper AITK etrueper Foundry Local.
Risposta in streaming:
Durante il download, il server trasmette gli aggiornamenti dello stato di avanzamento nel formato:
("file name", percentage_complete)
Corpo della risposta finale:
-
Success(booleano)
Indica se il download è stato completato correttamente. -
ErrorMessage(stringa, facoltativa)
Dettagli errore se il download non è riuscito.
Esempio:
URI della richiesta
POST /openai/download
Testo della richiesta
Si noti che il suffisso della versione deve essere specificato nel nome del modello.
{
"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|>"
}
}
}
Flusso di risposta
("genai_config.json", 0.01)
("genai_config.json", 0.2)
("model.onnx.data", 0.5)
("model.onnx.data", 0.78)
...
("", 1)
Risposta finale
{
"Success": true,
"ErrorMessage": null
}
GET /openai/load/{name}
Caricare un modello in memoria per un'inferenza più veloce.
Parametri URI:
-
name(stringa)
Nome del modello da caricare.
Parametri di query:
-
unload(booleano, facoltativo)
Indica se scaricare automaticamente il modello dopo il tempo di inattività. Il valore predefinito ètrue. -
ttl(integer, facoltativo)
Durata di vita in secondi. Se è maggiore di 0, questo valore esegue l'override delunloadparametro . -
ep(stringa, facoltativa)
Fornitore di esecuzione per far funzionare questo modello. Supporta:"dml","cuda","qnn","cpu","webgpu".
Se non specificato, usa le impostazioni digenai_config.json.
Risposta:
- 200 Va bene
Corpo della risposta vuoto
Esempio:
URI della richiesta
GET /openai/load/Phi-4-mini-instruct-generic-cpu?ttl=3600&ep=dml
GET /openai/unload/{name}
Scaricare un modello dalla memoria.
Parametri URI:
-
name(string) Nome del modello da scaricare.
Parametri di query:
-
force(booleano, facoltativo) Setrue, ignora le impostazioni TTL e scarica immediatamente.
Risposta:
- 200 OK Corpo risposta vuoto
Esempio:
URI della richiesta
GET /openai/unload/Phi-4-mini-instruct-generic-cpu?force=true
GET /openai/unloadall
Scarica tutti i modelli dalla memoria.
Risposta:
- 200 Va bene
Corpo della risposta vuoto
GET /openai/loadedmodels
Ottenere l'elenco dei modelli attualmente caricati.
Risposta:
- 200 Va bene
Matrice di nomi di modello come stringhe.
Esempio:
Corpo della risposta
["Phi-4-mini-instruct-generic-cpu", "phi-3.5-mini-instruct-generic-cpu"]
GET /openai/getgpudevice
Ottieni l'ID corrente del dispositivo GPU.
Risposta:
- 200 Va bene
Numero intero che rappresenta l'ID del dispositivo GPU corrente.
GET /openai/setgpudevice/{deviceId}
Impostare il dispositivo GPU attivo.
Parametri URI:
-
deviceId(intero)
ID GPU del dispositivo da usare.
Risposta:
- 200 Va bene
Corpo della risposta vuoto
Esempio:
- URI della richiesta
GET /openai/setgpudevice/1
POST /v1/chat/completions/tokenizer/encode/count
Conta i token per una determinata richiesta di completamento della chat senza eseguire l'inferenza.
Corpo della richiesta:
- Tipo di contenuto: applicazione/json
- Oggetto JSON nel formato
ChatCompletionCreateRequestcon:-
model(stringa)
Modello da usare per la tokenizzazione. -
messages(matrice)
Matrice di oggetti messaggio conroleecontent.
-
Corpo della risposta:
- Tipo di contenuto: applicazione/json
- Oggetto JSON con numero di token:
-
tokenCount(intero)
Numero di token nella richiesta.
-
Esempio:
Testo della richiesta
{
"messages": [
{
"role": "system",
"content": "This is a system message"
},
{
"role": "user",
"content": "Hello, what is Microsoft?"
}
],
"model": "Phi-4-mini-instruct-cuda-gpu"
}
Corpo della risposta
{
"tokenCount": 23
}