Guide de l'utilisateur de l'API Ollama

Trae

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èle
  • promptConseil pour générer une réponse
  • suffixTexte après la réponse du modèle
  • images(Facultatif) une liste d'images encodées en base64 (pour les modèles multimodaux tels que llava )

Paramètres avancés (facultatif) :

  • format: renvoie le format de la réponse. La seule valeur actuellement acceptée est json
  • options: d'autres paramètres du modèle, tels que temperature,seed et al. (et autres auteurs)
  • systemMessages du système
  • templateModèle d'invite à utiliser : Le modèle d'invite à utiliser
  • context: : 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.
  • streamSi elle est réglée sur false La réponse sera renvoyée sous la forme d'un seul objet de réponse et non d'un flux d'objets.
  • rawSi elle est réglée sur true 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'option raw paramètres
  • keep_aliveContrô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.

Ollama API 使用指南

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.

Ollama API 使用指南

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-à-direeval_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é à falsevous 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 bakllavaPour 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": ["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"
]
}'

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é à falseil 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èle
  • messagesLes messages du chat, qui peuvent être utilisés pour garder un souvenir du chat.
  • toolsLe modèle soutient l'utilisation d'outils. Il est nécessaire que le stream fixé à false

message L'objet comporte les champs suivants :

  • roleLe rôle du message, qui peut être system,user,assistant peut-être tool
  • contentContenu du message
  • images(facultatif) : une liste d'images à inclure dans le message (pour les messages tels que llava (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 est json
  • optionsD'autres paramètres du modèle, tels que temperature,seed et al. (et autres auteurs)
  • streamSi pour falseLa réponse sera renvoyée sous la forme d'un seul objet de réponse et non d'un flux d'objets.
  • keep_aliveContrô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 pathCré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

  • nameNom du modèle à créer
  • modelfile(facultatif) : contenu du fichier modèle
  • stream(facultatif) : si pour falseLa 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

  • digestRé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

  • nameNom 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

  • nameNom du modèle à afficher
  • verbose(Facultatif) : Si la valeur est fixée à truepuis 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

  • nameNom du modèle à extraire
  • insecure(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 pour falseLa 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é à trueune 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

  • namele 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 pour falseLa 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é à trueune 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é à falseSi 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

  • modelNom du modèle à partir duquel l'intégration doit être générée
  • inputPour générer un texte intégré ou une liste de textes

Paramètres avancés :

  • truncateLes 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 pour false et dépasse la longueur du contexte, une erreur est renvoyée. La valeur par défaut est true
  • optionsD'autres paramètres du modèle, tels que temperature,seed et al. (et autres auteurs)
  • keep_aliveContrô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
AiPPT

Articles connexes

Pas de commentaires

aucun
Pas de commentaires...