Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
- Foundry Local est disponible en préversion. Les versions en préversion publique fournissent un accès anticipé aux fonctionnalités qui sont en déploiement actif.
- Les fonctionnalités, approches et processus peuvent changer ou avoir des capacités limitées avant la disponibilité générale (GA).
Avertissement
Cette API fait référence à l’API REST disponible dans l’interface CLI locale Foundry. Cette API est en développement actif et peut inclure des modifications importantes sans préavis. Nous vous recommandons vivement de surveiller le journal des modifications avant de créer des applications de production.
POST /v1/chat/achèvements
Ce point de terminaison traite les demandes d’achèvement de conversation.
Il est entièrement compatible avec l’API OpenAI Chat Completions.
Corps de la demande :
---Propriétés Standard OpenAI---
-
model(chaîne)
Modèle spécifique à utiliser pour l’achèvement. -
messages(tableau)
Historique des conversations sous forme de liste de messages.- Chaque message nécessite :
-
role(chaîne)
Rôle de l’expéditeur du message. Doit êtresystem,userouassistant. -
content(chaîne)
Le texte du message réel.
-
- Chaque message nécessite :
-
temperature(nombre, facultatif)
Contrôle l’aléatoire, allant de 0 à 2. Les valeurs supérieures (0,8) créent des sorties variées, tandis que les valeurs inférieures (0,2) créent des sorties ciblées et cohérentes. -
top_p(nombre, facultatif)
Contrôle la diversité de sélection des jetons comprise entre 0 et 1. La valeur 0,1 signifie que seules les jetons avec les 10 probabilités de% les plus élevées sont pris en compte. -
n(entier, facultatif)
Nombre de complétions alternatives à générer pour chaque message d'entrée. -
stream(booléen, facultatif)
Lorsque la valeur est true, envoie des réponses partielles de message en tant qu’événements envoyés par le serveur, se terminant par undata: [DONE]message. -
stop(chaîne ou tableau, facultatif)
Jusqu’à 4 séquences qui entraîneront le modèle à cesser de générer des jetons supplémentaires. -
max_tokens(entier, facultatif)
Nombre maximum de jetons à générer. Pour les modèles plus récents, utilisezmax_completion_tokensà la place. -
max_completion_tokens(entier, facultatif)
Nombre maximal de jetons que le modèle peut générer, y compris les jetons de sortie visibles et de raisonnement. -
presence_penalty(nombre, facultatif)
Valeur comprise entre -2.0 et 2.0. Les valeurs positives encouragent le modèle à discuter de nouveaux sujets en pénalisant les jetons déjà apparus. -
frequency_penalty(nombre, facultatif)
Valeur comprise entre -2.0 et 2.0. Les valeurs positives découragent la répétition en pénalisant les jetons en fonction de leur fréquence dans le texte. -
logit_bias(carte, facultatif)
Ajuste la probabilité de jetons spécifiques apparaissant dans la saisie semi-automatique. -
user(chaîne, facultatif)
Identificateur unique pour votre utilisateur final qui aide à surveiller et à prévenir les abus. -
functions(tableau, facultatif)
Fonctions disponibles pour lesquelles le modèle peut générer des entrées JSON.- Chaque fonction doit inclure :
-
name(chaîne)
Nom de la fonction. -
description(chaîne)
Description de la fonction. -
parameters(objet)
Paramètres de fonction décrits en tant qu’objet json Schema.
-
- Chaque fonction doit inclure :
-
function_call(chaîne ou objet, facultatif)
Contrôle la façon dont le modèle répond aux appels de fonction.- S’il s’agit de l’objet, peut inclure :
-
name(chaîne, facultatif)
Nom de la fonction à appeler. -
arguments(objet, facultatif)
Arguments à passer à la fonction.
-
- S’il s’agit de l’objet, peut inclure :
-
metadata(objet, facultatif)
Dictionnaire de paires clé-valeur de métadonnées. -
top_k(nombre, facultatif)
Nombre de jetons de vocabulaire de probabilité les plus élevés à conserver pour le filtrage top-k. -
random_seed(entier, facultatif)
Valeur initiale pour la génération de nombres aléatoires reproductibles. -
ep(chaîne, facultatif)
Remplacez le fournisseur pour les modèles ONNX. Prend en charge :"dml","cuda","qnn","cpu","webgpu". -
ttl(entier, facultatif)
Durée de vie en secondes du modèle en mémoire. -
tools(objet, facultatif)
Outils calculés pour la requête.
Corps de la réponse :
-
id(chaîne)
Identificateur unique pour l'achèvement de la conversation. -
object(chaîne)
Type d’objet, toujours"chat.completion". -
created(entier)
Horodatage de création en secondes d’époque. -
model(chaîne)
Modèle utilisé pour la complétion. -
choices(tableau)
Liste des choix d’achèvement, chacun contenant :-
index(entier)
Index de ce choix. -
message(objet)
Message généré avec :-
role(chaîne)
Toujours"assistant"pour les réponses. -
content(chaîne)
Le texte réellement généré.
-
-
finish_reason(chaîne)
Pourquoi la génération s’est arrêtée (par exemple,"stop","length")."function_call"
-
-
usage(objet)
Statistiques d’utilisation des jetons :-
prompt_tokens(entier)
Jetons dans l’invite. -
completion_tokens(entier)
Jetons dans la saisie semi-automatique. -
total_tokens(entier)
Nombre total de jetons utilisés.
-
Exemple :
Corps de la requête
{
"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": {}
}
Corps de réponse
{
"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
Obtenez les informations d’état du serveur.
Corps de la réponse :
-
Endpoints(tableau de chaînes)
Points de terminaison pour les liaisons du serveur HTTP. -
ModelDirPath(chaîne)
Répertoire dans lequel les modèles locaux sont stockés. -
PipeName(chaîne)
Nom du serveur NamedPipe actuel.
Exemple :
Corps de réponse
{
"Endpoints": ["http://localhost:5272"],
"ModelDirPath": "/path/to/models",
"PipeName": "inference_agent"
}
GET /foundry/list
Obtenez la liste des modèles locaux Foundry disponibles dans le catalogue.
Réponse :
-
models(tableau)
Tableau d’objets de modèle. Chaque modèle inclut :-
name: identificateur unique du modèle. -
displayName: nom lisible par l’homme pour le modèle, souvent identique au nom. -
providerType: type de fournisseur hébergeant le modèle (par exemple, AzureFoundry). -
uri: URI de ressource pointant vers l’emplacement du modèle dans le Registre. -
version: numéro de version du modèle. -
modelType: format ou type du modèle (par exemple, ONNX). -
promptTemplate:-
assistant: modèle pour la réponse de l’assistant. -
prompt: modèle pour l’interaction de l’assistant utilisateur.
-
-
publisher: entité ou organisation qui a publié le modèle. -
task: La tâche principale que le modèle est conçu pour accomplir (par exemple, la complétion de conversation). -
runtime:-
deviceType: le type de matériel sur lequel le modèle est conçu pour s’exécuter (par exemple, processeur). -
executionProvider: fournisseur d’exécution utilisé pour exécuter le modèle.
-
-
fileSizeMb: taille du fichier de modèle en mégaoctets. -
modelSettings:-
parameters: liste des paramètres configurables pour le modèle.
-
-
alias: autre nom ou raccourci pour le modèle -
supportsToolCalling: indique si le modèle prend en charge les fonctionnalités d’appel d’outils. -
license: type de licence sous lequel le modèle est distribué. -
licenseDescription: description détaillée ou lien vers les termes du contrat de licence. -
parentModelUri: URI du modèle parent à partir duquel ce modèle est dérivé.
-
GET /openai/models
Obtenez la liste des modèles mis en cache, y compris les modèles externes locaux et inscrits.
Réponse :
- 200 OK
Tableau de noms de modèles sous forme de chaînes.
Exemple :
Corps de réponse
["Phi-4-mini-instruct-generic-cpu", "phi-3.5-mini-instruct-generic-cpu"]
POST /openai/download
Téléchargez un modèle à partir du catalogue vers le stockage local.
Note
Les téléchargements de modèles volumineux peuvent prendre beaucoup de temps. Définissez un délai d’expiration élevé pour cette demande afin d’éviter l’arrêt anticipé.
Corps de la demande :
-
model(WorkspaceInferenceModelobjet)-
Uri(chaîne)
L'URI du modèle à télécharger. -
Name(chaîne) Nom du modèle. -
ProviderType(chaîne, facultatif)
Type de fournisseur (par exemple,"AzureFoundryLocal","HuggingFace"). -
Path(chaîne, facultatif)
Chemin d’accès distant aux fichiers de modèle. Par exemple, dans un référentiel Hugging Face, il s’agit du chemin d’accès aux fichiers de modèle. -
PromptTemplate(Dictionary<string, string>facultatif)
Inclus :-
system(chaîne, facultatif)
Modèle pour le message système. -
user(chaîne, facultatif) Modèle pour le message de l’utilisateur. -
assistant(chaîne, facultatif)
Modèle pour la réponse de l’Assistant. -
prompt(chaîne, facultatif)
Modèle pour l’interaction de l’assistant utilisateur.
-
-
Publisher(chaîne, facultatif)
Éditeur du modèle.
-
-
token(chaîne, facultatif)
Jeton d’authentification pour les modèles protégés (GitHub ou Hugging Face). -
progressToken(objet, facultatif)
Pour AITK uniquement. Jeton pour suivre la progression du téléchargement. -
customDirPath(chaîne, facultatif)
Répertoire de téléchargement personnalisé (utilisé pour l’interface CLI, non nécessaire pour AITK). -
bufferSize(entier, facultatif)
Taille de la mémoire tampon de téléchargement HTTP en Ko. Aucun effet sur les modèles NIM ou Azure Foundry. -
ignorePipeReport(booléen, facultatif)
Sitrue, force la création de rapports de progression via le flux HTTP au lieu du canal.falsePar défaut pour AITK ettruepour Foundry Local.
Réponse de streaming :
Pendant le téléchargement, le serveur diffuse des mises à jour de progression au format :
("file name", percentage_complete)
Corps de la réponse finale :
-
Success(booléen)
Indique si le téléchargement s’est terminé correctement. -
ErrorMessage(chaîne, facultatif)
Détails de l’erreur en cas d’échec du téléchargement.
Exemple :
URI de la requête
POST /openai/download
Corps de la requête
Notez que le suffixe de version doit être fourni dans le nom du modèle.
{
"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|>"
}
}
}
Flux de réponse
("genai_config.json", 0.01)
("genai_config.json", 0.2)
("model.onnx.data", 0.5)
("model.onnx.data", 0.78)
...
("", 1)
Réponse finale
{
"Success": true,
"ErrorMessage": null
}
GET /openai/load/{name}
Chargez un modèle en mémoire pour accélérer l’inférence.
Paramètres d’URI :
-
name(chaîne)
Nom du modèle à charger.
Paramètres de requête :
-
unload(booléen, facultatif)
Indique s’il faut décharger automatiquement le modèle après l’inactivité. La valeur par défaut esttrue. -
ttl(entier, facultatif)
Durée de vie en secondes. Si elle est supérieure à 0, cette valeur remplace leunloadparamètre. -
ep(chaîne, facultatif)
Fournisseur d’exécution pour exécuter ce modèle. Prend en charge :"dml","cuda","qnn","cpu","webgpu".
Si ce n’est pas spécifié, utilise les paramètres à partir degenai_config.json.
Réponse :
- 200 OK
Corps de réponse vide
Exemple :
URI de la requête
GET /openai/load/Phi-4-mini-instruct-generic-cpu?ttl=3600&ep=dml
GET /openai/unload/{name}
Déchargez un modèle à partir de la mémoire.
Paramètres d’URI :
-
name(chaîne) Nom du modèle à décharger.
Paramètres de requête :
-
force(booléen, facultatif) Sitrue, ignore les paramètres de durée de vie et décharge immédiatement.
Réponse :
- 200 OK Corps de réponse vide
Exemple :
URI de la requête
GET /openai/unload/Phi-4-mini-instruct-generic-cpu?force=true
GET /openai/unloadall
Décharge tous les modèles de la mémoire.
Réponse :
- 200 OK
Corps de réponse vide
GET /openai/loadedmodels
Obtenez la liste des modèles actuellement chargés.
Réponse :
- 200 OK
Tableau de noms de modèles sous forme de chaînes.
Exemple :
Corps de réponse
["Phi-4-mini-instruct-generic-cpu", "phi-3.5-mini-instruct-generic-cpu"]
GET /openai/getgpudevice
Obtenez l’ID d’appareil GPU actuel.
Réponse :
- 200 OK
Entier représentant l’ID d’appareil GPU actuel.
GET /openai/setgpudevice/{deviceId}
Définissez le périphérique GPU actif.
Paramètres d’URI :
-
deviceId(entier)
ID d’appareil GPU à utiliser.
Réponse :
- 200 OK
Corps de réponse vide
Exemple :
- URI de demande
GET /openai/setgpudevice/1
POST /v1/chat/completions/tokenizer/encode/count
Compte les jetons pour une demande d'achèvement de conversation donnée sans effectuer d'inférence.
Corps de la demande :
- Content-Type : application/json
- Objet JSON au
ChatCompletionCreateRequestformat avec :-
model(chaîne)
Modèle à utiliser pour la tokenisation. -
messages(tableau)
Tableau d’objets de message avecroleetcontent.
-
Corps de la réponse :
- Content-Type : application/json
- Objet JSON avec nombre de jetons :
-
tokenCount(entier)
Nombre de jetons dans la requête.
-
Exemple :
Corps de la requête
{
"messages": [
{
"role": "system",
"content": "This is a system message"
},
{
"role": "user",
"content": "Hello, what is Microsoft?"
}
],
"model": "Phi-4-mini-instruct-cuda-gpu"
}
Corps de réponse
{
"tokenCount": 23
}