Guide de l'utilisateur de l'API Ollama
bref
Ollama Une puissante API REST est fournie pour permettre aux développeurs d'interagir facilement avec de grands modèles de langage. Grâce à l'API d'Ollama, les utilisateurs peuvent envoyer des demandes et recevoir des réponses générées par le modèle, appliquées à des tâches telles que le traitement du langage naturel, la génération de texte, etc. Dans cet article, les opérations de base de génération de compléments et de dialogue sont décrites en détail, et les opérations courantes telles que la création de modèles, la copie de modèles et la suppression de modèles sont également expliquées.
point de départ ou point d'arrivée (dans les histoires, etc.)
Compléter une réponse \NCompléter un dialogue \NCréer un modèle \NCopier un modèle \NSupprimer un modèle \NListe des modèles en cours \NListe des modèles locaux \NAfficher les informations sur le modèle \NTirer des modèles \NPousser des modèles \NGénérer une incorporation
I. Compléter la réponse
POST /api/generate
Génère une réponse à une invite donnée en utilisant le modèle spécifié. Il s'agit d'un point d'accès en continu, ce qui signifie qu'il y aura une série de réponses. L'objet de réponse final contiendra des statistiques et d'autres données relatives à la demande.
paramètres
model
(Obligatoire) Nom du modèleprompt
Conseil pour générer une réponsesuffix
Texte après la réponse du modèleimages
(Facultatif) une liste d'images encodées en base64 (pour les modèles multimodaux tels quellava
)
Paramètres avancés (facultatif) :
format
: renvoie le format de la réponse. La seule valeur actuellement acceptée estjson
options
: d'autres paramètres du modèle, tels quetemperature
,seed
et al. (et autres auteurs)system
Messages du systèmetemplate
Modèle d'invite à utiliser : Le modèle d'invite à utilisercontext
: : D'après l'examen précédent de/generate
Les paramètres contextuels renvoyés dans la demande peuvent être utilisés pour conserver une brève mémoire du dialogue avec l'utilisateur.stream
Si elle est réglée surfalse
La réponse sera renvoyée sous la forme d'un seul objet de réponse et non d'un flux d'objets.raw
Si elle est réglée surtrue
il n'y aura pas de formatage de l'invite. Si vous spécifiez un modèle complet d'invite lorsque vous demandez l'API, vous pouvez éventuellement utiliser l'optionraw
paramètreskeep_alive
Contrôle la durée pendant laquelle le modèle reste en mémoire après une demande (par défaut) :5m
)
Exemple de demande (streaming)
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?"
}'
Conseil
Si vous utilisez le curl
veuillez télécharger la commande curl pour WindowsPour ajouter des variables d'environnement, décompressez le fichier, puis trouvez le sous-fichier bin dans le répertoire où se trouve le fichier, et copiez l'adresse du fichier pour ajouter des variables d'environnement.
Utilisez la commande suivante dans une fenêtre de ligne de commande (pas PowerShell, attention) pour vérifier si elle a été ajoutée avec succès.
curl --help
Le message suivant s'affiche pour indiquer que l'ajout a réussi.

Conseil
Dans une fenêtre de ligne de commande Windows, utilisez la commande curl
Lorsque vous demandez des commandes, notez l'utilisation de guillemets doubles échappés. Des exemples de commandes sont énumérés ci-dessous.
curl http://localhost:11434/api/generate -d "{\"model\": \"llama3.1\", \"prompt\": \"为什么草是绿的\"}"
L'affichage suivant indique que la demande a abouti.

