AI Personal Learning
und praktische Anleitung
Sitzsack Marscode1

Ollama API Benutzerhandbuch

kurz

Ollama Eine leistungsstarke REST-API ermöglicht Entwicklern die einfache Interaktion mit großen Sprachmodellen. Über die Ollama-API können Benutzer Anfragen senden und vom Modell generierte Antworten erhalten, die für Aufgaben wie die Verarbeitung natürlicher Sprache, Texterzeugung usw. verwendet werden. In diesem Beitrag werden die grundlegenden Operationen der Generierung von Ergänzungen und der Dialoggenerierung im Detail beschrieben und allgemeine Operationen wie das Erstellen von Modellen, das Kopieren von Modellen und das Löschen von Modellen erläutert.

 

Anfangs- oder Endpunkt (in Geschichten usw.)

Antwortvervollständigung \ Dialogvervollständigung \ Modell erstellen \ Modell kopieren \ Modell löschen \ Liste laufender Modelle \ Liste lokaler Modelle \ Modellinformationen anzeigen \ Modelle ziehen \ Modelle schieben \ Einbettung erzeugen


 

I. Vervollständigung der Antwort

POST /api/generate

Erzeugt eine Antwort auf eine bestimmte Aufforderung unter Verwendung des angegebenen Modells. Dies ist ein Streaming-Endpunkt, d. h. es wird eine Reihe von Antworten geben. Das endgültige Antwortobjekt enthält Statistiken und andere Daten aus der Anfrage.

Parameter

  • model: (Erforderlich) Modellname
  • prompt: Tipp, um eine Antwort zu erzeugen
  • suffixText nach Musterantwort
  • images(Optional) eine Liste von base64-kodierten Bildern (für multimodale Modelle wie llava )

Erweiterte Parameter (optional):

  • formatFormat der Antwort: Gibt das Format der Antwort zurück. Der einzige derzeit akzeptierte Wert ist json
  • options:: Andere Modellparameter, wie z.B. temperatureundseed et al. (und andere Autoren)
  • system: Systemnachrichten
  • templateDie zu verwendende Prompt-Vorlage
  • context:: Aus der vorherigen Rezension von /generate Die in der Anfrage zurückgegebenen kontextbezogenen Parameter können verwendet werden, um einen kurzen Dialogspeicher der
  • stream: Bei Einstellung auf false Die Antwort wird als ein einziges Antwortobjekt und nicht als ein Strom von Objekten zurückgegeben.
  • raw: Bei Einstellung auf true wird keine Formatierung der Eingabeaufforderung vorgenommen. Wenn Sie bei der Anforderung der API eine vollständige Vorlage für die Eingabeaufforderung angeben, können Sie optional die Option raw Parameter
  • keep_aliveLegt fest, wie lange das Modell nach einer Anfrage im Speicher bleibt (Standard:5m)

Beispielanforderung (Streaming)

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?"
}'

Tipp

Wenn Sie die curl Befehl, bitte herunterladen curl für WindowsUm Umgebungsvariablen hinzuzufügen, entpacken Sie die Datei, suchen dann die Unterdatei bin in dem Verzeichnis, in dem sich die Datei befindet, und kopieren die Adresse der Datei, um Umgebungsvariablen hinzuzufügen.

Verwenden Sie den folgenden Befehl in einem Befehlszeilenfenster (nicht PowerShell, wohlgemerkt), um zu überprüfen, ob er erfolgreich hinzugefügt wurde.

curl --help

Die erfolgreiche Hinzufügung wird durch folgende Anzeige bestätigt.

Ollama API Benutzerhandbuch-1

Tipp

Verwenden Sie in einem Windows-Befehlszeilenfenster den Befehl curl Achten Sie bei der Abfrage von Befehlen auf die Verwendung von Anführungszeichen. Beispielbefehle sind unten aufgeführt.

curl http://localhost:11434/api/generate -d "{\"model\": \"llama3.1\", \"prompt\": \"为什么草是绿的\"}"

Die folgende Anzeige zeigt an, dass die Anfrage erfolgreich war.

Ollama API Benutzerhandbuch-2

Beispiel Antwort

Gibt einen Strom von JSON-Objekten zurück:

{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:08.184732629Z",
"response":"植物",
"done":false
}

