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) Modellnameprompt
: Tipp, um eine Antwort zu erzeugensuffix
Text nach Musterantwortimages
(Optional) eine Liste von base64-kodierten Bildern (für multimodale Modelle wiellava
)
Erweiterte Parameter (optional):
format
Format der Antwort: Gibt das Format der Antwort zurück. Der einzige derzeit akzeptierte Wert istjson
options
:: Andere Modellparameter, wie z.B.temperature
undseed
et al. (und andere Autoren)system
: Systemnachrichtentemplate
Die zu verwendende Prompt-Vorlagecontext
:: Aus der vorherigen Rezension von/generate
Die in der Anfrage zurückgegebenen kontextbezogenen Parameter können verwendet werden, um einen kurzen Dialogspeicher derstream
: Bei Einstellung auffalse
Die Antwort wird als ein einziges Antwortobjekt und nicht als ein Strom von Objekten zurückgegeben.raw
: Bei Einstellung auftrue
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 Optionraw
Parameterkeep_alive
Legt 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.
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.
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 false
kö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 bakllava
Um 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 false
dann kann das Streaming deaktiviert werden. Das endgültige Antwortobjekt enthält die angeforderten Statistiken und zusätzliche Daten.
Parameter
model
: (Erforderlich) Modellnamemessages
Chat-Nachrichten, die als Erinnerung an den Chat verwendet werden könnentools
Das Modell unterstützt die Verwendung von Werkzeugen. Es ist erforderlich, dass diestream
eingestellt auffalse
message
Das Objekt hat die folgenden Felder:
role
Die Rolle der Nachricht, die sein kannsystem
unduser
undassistant
vielleichttool
content
Inhalt der Nachrichtimages
(optional): eine Liste von Bildern, die in der Nachricht enthalten sein sollen (für Nachrichten wiellava
(Multimodale Modelle wie diese)tool_calls
(fakultativ): Liste der Werkzeuge, die das Modell verwenden möchte
Erweiterte Parameter (optional):
format
Format der Antwort: Gibt das Format der Antwort zurück. Der einzige derzeit akzeptierte Wert istjson
options
Andere Modellparameter wie z.B.temperature
undseed
et al. (und andere Autoren)stream
: Wenn fürfalse
Die Antwort wird als ein einziges Antwortobjekt und nicht als ein Strom von Objekten zurückgegeben.keep_alive
Legt 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 path
Entfernte 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
name
Name des zu erstellenden Modellsmodelfile
(optional): Inhalt der Modeldateistream
(fakultativ): wenn fürfalse
Die 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
digest
SHA256 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
digest
Erwartete 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
name
Name 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
name
Name des anzuzeigenden Modellsverbose
(Optional): Bei Einstellung auftrue
und 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
name
Name des zu ziehenden Modellsinsecure
(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ürfalse
Die 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 true
wird 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ürfalse
Die 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 true
wird 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 false
Wenn 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
model
Name des Modells, von dem die Einbettung erzeugt werden sollinput
Um eingebetteten Text oder eine Liste von Text zu erzeugen
Erweiterte Parameter:
truncate
Truncate the end of each input to fit the context length. Dies ist kein Problem, wenn es der Fall ist fürfalse
und die Kontextlänge überschreitet, wird ein Fehler zurückgegeben. Der Standardwert isttrue
options
Andere Modellparameter wie z.B.temperature
undseed
et al. (und andere Autoren)keep_alive
Legt 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.