Exemple de réponse
Renvoie un flux d'objets JSON :
{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:08.184732629Z",
"response":"植物",
"done":false
}
La réponse finale dans le flux comprend également des données supplémentaires sur la génération :
- contexte : le code de dialogue utilisé pour cette réponse, qui peut être envoyé lors de la prochaine demande afin de conserver le dialogue en mémoire
- total_duration : temps passé à générer la réponse (en nanosecondes)
- load_duration : temps nécessaire pour charger le modèle (nanosecondes)
- prompt_eval_count : nombre de tokens dans l'invite
- prompt_eval_duration : durée de l'évaluation de l'invite (en nanosecondes)
- eval_count : nombre de jetons dans la réponse
- eval_duration : temps nécessaire pour générer la réponse (en nanosecondes)
- response : null si la réponse est en flux continu, sinon, ceci contiendra la réponse complète Pour calculer le taux de génération de réponses (nombre de jetons générés par seconde, jetons/s), c'est-à-dire
eval_count
/eval_duration
* 10^9.
Réponse finale :
{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:10.819603411Z",
"response":"",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":8655401792,
"load_duration":5924129727,
"prompt_eval_count":17,
"prompt_eval_duration":29196000,
"eval_count":118,
"eval_duration":2656329000
}
Jeu avancé
sortie non en continu
commandant en chef (militaire) stream
fixé à false
vous pouvez recevoir toutes les réponses en même temps.
Exemple de demande
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false
}'
Exemple de réponse
{
"model":"llama3.1",
"created_at":"2024-08-08T07:13:34.418567351Z",
"response":"答案:叶子含有大量的叶绿素。",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":2902435095,
"load_duration":2605831520,
"prompt_eval_count":17,
"prompt_eval_duration":29322000,
"eval_count":13,
"eval_duration":266499000
}
Mode JSON
(coll.) échouer (un étudiant) format
fixé à json
La sortie se fera au format JSON. Notez cependant que le champ prompt
Il est demandé au modèle de répondre au format JSON, faute de quoi il risque de générer un grand nombre d'espaces.
Exemple de demande
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?以JSON格式输出答案",
"format": "json",
"stream": false
}'
Exemple de réponse
{
"model":"llama3.1",
"created_at":"2024-08-08T07:21:24.950883454Z",
"response":"{\n \"颜色原因\": \"叶子中含有光合作用所需的叶绿素\",\n \"作用\": \"进行光合作用吸收太阳能\"\n}",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":3492279981,
"load_duration":2610591203,
"prompt_eval_count":22,
"prompt_eval_duration":28804000,
"eval_count":40,
"eval_duration":851206000
}
response
sera une chaîne de caractères contenant du JSON similaire à ce qui suit :
{
"颜色原因": "叶子中含有光合作用所需的叶绿素",
"作用": "进行光合作用吸收太阳能"
}
L'entrée contient des images
Pour ajouter un nouveau modèle à un modèle multimodal (par ex. llava
peut-être bakllava
Pour soumettre une image, veuillez fournir une version codée en base64 du fichier images
Liste :
Exemple de demande
curl http://localhost:11434/api/generate -d '{
"model": "llava",
"prompt":"描述这张图片",
"stream": false,
"images": ["iVBORw0KGgoAAAANSUhEUgAAAG0AAABmCAYAAADBPx+VAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAA3VSURBVHgB7Z27r0zdG8fX743i1bi1ikMoFMQloXRpKFFIqI7LH4BEQ+NWIkjQuSWCRIEoULk0gsK1kCBI0IhrQVT7tz/7zZo888yz1r7MnDl7z5xvsjkzs2fP3uu71nNfa7lkAsm7d++Sffv2JbNmzUqcc8m0adOSzZs3Z+/XES4ZckAWJEGWPiCxjsQNLWmQsWjRIpMseaxcuTKpG/7HP27I8P79e7dq1ars/yL4/v27S0ejqwv+cUOGEGGpKHR37tzJCEpHV9tnT58+dXXCJDdECBE2Ojrqjh071hpNECjx4cMHVycM1Uhbv359B2F79+51586daxN/+pyRkRFXKyRDAqxEp4yMlDDzXG1NPnnyJKkThoK0VFd1ELZu3TrzXKxKfW7dMBQ6bcuWLW2v0VlHjx41z717927ba22U9APcw7Nnz1oGEPeL3m3p2mTAYYnFmMOMXybPPXv2bNIPpFZr1NHn4HMw0KRBjg9NuRw95s8PEcz/6DZELQd/09C9QGq5RsmSRybqkwHGjh07OsJSsYYm3ijPpyHzoiacg35MLdDSIS/O1yM778jOTwYUkKNHWUzUWaOsylE00MyI0fcnOwIdjvtNdW/HZwNLGg+sR1kMepSNJXmIwxBZiG8tDTpEZzKg0GItNsosY8USkxDhD0Rinuiko2gfL/RbiD2LZAjU9zKQJj8RDR0vJBR1/Phx9+PHj9Z7REF4nTZkxzX4LCXHrV271qXkBAPGfP/atWvu/PnzHe4C97F48eIsRLZ9+3a3f/9+87dwP1JxaF7/3r17ba+5l4EcaVo0lj3SBq5kGTJSQmLWMjgYNei2GPT1MuMqGTDEFHzeQSP2wi/jGnkmPJ/nhccs44jvDAxpVcxnq0F6eT8h4ni/iIWpR5lPyA6ETkNXoSukvpJAD3AsXLiwpZs49+fPn5ke4j10TqYvegSfn0OnafC+Tv9ooA/JPkgQysqQNBzagXY55nO/oa1F7qvIPWkRL12WRpMWUvpVDYmxAPehxWSe8ZEXL20sadYIozfmNch4QJPAfeJgW3rNsnzphBKNJM2KKODo1rVOMRYik5ETy3ix4qWNI81qAAirizgMIc+yhTytx0JWZuNI03qsrgWlGtwjoS9XwgUhWGyhUaRZZQNNIEwCiXD16tXcAHUs79co0vSD8rrJCIW98pzvxpAWyyo3HYwqS0+H0BjStClcZJT5coMm6D2LOF8TolGJtK9fvyZpyiC5ePFi9nc/oJU4eiEP0jVoAnHa9wyJycITMP78+eMeP37sXrx44d6+fdt6f82aNdkx1pg9e3Zb5W+RSRE+n+VjksQWifvVaTKFhn5O8my63K8Qabdv33b379/PiAP//vuvW7BggZszZ072/+TJk91YgkafPn166zXB1rQHFvouAWHq9z3SEevSUerqCn2/dDCeta2jxYbr69evk4MHDyY7d+7MjhMnTiTPnz9Pfv/+nfQT2ggpO2dMF8cghuoM7Ygj5iWCqRlGFml0QC/ftGmTmzt3rmsaKDsgBSPh0/8yPeLLBihLkOKJc0jp8H8vUzcxIA1k6QJ/c78tWEyj5P3o4u9+jywNPdJi5rAH9x0KHcl4Hg570eQp3+vHXGyrmEeigzQsQsjavXt38ujRo44LQuDDhw+TW7duRS1HGgMxhNXHgflaNTOsHyKvHK5Ijo2jbFjJBQK9YwFd6RVMzfgRBmEfP37suBBm/p49e1qjEP2mwTViNRo0VJWH1deMXcNK08uUjVUu7s/zRaL+oLNxz1bpANco4npUgX4G2eFbpDFyQoQxojBCpEGSytmOH8qrH5Q9vuzD6ofQylkCUmh8DBAr+q8JCyVNtWQIidKQE9wNtLSQnS4jDSsxNHogzFuQBw4cyM61UKVsjfr3ooBkPSqqQHesUPWVtzi9/vQi1T+rJj7WiTz4Pt/l3LxUkr5P2VYZaZ4URpsE+st/dujQoaBBYokbrz/8TJNQYLSonrPS9kUaSkPeZyj1AWSj+d+VBoy1pIWVNed8P0Ll/ee5HdGRhrHhR5GGN0r4LGZBaj8oFDJitBTJzIZgFcmU0Y8ytWMZMzJOaXUSrUs5RxKnrxmbb5YXO9VGUhtpXldhEUogFr3IzIsvlpmdosVcGVGXFWp2oU9kLFL3dEkSz6NHEY1sjSRdIuDFWEhd8KxFqsRi1uM/nz9/zpxnwlESONdg6dKlbsaMGS4EHFHtjFIDHwKOo46l4TxSuxgDzi+rE2jg+BaFruOX4HXa0Nnf1lwAPufZeF8/r6zD97WK2qFnGjBxTw5qNGPxT+5T/r7/7RawFC3j4vTp09koCxkeHjqbHJqArmH5UrFKKksnxrK7FuRIs8STfBZv+luugXZ2pR/pP9Ois4z+TiMzUUkUjD0iEi1fzX8GmXyuxUBRcaUfykV0YZnlJGKQpOiGB76x5GeWkWWJc3mOrK6S7xdND+W5N6XyaRgtWJFe13GkaZnKOsYqGdOVVVbGupsyA/l7emTLHi7vwTdirNEt0qxnzAvBFcnQF16xh/TMpUuXHDowhlA9vQVraQhkudRdzOnK+04ZSP3DUhVSP61YsaLtd/ks7ZgtPcXqPqEafHkdqa84X6aCeL7YWlv6edGFHb+ZFICPlljHhg0bKuk0CSvVznWsotRu433alNdFrqG45ejoaPCaUkWERpLXjzFL2Rpllp7PJU2a/v7Ab8N05/9t27Z16KUqoFGsxnI9EosS2niSYg9SpU6B4JgTrvVW1flt1sT+0ADIJU2maXzcUTraGCRaL1Wp9rUMk16PMom8QhruxzvZIegJjFU7LLCePfS8uaQdPny4jTTL0dbee5mYokQsXTIWNY46kuMbnt8Kmec+LGWtOVIl9cT1rCB0V8WqkjAsRwta93TbwNYoGKsUSChN44lgBNCoHLHzquYKrU6qZ8lolCIN0Rh6cP0Q3U6I6IXILYOQI513hJaSKAorFpuHXJNfVlpRtmYBk1Su1obZr5dnKAO+L10Hrj3WZW+E3qh6IszE37F6EB+68mGpvKm4eb9bFrlzrok7fvr0Kfv727dvWRmdVTJHw0qiiCUSZ6wCK+7XL/AcsgNyL74DQQ730sv78Su7+t/A36MdY0sW5o40ahslXr58aZ5HtZB8GH64m9EmMZ7FpYw4T6QnrZfgenrhFxaSiSGXtPnz57e9TkNZLvTjeqhr734CNtrK41L40sUQckmj1lGKQ0rC37x544r8eNXRpnVE3ZZY7zXo8NomiO0ZUCj2uHz58rbXoZ6gc0uA+F6ZeKS/jhRDUq8MKrTho9fEkihMmhxtBI1DxKFY9XLpVcSkfoi8JGnToZO5sU5aiDQIW716ddt7ZLYtMQlhECdBGXZZMWldY5BHm5xgAroWj4C0hbYkSc/jBmggIrXJWlZM6pSETsEPGqZOndr2uuuR5rF169a2HoHPdurUKZM4CO1WTPqaDaAd+GFGKdIQkxAn9RuEWcTRyN2KSUgiSgF5aWzPTeA/lN5rZubMmR2bE4SIC4nJoltgAV/dVefZm72AtctUCJU2CMJ327hxY9t7EHbkyJFseq+EJSY16RPo3Dkq1kkr7+q0bNmyDuLQcZBEPYmHVdOBiJyIlrRDq41YPWfXOxUysi5fvtyaj+2BpcnsUV/oSoEMOk2CQGlr4ckhBwaetBhjCwH0ZHtJROPJkyc7UjcYLDjmrH7ADTEBXFfOYmB0k9oYBOjJ8b4aOYSe7QkKcYhFlq3QYLQhSidNmtS2RATwy8YOM3EQJsUjKiaWZ+vZToUQgzhkHXudb/PW5YMHD9yZM2faPsMwoc7RciYJXbGuBqJ1UIGKKLv915jsvgtJxCZDubdXr165mzdvtr1Hz5LONA8jrUwKPqsmVesKa49S3Q4WxmRPUEYdTjgiUcfUwLx589ySJUva3oMkP6IYddq6HMS4o55xBJBUeRjzfa4Zdeg56QZ43LhxoyPo7Lf1kNt7oO8wWAbNwaYjIv5lhyS7kRf96dvm5Jah8vfvX3flyhX35cuX6HfzFHOToS1H4BenCaHvO8pr8iDuwoUL7tevX+b5ZdbBair0xkFIlFDlW4ZknEClsp/TzXyAKVOmmHWFVSbDNw1l1+4f90U6IY/q4V27dpnE9bJ+v87QEydjqx/UamVVPRG+mwkNTYN+9tjkwzEx+atCm/X9WvWtDtAb68Wy9LXa1UmvCDDIpPkyOQ5ZwSzJ4jMrvFcr0rSjOUh+GcT4LSg5ugkW1Io0/SCDQBojh0hPlaJdah+tkVYrnTZowP8iq1F1TgMBBauufyB33x1v+NWFYmT5KmppgHC+NkAgbmRkpD3yn9QIseXymoTQFGQmIOKTxiZIWpvAatenVqRVXf2nTrAWMsPnKrMZHz6bJq5jvce6QK8J1cQNgKxlJapMPdZSR64/UivS9NztpkVEdKcrs5alhhWP9NeqlfWopzhZScI6QxseegZRGeg5a8C3Re1Mfl1ScP36ddcUaMuv24iOJtz7sbUjTS4qBvKmstYJoUauiuD3k5qhyr7QdUHMeCgLa1Ear9NquemdXgmum4fvJ6w1lqsuDhNrg1qSpleJK7K3TF0Q2jSd94uSZ60kK1e3qyVpQK6PVWXp2/FC3mp6jBhKKOiY2h3gtUV64TWM6wDETRPLDfSakXmH3w8g9Jlug8ZtTt4kVF0kLUYYmCCtD/DrQ5YhMGbA9L3ucdjh0y8kOHW5gU/VEEmJTcL4Pz/f7mgoAbYkAAAAAElFTkSuQmCC"
]
}'
Exemple de réponse
{
"model":"llava",
"created_at":"2024-08-08T07:33:55.481713465Z",
"response":" The image shows a cartoon of an animated character that resembles a cute pig with large eyes and a smiling face. It appears to be in motion, indicated by the lines extending from its arms and tail, giving it a dynamic feel as if it is waving or dancing. The style of the image is playful and simplistic, typical of line art or stickers. The character's design has been stylized with exaggerated features such as large ears and a smiling expression, which adds to its charm. ",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":2960501550,
"load_duration":4566012,
"prompt_eval_count":1,
"prompt_eval_duration":758437000,
"eval_count":108,
"eval_duration":2148818000
}
une production reproductible
commandant en chef (militaire) seed
Régler sur une valeur fixe pour obtenir un résultat reproductible :
Exemple de demande
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false,
"options": {
"seed": 1001
}
}'
Exemple de réponse
{
"model":"llama3.1",
"created_at":"2024-08-08T07:42:28.397780058Z",
"response":"答案:因为叶子中含有大量的氯离子。",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":404791556,
"load_duration":18317351,
"prompt_eval_count":17,
"prompt_eval_duration":22453000,
"eval_count":16,
"eval_duration":321267000}
II. l'achèvement du dialogue
POST /api/chat
Génère le message suivant dans le chat en utilisant le modèle spécifié. Il s'agit également d'un point d'accès en continu, ce qui signifie qu'il y aura une série de réponses. Si le "stream"
fixé à false
il est alors possible de désactiver la diffusion en continu. L'objet de réponse final comprendra les statistiques demandées et des données supplémentaires.
paramètres
model
(Obligatoire) Nom du modèlemessages
Les messages du chat, qui peuvent être utilisés pour garder un souvenir du chat.tools
Le modèle soutient l'utilisation d'outils. Il est nécessaire que lestream
fixé àfalse
message
L'objet comporte les champs suivants :
role
Le rôle du message, qui peut êtresystem
,user
,assistant
peut-êtretool
content
Contenu du messageimages
(facultatif) : une liste d'images à inclure dans le message (pour les messages tels quellava
(Modèles multimodaux tels que ceux-ci)tool_calls
(Facultatif) : liste des outils que le modèle veut utiliser
Paramètres avancés (facultatif) :
format
: renvoie le format de la réponse. La seule valeur actuellement acceptée estjson
options
D'autres paramètres du modèle, tels quetemperature
,seed
et al. (et autres auteurs)stream
Si pourfalse
La réponse sera renvoyée sous la forme d'un seul objet de réponse et non d'un flux d'objets.keep_alive
Contrôle la durée pendant laquelle le modèle reste chargé en mémoire après une demande (par défaut) :5m
)
Exemple de demande (streaming)
curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿的?"
}
]
}'
Exemple de réponse
Renvoie un flux d'objets JSON :
{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:36.933701041Z",
"message":{
"role":"assistant",
"content":"因为"
},
"done":false
}
Réponse finale :
{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:37.187621765Z",
"message":{
"role":"assistant",
"content":""
},
"done_reason":"stop",
"done":true,
"total_duration":5730533217,
"load_duration":5370535786,
"prompt_eval_count":17,
"prompt_eval_duration":29621000,
"eval_count":13,
"eval_duration":273810000
}
Jeu avancé
Paramètres pour la sortie non-streaming, le mode JSON, l'entrée multimodale, la sortie reproductible et l'utilisation de l'outil d'analyse des données. 回答API
de cohérence.
Avec l'histoire
Envoyer des messages de chat avec l'historique du dialogue. Plusieurs séries de dialogues ou de chaînes de pensée peuvent être lancées en utilisant la même méthode.
Exemple de demande
curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿色的?"
},
{
"role": "assistant",
"content": "因为草里面含有叶绿素。"
},
{
"role": "user",
"content": "为什么叶绿素让草看起来是绿色的?"
}
],
"stream": false
}'
Exemple de réponse
{
"model":"llama3.1",
"created_at":"2024-08-08T07:53:28.849517802Z",
"message":{
"role":"assistant",
"content":"这是一个更复杂的问题!\n\n叶绿素是一种称为黄素的色素,这些色素可以吸收光能。在日光下,绿色草叶中的叶绿素会吸收蓝光和红光,但反射出黄色和绿色的光,所以我们看到草看起来是绿色的。\n\n简单来说,叶绿素让草看起来是绿色的,因为它反射了我们的眼睛可以看到的绿光,而不反射我们看到的其他颜色。"
},
"done_reason":"stop",
"done":true,
"total_duration":5065572138,
"load_duration":2613559070,
"prompt_eval_count":48,
"prompt_eval_duration":37825000,
"eval_count":106,
"eval_duration":2266694000}
III. création de modèles
POST /api/create
général recommandé modelfile
au contenu du Modelfile, plutôt que de simplement définir le paramètre path
Création d'un modèle à distance. La création d'un modèle à distance doit également créer explicitement tous les blobs de fichiers, les champs (tels que le champ FROM
répondre en chantant ADAPTER
) et lui attribuer le chemin indiqué dans la réponse.
paramètres
name
Nom du modèle à créermodelfile
(facultatif) : contenu du fichier modèlestream
(facultatif) : si pourfalse
La réponse sera renvoyée sous la forme d'un seul objet de réponse, et non d'un flux d'objets.path
(Facultatif) : Chemin d'accès au fichier modèle.
Exemple de demande
curl http://localhost:11434/api/create -d '{
"name": "mario",
"modelfile": "FROM llama3\nSYSTEM You are mario from Super Mario Bros."
}'
Exemple de réponse
Une chaîne d'objets JSON. Remarquez que l'objet JSON final indique "status": "success"
Invité à créer avec succès.
{"status":"reading model metadata"}
{"status":"creating system layer"}
{"status":"using already created layer sha256:22f7f8ef5f4c791c1b03d7eb414399294764d7cc82c7e94aa81a1feb80a983a2"}
{"status":"using already created layer sha256:8c17c2ebb0ea011be9981cc3922db8ca8fa61e828c5d3f44cb6ae342bf80460b"}
{"status":"using already created layer sha256:7c23fb36d80141c4ab8cdbb61ee4790102ebd2bf7aeff414453177d4f2110e5d"}
{"status":"using already created layer sha256:2e0493f67d0c8c9c68a8aeacdf6a38a2151cb3c4c1d42accf296e19810527988"}
{"status":"using already created layer sha256:2759286baa875dc22de5394b4a925701b1896a7e3f8e53275c36f75a877a82c9"}
{"status":"writing layer sha256:df30045fe90f0d750db82a058109cecd6d4de9c90a3d75b19c09e5f64580bb42"}
{"status":"writing layer sha256:f18a68eb09bf925bb1b669490407c1b1251c5db98dc4d3d81f3088498ea55690"}
{"status":"writing manifest"}
{"status":"success"}
Vérifier si le Blob existe
HEAD /api/blobs/:digest
Assurez-vous que le fichier blob pour le champ FROM ou ADAPTER existe sur le serveur. Il s'agit de vérifier votre serveur Ollama et non pas Ollama.ai.
Paramètres de la demande
digest
: condensé SHA256 du blob
Exemple de demande
curl -I http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2
Exemple de réponse
Renvoie "200 OK" si le blob existe, ou "404 Not Found" s'il n'existe pas.
Création d'un Blob
POST /api/blobs/:digest
Crée un blob à partir d'un fichier sur le serveur. renvoie le chemin d'accès au fichier du serveur.
Paramètres de la demande
digest
Résumé SHA256 du document : Résumé SHA256 attendu du document
Exemple de demande
curl -T model.bin -X POST http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2
Exemple de réponse
Retourne 201 Created si le blob a été créé avec succès, ou 400 Bad Request si le digest utilisé n'est pas celui attendu.
IV. modèles de réplication
POST /api/copy
Dupliquer un modèle, en utilisant un autre nom pour dupliquer un modèle existant.
Exemple de demande
curl http://localhost:11434/api/copy -d '{
"source": "llama3.1",
"destination": "llama3-backup"
}'
Exemple de réponse
Renvoie "200 OK" en cas de succès, ou "404 Not Found" si le modèle source n'existe pas.
V. Suppression de modèles
DELETE /api/delete
Supprimer le modèle et ses données.
paramètres
name
Nom du modèle à supprimer
Exemple de demande
[](https://github.com/datawhalechina/handy-ollama/blob/main/docs/C4/1.%20Ollama%20API%20%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.md#%E7%A4%BA%E4%BE%8B%E8%AF%B7%E6%B1%82-4)curl -X DELETE http://localhost:11434/api/delete -d '{
"name": "llama3.1"
}'
Exemple de réponse
Renvoie "200 OK" en cas de succès, ou "404 Not Found" si le modèle à supprimer n'existe pas.
VI. liste des modèles opérationnels
GET /api/ps
Liste les modèles actuellement chargés en mémoire.
Exemple de demande
curl http://localhost:11434/api/ps
Exemple de réponse
{
"models":[
{
"name":"llama3.1:latest",
"model":"llama3.1:latest",
"size":6654289920,
"digest":"75382d0899dfaaa6ce331cf680b72bd6812c7f05e5158c5f2f43c6383e21d734",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
},
"expires_at":"2024-08-08T14:06:52.883023476+08:00",
"size_vram":6654289920
}
]
}
VII. liste des modèles locaux
GET /api/tags
Liste des modèles disponibles localement.
Exemple de demande
curl http://localhost:11434/api/tags
Exemple de réponse
{
"models":[
{
"name":"llama3.1:latest",
"model":"llama3.1:latest",
"modified_at":"2024-08-07T17:54:22.533937636+08:00",
"size":4661230977,
"digest":"75382d0899dfaaa6ce331cf680b72bd6812c7f05e5158c5f2f43c6383e21d734",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
}
}
]
}
VIII. affichage des informations sur le modèle
POST /api/show
Affiche des informations sur le modèle, y compris les détails, le fichier de modèle, les modèles, les paramètres, les licences, les conseils du système.
paramètres
name
Nom du modèle à afficherverbose
(Facultatif) : Si la valeur est fixée àtrue
puis renvoie les données complètes pour le champ Réponse détaillée
Exemple de demande
curl http://localhost:11434/api/show -d '{
"name": "llama3.1"
}'
Exemple de réponse
{
"license":"...",
"modelfile":"...",
"parameters":"...",
"template":"...",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
},
"model_info":{
"general.architecture":"llama",
"general.basename":"Meta-Llama-3.1",
"general.file_type":2,
"general.finetune":"Instruct",
"general.languages":["en","de","fr","it","pt","hi","es","th"],
"general.license":"llama3.1",
"general.parameter_count":8030261312,
"general.quantization_version":2,
"general.size_label":"8B",
"general.tags":["facebook","meta","pytorch","llama","llama-3","text-generation"],
"general.type":"model",
"llama.attention.head_count":32,
"llama.attention.head_count_kv":8,
"llama.attention.layer_norm_rms_epsilon":0.00001,
"llama.block_count":32,
"llama.context_length":131072,
"llama.embedding_length":4096,
"llama.feed_forward_length":14336,
"llama.rope.dimension_count":128,
"llama.rope.freq_base":500000,
"llama.vocab_size":128256,
"tokenizer.ggml.bos_token_id":128000,
"tokenizer.ggml.eos_token_id":128009,
"tokenizer.ggml.merges":null,
"tokenizer.ggml.model":"gpt2",
"tokenizer.ggml.pre":"llama-bpe",
"tokenizer.ggml.token_type":null,
"tokenizer.ggml.tokens":null
},
"modified_at":"2024-08-07T17:54:22.533937636+08:00"
}
IX. modèles de traction
POST /api/pull
à travers (une brèche) ollama
Modèle de téléchargement de la bibliothèque. Une opération d'extraction interrompue poursuivra le téléchargement à partir du point d'arrêt, et plusieurs appels partageront la même progression du téléchargement.
paramètres
name
Nom du modèle à extraireinsecure
(Facultatif) : autorise les connexions non sûres aux bibliothèques. Il est recommandé d'utiliser cette option uniquement lorsque vous utilisez vos propres bibliothèques pendant le développement.stream
(facultatif) : si pourfalse
La réponse sera renvoyée sous la forme d'un seul objet de réponse, et non d'un flux d'objets.
Exemple de demande
curl http://localhost:11434/api/pull -d '{
"name": "llama3.1"
}'
Exemple de réponse
au cas où stream
Non spécifié ou fixé à true
une chaîne d'objets JSON est renvoyée :
Le premier objet est la liste :
{
"status": "pulling manifest"
}
Il y a ensuite une série de réponses au téléchargement. Tant que le téléchargement n'est pas terminé, il peut ne pas contenir les éléments suivants completed
clé. Le nombre de fichiers à télécharger dépend du nombre de couches spécifiées dans la liste.
{
"status": "downloading digestname",
"digest": "digestname",
"total": 2142590208,
"completed": 241970
}
La réponse finale après le téléchargement de tous les fichiers est la suivante :
{
"status": "verifying sha256 digest"
}
{
"status": "writing manifest"
}
{
"status": "removing any unused layers"
}
{
"status": "success"
}
au cas où stream
est fixé à false, la réponse est un objet JSON unique :
{
"status": "success"
}
X. Modèle de poussée
POST /api/push
Téléchargez le modèle dans le référentiel de modèles. Vous devez d'abord enregistrer ollama.ai et ajouter une clé publique.
paramètres
name
le nom du modèle à pousser, dans le format suivant<namespace>/<model>:<tag>
insecure
(Facultatif) : Autoriser les connexions non sécurisées aux bibliothèques. N'utilisez cette option que lorsque vous utilisez vos propres bibliothèques au cours du développement.stream
(facultatif) : si pourfalse
La réponse sera renvoyée sous la forme d'un seul objet de réponse, et non d'un flux d'objets.
Exemple de demande
curl http://localhost:11434/api/push -d '{
"name": "mattw/pygmalion:latest"
}'
Exemple de réponse
au cas où stream
Non spécifié ou fixé à true
une chaîne d'objets JSON est renvoyée :
{ "status": "retrieving manifest" }
Puis une série de réponses par téléchargement :
{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}
Enfin, lorsque le téléchargement est terminé :
{"status":"pushing manifest"}
{"status":"success"}
au cas où stream
fixé à false
Si la réponse est un objet JSON unique, alors la réponse est un objet JSON unique :
{ "status": "success" }
XI. générer des embeds
POST /api/embed
Génération d'encastrements à partir de modèles.
paramètres
model
Nom du modèle à partir duquel l'intégration doit être généréeinput
Pour générer un texte intégré ou une liste de textes
Paramètres avancés :
truncate
Les données de base sont les suivantes : tronquer la fin de chaque entrée pour qu'elle corresponde à la longueur du contexte. Ce n'est pas un problème si c'est le cas pourfalse
et dépasse la longueur du contexte, une erreur est renvoyée. La valeur par défaut esttrue
options
D'autres paramètres du modèle, tels quetemperature
,seed
et al. (et autres auteurs)keep_alive
Contrôle la durée pendant laquelle le modèle reste chargé en mémoire après une demande (par défaut) :5m
)
Exemple de demande
curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": "为什么草是绿的?"
}'
Exemple de réponse
{
"model":"llama3.1",
"embeddings":[[
-0.008059342,-0.013182715,0.019781841,0.012018124,-0.024847334,
-0.0031902494,-0.02714767,0.015282277,0.060032737,...
]],
"total_duration":3041671009,
"load_duration":2864335471,
"prompt_eval_count":7}
Exemple de demande (entrées multiples)
curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": ["为什么草是绿的?","为什么天是蓝的?"]
}'
Exemple de réponse
{
"model":"llama3.1",
"embeddings":[[
-0.008471201,-0.013031566,0.019300476,0.011618419,-0.025197424,
-0.0024164673,-0.02669075,0.015766116,0.059984162,...
],[
-0.012765694,-0.012822924,0.015915949,0.006415892,-0.02327763,
0.004859615,-0.017922137,0.019488193,0.05638235,...
]],
"total_duration":195481419,
"load_duration":1318886,
"prompt_eval_count":14
}
traitement des erreurs
L'API Ollama renvoie les codes d'erreur et les messages appropriés lorsqu'une erreur se produit. Les erreurs les plus courantes sont les suivantes :
- 400 Bad Request : erreur de format de la demande.
- 404 Not Found : La ressource demandée n'existe pas.
- 500 Internal Server Error : Erreur de serveur interne.
© déclaration de droits d'auteur
L'article est protégé par le droit d'auteur et ne doit pas être reproduit sans autorisation.
Articles connexes
Pas de commentaires...