Die endgültige Antwort im Stream enthält auch zusätzliche Daten über die Erzeugung:

  • Kontext: der für diese Antwort verwendete Dialogcode, der bei der nächsten Anfrage gesendet werden kann, damit der Dialog im Speicher bleibt
  • total_duration: Zeit für die Erzeugung der Antwort (in Nanosekunden)
  • load_duration: Zeit, die zum Laden des Modells benötigt wird (Nanosekunden)
  • prompt_eval_count: Anzahl der Token im Prompt
  • prompt_eval_duration: Zeit für die Auswertung des Prompts (in Nanosekunden)
  • eval_count: Anzahl der Token in der Antwort
  • eval_duration: Zeit für die Erzeugung der Antwort (in Nanosekunden)
  • response: null, wenn die Antwort im Streaming-Verfahren erfolgt, andernfalls enthält sie die vollständige Antwort Zur Berechnung der Antwortgenerierungsrate (Anzahl der pro Sekunde generierten Token, Token/s), d. h.eval_count / eval_duration * 10^9.

Endgültige Antwort:

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

Fortgeschrittenes Spiel

Nicht-Streaming-Ausgang

Oberbefehlshaber (Militär) stream eingestellt auf falsekönnen Sie alle Antworten auf einmal erhalten.

Beispiel-Anfrage

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false
}'

Beispiel Antwort

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

JSON-Modus

(coll.) durchfallen (ein Schüler) format eingestellt auf json Die Ausgabe erfolgt im JSON-Format. Beachten Sie jedoch, dass die prompt Das Modell wird angewiesen, im JSON-Format zu antworten, da es sonst eine große Anzahl von Leerzeichen erzeugen kann.

Beispiel-Anfrage

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?以JSON格式输出答案",
"format": "json",
"stream": false
}'

Beispiel Antwort

{
"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 Wert ist eine Zeichenkette, die JSON ähnlich wie die folgende enthält:

{
"颜色原因": "叶子中含有光合作用所需的叶绿素",
"作用": "进行光合作用吸收太阳能"
}

Die Eingabe enthält Bilder

Um ein neues Modell zu einem multimodalen Modell hinzuzufügen (z. B. llava vielleicht bakllavaUm ein Bild einzureichen, geben Sie bitte eine base64-kodierte Version der images Liste:

Beispiel-Anfrage

curl http://localhost:11434/api/generate -d '{
"model": "llava",
"prompt":"描述这张图片",
"stream": false,
"images": ["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"
]
}'

Beispiel Antwort

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

reproduzierbarer Output

Oberbefehlshaber (Militär) seed Auf einen festen Wert einstellen, um ein reproduzierbares Ergebnis zu erhalten:

Beispiel-Anfrage

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false,
"options": {
"seed": 1001
}
}'

Beispiel Antwort

{
"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. der Abschluss des Dialogs

POST /api/chat

Erzeugt die nächste Nachricht im Chat unter Verwendung des angegebenen Modells. Dies ist ebenfalls ein Streaming-Endpunkt, d. h. es wird eine Reihe von Antworten geben. Wenn die "stream" eingestellt auf falsedann kann das Streaming deaktiviert werden. Das endgültige Antwortobjekt enthält die angeforderten Statistiken und zusätzliche Daten.

Parameter

  • model: (Erforderlich) Modellname
  • messagesChat-Nachrichten, die als Erinnerung an den Chat verwendet werden können
  • toolsDas Modell unterstützt die Verwendung von Werkzeugen. Es ist erforderlich, dass die stream eingestellt auf false

message Das Objekt hat die folgenden Felder:

  • roleDie Rolle der Nachricht, die sein kann systemunduserundassistant vielleicht tool
  • contentInhalt der Nachricht
  • images(optional): eine Liste von Bildern, die in der Nachricht enthalten sein sollen (für Nachrichten wie llava (Multimodale Modelle wie diese)
  • tool_calls(fakultativ): Liste der Werkzeuge, die das Modell verwenden möchte

Erweiterte Parameter (optional):

  • formatFormat der Antwort: Gibt das Format der Antwort zurück. Der einzige derzeit akzeptierte Wert ist json
  • optionsAndere Modellparameter wie z.B. temperatureundseed et al. (und andere Autoren)
  • stream: Wenn für falseDie Antwort wird als ein einziges Antwortobjekt und nicht als ein Strom von Objekten zurückgegeben.
  • keep_aliveLegt fest, wie lange das Modell nach einer Anfrage im Speicher geladen bleibt (Standard:5m)

Beispielanforderung (Streaming)

curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿的?"
}
]
}'

Beispiel Antwort

Gibt einen Strom von JSON-Objekten zurück:

{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:36.933701041Z",
"message":{
"role":"assistant",
"content":"因为"
},
"done":false
}

Endgültige Antwort:

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

Fortgeschrittenes Spiel

Parametereinstellungen für Non-Streaming-Ausgabe, JSON-Modus, multimodale Eingabe, reproduzierbare Ausgabe und 回答API der Konsistenz.

Mit Geschichte

Senden Sie Chat-Nachrichten mit Dialogverlauf. Mehrere Dialogrunden oder Gedankenkettenaufforderungen können mit derselben Methode gestartet werden.

Beispiel-Anfrage

curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿色的?"
},
{
"role": "assistant",
"content": "因为草里面含有叶绿素。"
},
{
"role": "user",
"content": "为什么叶绿素让草看起来是绿色的?"
}
],
"stream": false
}'

Beispiel Antwort

{
"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. die Erstellung von Modellen

POST /api/create

allgemein empfohlen modelfile auf den Inhalt der Modeldatei gesetzt, anstatt nur die pathEntfernte Modellerstellung. Bei der entfernten Modellerstellung müssen auch alle Dateiblobs, Felder (wie z. B. die FROM im Gesang antworten ADAPTER) und setzen Sie den Wert auf den in der Antwort angegebenen Pfad.

Parameter

  • nameName des zu erstellenden Modells
  • modelfile(optional): Inhalt der Modeldatei
  • stream(fakultativ): wenn für falseDie Antwort wird als ein einziges Antwortobjekt zurückgegeben, nicht als ein Strom von Objekten.
  • path(Optional): Pfad zur Modeldatei.

Beispiel-Anfrage

curl http://localhost:11434/api/create -d '{
"name": "mario",
"modelfile": "FROM llama3\nSYSTEM You are mario from Super Mario Bros."
}'

Beispiel Antwort

Eine Kette von JSON-Objekten. Beachten Sie, dass das letzte JSON-Objekt "status": "success"Aufgefordert, erfolgreich zu erstellen.

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

Prüfen, ob der Blob existiert

HEAD /api/blobs/:digest

Stellen Sie sicher, dass der Dateiblob für das FROM- oder ADAPTER-Feld auf dem Server existiert. Damit wird Ihr Ollama-Server und nicht Ollama.ai überprüft.

Parameter der Anfrage

  • digestSHA256 Digest des Blobs

Beispiel-Anfrage

curl -I http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2

Beispiel Antwort

Gibt "200 OK" zurück, wenn der Blob existiert, oder "404 Not Found", wenn er nicht existiert.

Einen Blob erstellen

POST /api/blobs/:digest

Erzeugt einen Blob aus einer Datei auf dem Server. Gibt den Dateipfad des Servers zurück.

Parameter der Anfrage

  • digestErwartete SHA256-Zusammenfassung des Dokuments

Beispiel-Anfrage

curl -T model.bin -X POST http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2

Beispiel Antwort

Gibt 201 Created zurück, wenn der Blob erfolgreich erstellt wurde, oder 400 Bad Request, wenn der verwendete Digest nicht wie erwartet war.

 

IV. Replikationsmodelle

POST /api/copy

Duplizieren Sie ein Modell, indem Sie einen anderen Namen verwenden, um ein bestehendes Modell zu duplizieren.

Beispiel-Anfrage

curl http://localhost:11434/api/copy -d '{
"source": "llama3.1",
"destination": "llama3-backup"
}'

Beispiel Antwort

Gibt bei Erfolg "200 OK" zurück, oder "404 Not Found", wenn das Quellmodell nicht existiert.

 

V. Löschung von Modellen

DELETE /api/delete

Löschen Sie das Modell und seine Daten.

Parameter

  • nameName des zu löschenden Modells

Beispiel-Anfrage

[](https://github.com/datawhalechina/handy-ollama/blob/main/docs/C4/1.1 TP3T20OllamaAPI. md#-4)

curl -X DELETE http://localhost:11434/api/delete -d '{
"name": "llama3.1"
}'

Beispiel Antwort

Gibt bei Erfolg "200 OK" zurück oder "404 Not Found", wenn das zu löschende Modell nicht existiert.

 

VI. Auflistung der Betriebsmodelle

GET /api/ps

Listet die aktuell in den Speicher geladenen Modelle auf.

Beispiel-Anfrage

curl http://localhost:11434/api/ps

Beispiel Antwort

{
"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. die Auflistung der lokalen Modelle

GET /api/tags

Listet die lokal verfügbaren Modelle auf.

Beispiel-Anfrage

curl http://localhost:11434/api/tags

Beispiel Antwort

{
"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. die Anzeige von Modellinformationen

POST /api/show

Zeigt Informationen über das Modell an, einschließlich Details, Modelldatei, Vorlagen, Parameter, Lizenzen und Systemhinweise.

Parameter

  • nameName des anzuzeigenden Modells
  • verbose(Optional): Bei Einstellung auf trueund gibt dann die vollständigen Daten für das Feld Detaillierte Antwort zurück

Beispiel-Anfrage

curl http://localhost:11434/api/show -d '{
"name": "llama3.1"
}'

Beispiel Antwort

{
"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. ziehende Modelle

POST /api/pull

durch (eine Lücke) ollama Bibliotheks-Download-Modell. Bei einem unterbrochenen Pull-Vorgang wird der Download vom Haltepunkt aus fortgesetzt, und mehrere Aufrufe teilen sich denselben Download-Fortschritt.

Parameter

  • nameName des zu ziehenden Modells
  • insecure(Optional): erlaubt unsichere Verbindungen zu Bibliotheken. Es wird empfohlen, diese Option nur zu verwenden, wenn Sie während der Entwicklung auf Ihre eigenen Bibliotheken zurückgreifen.
  • stream(fakultativ): wenn für falseDie Antwort wird als ein einziges Antwortobjekt zurückgegeben, nicht als ein Strom von Objekten.

Beispiel-Anfrage

curl http://localhost:11434/api/pull -d '{
"name": "llama3.1"
}'

Beispiel Antwort

für den Fall, dass stream Nicht angegeben oder eingestellt auf truewird eine Kette von JSON-Objekten zurückgegeben:

Das erste Objekt ist die Liste:

{
"status": "pulling manifest"
}

Dann gibt es eine Reihe von Download-Antworten. Solange der Download nicht abgeschlossen ist, darf er nicht enthalten completed Taste. Die Anzahl der herunterzuladenden Dateien hängt von der Anzahl der in der Liste angegebenen Ebenen ab.

{
"status": "downloading digestname",
"digest": "digestname",
"total": 2142590208,
"completed": 241970
}

Nachdem alle Dateien heruntergeladen wurden, lautet die endgültige Antwort:

{
"status": "verifying sha256 digest"
}
{
"status": "writing manifest"
}
{
"status": "removing any unused layers"
}
{
"status": "success"
}

für den Fall, dass stream auf false gesetzt ist, ist die Antwort ein einzelnes JSON-Objekt:

{
"status": "success"
}

 

X. Push-Modell

POST /api/push

Laden Sie das Modell in das Modell-Repository hoch. Sie müssen zuerst ollama.ai registrieren und einen öffentlichen Schlüssel hinzufügen.

Parameter

  • name: der Name des zu verschiebenden Modells im Format <namespace>/<model>:<tag>
  • insecure(Optional): Unsichere Verbindungen zu Bibliotheken zulassen. Verwenden Sie diese Option nur, wenn Sie während der Entwicklung Ihre eigenen Bibliotheken pushen.
  • stream(fakultativ): wenn für falseDie Antwort wird als ein einziges Antwortobjekt zurückgegeben, nicht als ein Strom von Objekten.

Beispiel-Anfrage

curl http://localhost:11434/api/push -d '{
"name": "mattw/pygmalion:latest"
}'

Beispiel Antwort

für den Fall, dass stream Nicht angegeben oder eingestellt auf truewird eine Kette von JSON-Objekten zurückgegeben:

{ "status": "retrieving manifest" }

Dann eine Reihe von Upload-Antworten:

{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}

Wenn der Upload abgeschlossen ist:

{"status":"pushing manifest"}
{"status":"success"}

für den Fall, dass stream eingestellt auf falseWenn die Antwort ein einzelnes JSON-Objekt ist, dann ist die Antwort ein einzelnes JSON-Objekt:

{ "status": "success" }

 

XI. die Erzeugung von Einbettungen

POST /api/embed

Erzeugung von Einbettungen aus Modellen.

Parameter

  • modelName des Modells, von dem die Einbettung erzeugt werden soll
  • inputUm eingebetteten Text oder eine Liste von Text zu erzeugen

Erweiterte Parameter:

  • truncateTruncate the end of each input to fit the context length. Dies ist kein Problem, wenn es der Fall ist für false und die Kontextlänge überschreitet, wird ein Fehler zurückgegeben. Der Standardwert ist true
  • optionsAndere Modellparameter wie z.B. temperatureundseed et al. (und andere Autoren)
  • keep_aliveLegt fest, wie lange das Modell nach einer Anfrage im Speicher geladen bleibt (Standard:5m)

Beispiel-Anfrage

curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": "为什么草是绿的?"
}'

Beispiel Antwort

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

Beispielanfrage (mehrere Eingänge)

curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": ["为什么草是绿的?","为什么天是蓝的?"]
}'

Beispiel Antwort

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

 

Fehlerbehandlung

Die Ollama-API gibt beim Auftreten eines Fehlers entsprechende Fehlercodes und Meldungen zurück. Zu den häufigsten Fehlern gehören:

  • 400 Bad Request: Fehler im Anfrageformat.
  • 404 Not Found: Die angeforderte Ressource existiert nicht.
  • 500 Interner Serverfehler: Interner Serverfehler.
Darf nicht ohne Genehmigung vervielfältigt werden:Leiter des AI-Austauschkreises " Ollama API Benutzerhandbuch
de_DEDeutsch