API
Hinweis: Die API-Dokumentation von Ollama wird zu https://docs.ollama.com/api verschoben.
Endpunkte
- Vervollständigung generieren
- Chat-Vervollständigung generieren
- Modell erstellen
- Lokale Modelle auflisten
- Modellinformationen anzeigen
- Modell kopieren
- Modell löschen
- Modell pullen
- Modell pushen
- Embeddings generieren
- Laufende Modelle auflisten
- Version
- Experimentell: Bildgenerierung
Konventionen
Modellnamen
Modellnamen folgen dem Format model:tag, wobei model einen optionalen Namespace wie example/model haben kann. Einige Beispiele sind orca-mini:3b-q8_0 und llama3:70b. Der Tag ist optional und wird standardmäßig auf latest gesetzt, falls er nicht angegeben wird. Der Tag dient zur Identifizierung einer bestimmten Version.
Dauerangaben
Alle Dauerangaben werden in Nanosekunden zurückgegeben.
Streaming-Antworten
Bestimmte Endpunkte streamen Antworten als JSON-Objekte. Streaming kann für diese Endpunkte deaktiviert werden, indem {"stream": false} übergeben wird.
Eine Vervollständigung generieren
POST /api/generateGeneriert eine Antwort für einen gegebenen Prompt mit einem bereitgestellten Modell. Dies ist ein Streaming-Endpunkt, sodass eine Reihe von Antworten zurückgegeben wird. Das finale Antwortobjekt enthält Statistiken und zusätzliche Daten der Anfrage.
Parameter
model: (erforderlich) der Modellnameprompt: Der Prompt, für den eine Antwort generiert werden sollsuffix: Der Text nach der Modellantwortimages: (optional) Eine Liste von base64-kodierten Bildern (für multimodale Modelle wiellava)think: (für Denk-Modelle) Soll das Modell vor der Antwort denken? Kann ein Boolescher Wert oder eine Denkstufe ("low","medium","high"oder"max") sein.
Erweiterte Parameter (optional):
format: Das Format, in dem die Antwort zurückgegeben werden soll. Das Format kannjsonoder ein JSON-Schema seinoptions: Zusätzliche Modellparameter, die in der Dokumentation für die Modelfile aufgelistet sind, wie z. B.temperaturesystem: Systemnachricht (überschreibt die imModelfiledefinierte Einstellung)template: Die zu verwendende Prompt-Vorlage (überschreibt die imModelfiledefinierte Einstellung)stream: Wenn auffalsegesetzt, wird die Antwort als einzelnes Antwortobjekt zurückgegeben, statt als Stream von Objektenraw: Wenn auftruegesetzt, wird keine Formatierung auf den Prompt angewendet. Sie können denraw-Parameter verwenden, wenn Sie in Ihrer Anfrage an die API einen vollständigen, vorlagenbasierten Prompt angebenkeep_alive: Steuert, wie lange das Modell nach der Anfrage im Speicher geladen bleibt (Standard:5m)context(veraltet): Dercontext-Parameter, der von einer vorherigen Anfrage an/generatezurückgegeben wird. Dieser kann verwendet werden, um ein kurzes Gesprächsgedächtnis zu behalten
Experimentelle Bildgenerierungsparameter (nur für Bildgenerierungsmodelle):
WARNING
Diese Parameter sind experimentell und können in zukünftigen Versionen geändert werden.
width: Breite des generierten Bildes in Pixelnheight: Höhe des generierten Bildes in Pixelnsteps: Anzahl der Diffusionsschritte
Strukturierte Ausgaben
Strukturierte Ausgaben werden unterstützt, indem ein JSON-Schema im format-Parameter übergeben wird. Das Modell generiert eine Antwort, die dem Schema entspricht. Siehe das folgende Beispiel zu strukturierten Ausgaben.
JSON-Modus
Aktivieren Sie den JSON-Modus, indem Sie den format-Parameter auf json setzen. Dadurch wird die Antwort als gültiges JSON-Objekt strukturiert. Siehe das folgende Beispiel zum JSON-Modus.
IMPORTANT
Es ist wichtig, das Modell anzuweisen, im prompt JSON zu verwenden. Andernfalls kann das Modell große Mengen an Leerzeichen generieren.
Beispiele
Generierungsanfrage (Streaming)
Anfrage
shell
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?"
}'Antwort
Ein Stream von JSON-Objekten wird zurückgegeben:
json
{
"model": "llama3.2",
"created_at": "2023-08-04T08:52:19.385406455-07:00",
"response": "The",
"done": false
}Die finale Antwort im Stream enthält außerdem zusätzliche Daten zur Generierung:
total_duration: Zeit, die für die Generierung der Antwort aufgewendet wurdeload_duration: Zeit in Nanosekunden, die für das Laden des Modells aufgewendet wurdeprompt_eval_count: Anzahl der Token im Promptprompt_eval_duration: Zeit in Nanosekunden, die für die Auswertung des Prompts aufgewendet wurdeeval_count: Anzahl der Token in der Antworteval_duration: Zeit in Nanosekunden, die für die Generierung der Antwort aufgewendet wurdecontext: Eine Kodierung des in dieser Antwort verwendeten Gesprächs. Diese kann in der nächsten Anfrage gesendet werden, um ein Gesprächsgedächtnis zu behaltenresponse: Leer, wenn die Antwort gestreamt wurde. Wenn nicht gestreamt, enthält dieses Feld die vollständige Antwort
Um die Generierungsgeschwindigkeit in Token pro Sekunde (Token/s) zu berechnen, teilen Sie eval_count durch eval_duration und multiplizieren Sie das Ergebnis mit 10^9.
json
{
"model": "llama3.2",
"created_at": "2023-08-04T19:22:45.499127Z",
"response": "",
"done": true,
"context": [1, 2, 3],
"total_duration": 10706818083,
"load_duration": 6338219291,
"prompt_eval_count": 26,
"prompt_eval_duration": 130079000,
"eval_count": 259,
"eval_duration": 4232710000
}Anfrage (Kein Streaming)
Anfrage
Eine Antwort kann in einer einzelnen Antwort empfangen werden, wenn Streaming deaktiviert ist.
shell
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?",
"stream": false
}'Antwort
Wenn stream auf false gesetzt ist, ist die Antwort ein einzelnes JSON-Objekt:
json
{
"model": "llama3.2",
"created_at": "2023-08-04T19:22:45.499127Z",
"response": "The sky is blue because it is the color of the sky.",
"done": true,
"context": [1, 2, 3],
"total_duration": 5043500667,
"load_duration": 5025959,
"prompt_eval_count": 26,
"prompt_eval_duration": 325953000,
"eval_count": 290,
"eval_duration": 4709213000
}Anfrage (mit Suffix)
Anfrage
shell
curl http://localhost:11434/api/generate -d '{
"model": "codellama:code",
"prompt": "def compute_gcd(a, b):",
"suffix": " return result",
"options": {
"temperature": 0
},
"stream": false
}'Antwort
json5
{
"model": "codellama:code",
"created_at": "2024-07-22T20:47:51.147561Z",
"response": "\n if a == 0:\n return b\n else:\n return compute_gcd(b % a, a)\n\ndef compute_lcm(a, b):\n result = (a * b) / compute_gcd(a, b)\n",
"done": true,
"done_reason": "stop",
"context": [...],
"total_duration": 1162761250,
"load_duration": 6683708,
"prompt_eval_count": 17,
"prompt_eval_duration": 201222000,
"eval_count": 63,
"eval_duration": 953997000
}Anfrage (Strukturierte Ausgaben)
Anfrage
shell
curl -X POST http://localhost:11434/api/generate -H "Content-Type: application/json" -d '{
"model": "llama3.1:8b",
"prompt": "Ollama is 22 years old and is busy saving the world. Respond using JSON",
"stream": false,
"format": {
"type": "object",
"properties": {
"age": {
"type": "integer"
},
"available": {
"type": "boolean"
}
},
"required": [
"age",
"available"
]
}
}'Antwort
json
{
"model": "llama3.1:8b",
"created_at": "2024-12-06T00:48:09.983619Z",
"response": "{\n \"age\": 22,\n \"available\": true\n}",
"done": true,
"done_reason": "stop",
"context": [1, 2, 3],
"total_duration": 1075509083,
"load_duration": 567678166,
"prompt_eval_count": 28,
"prompt_eval_duration": 236000000,
"eval_count": 16,
"eval_duration": 269000000
}Anfrage (JSON-Modus)
IMPORTANT
Wenn format auf json gesetzt ist, ist die Ausgabe immer ein wohlgeformtes JSON-Objekt. Es ist wichtig, das Modell zusätzlich anzuweisen, im JSON-Format zu antworten.
Anfrage
shell
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "What color is the sky at different times of the day? Respond using JSON",
"format": "json",
"stream": false
}'Antwort
json
{
"model": "llama3.2",
"created_at": "2023-11-09T21:07:55.186497Z",
"response": "{\n\"morning\": {\n\"color\": \"blue\"\n},\n\"noon\": {\n\"color\": \"blue-gray\"\n},\n\"afternoon\": {\n\"color\": \"warm gray\"\n},\n\"evening\": {\n\"color\": \"orange\"\n}\n}\n",
"done": true,
"context": [1, 2, 3],
"total_duration": 4648158584,
"load_duration": 4071084,
"prompt_eval_count": 36,
"prompt_eval_duration": 439038000,
"eval_count": 180,
"eval_duration": 4196918000
}Der Wert von response ist ein String, der ein ähnliches JSON enthält:
json
{
"morning": {
"color": "blue"
},
"noon": {
"color": "blue-gray"
},
"afternoon": {
"color": "warm gray"
},
"evening": {
"color": "orange"
}
}Anfrage (mit Bildern)
Um Bilder an multimodale Modelle wie llava oder bakllava zu übermitteln, geben Sie eine Liste von base64-kodierten images an:
Anfrage
shell
curl http://localhost:11434/api/generate -d '{
"model": "llava",
"prompt":"What is in this picture?",
"stream": false,
"images": ["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"]
}'Antwort
json
{
"model": "llava",
"created_at": "2023-11-03T15:36:02.583064Z",
"response": "A happy cartoon character, which is cute and cheerful.",
"done": true,
"context": [1, 2, 3],
"total_duration": 2938432250,
"load_duration": 2559292,
"prompt_eval_count": 1,
"prompt_eval_duration": 2195557000,
"eval_count": 44,
"eval_duration": 736432000
}Anfrage (Raw-Modus)
In einigen Fällen möchten Sie möglicherweise das Vorlagensystem umgehen und einen vollständigen Prompt angeben. In diesem Fall können Sie den raw-Parameter verwenden, um die Vorlagenverarbeitung zu deaktivieren. Beachten Sie außerdem, dass der Raw-Modus keinen context zurückgibt.
Anfrage
shell
curl http://localhost:11434/api/generate -d '{
"model": "mistral",
"prompt": "[INST] why is the sky blue? [/INST]",
"raw": true,
"stream": false
}'Anfrage (Reproduzierbare Ausgaben)
Für reproduzierbare Ausgaben setzen Sie seed auf eine Zahl:
Anfrage
shell
curl http://localhost:11434/api/generate -d '{
"model": "mistral",
"prompt": "Why is the sky blue?",
"options": {
"seed": 123
}
}'Antwort
json
{
"model": "mistral",
"created_at": "2023-11-03T15:36:02.583064Z",
"response": " The sky appears blue because of a phenomenon called Rayleigh scattering.",
"done": true,
"total_duration": 8493852375,
"load_duration": 6589624375,
"prompt_eval_count": 14,
"prompt_eval_duration": 119039000,
"eval_count": 110,
"eval_duration": 1779061000
}Generierungsanfrage (Mit Optionen)
Wenn Sie benutzerdefinierte Optionen für das Modell zur Laufzeit statt in der Modelfile festlegen möchten, können Sie dies über den options-Parameter tun. Dieses Beispiel setzt alle verfügbaren Optionen, aber Sie können jede einzelne davon festlegen und diejenigen weglassen, die Sie nicht überschreiben möchten.
Anfrage
shell
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?",
"stream": false,
"options": {
"num_keep": 5,
"seed": 42,
"num_predict": 100,
"draft_num_predict": 4,
"top_k": 20,
"top_p": 0.9,
"min_p": 0.0,
"typical_p": 0.7,
"repeat_last_n": 33,
"temperature": 0.8,
"repeat_penalty": 1.2,
"presence_penalty": 1.5,
"frequency_penalty": 1.0,
"penalize_newline": true,
"stop": ["\n", "user:"],
"numa": false,
"num_ctx": 1024,
"num_batch": 2,
"num_gpu": 1,
"main_gpu": 0,
"use_mmap": true,
"num_thread": 8
}
}'Antwort
json
{
"model": "llama3.2",
"created_at": "2023-08-04T19:22:45.499127Z",
"response": "The sky is blue because it is the color of the sky.",
"done": true,
"context": [1, 2, 3],
"total_duration": 4935886791,
"load_duration": 534986708,
"prompt_eval_count": 26,
"prompt_eval_duration": 107345000,
"eval_count": 237,
"eval_duration": 4289432000
}Ein Modell laden
Wenn ein leerer Prompt angegeben wird, wird das Modell in den Speicher geladen.
Anfrage
shell
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2"
}'Antwort
Ein einzelnes JSON-Objekt wird zurückgegeben:
json
{
"model": "llama3.2",
"created_at": "2023-12-18T19:52:07.071755Z",
"response": "",
"done": true
}Ein Modell entladen
Wenn ein leerer Prompt angegeben wird und der keep_alive-Parameter auf 0 gesetzt ist, wird ein Modell aus dem Speicher entladen.
Anfrage
shell
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"keep_alive": 0
}'Antwort
Ein einzelnes JSON-Objekt wird zurückgegeben:
json
{
"model": "llama3.2",
"created_at": "2024-09-12T03:54:03.516566Z",
"response": "",
"done": true,
"done_reason": "unload"
}Einen Chat-Abschluss generieren
POST /api/chatGeneriert die nächste Nachricht in einem Chat mit einem angegebenen Modell. Dies ist ein Streaming-Endpunkt, sodass eine Reihe von Antworten zurückgegeben wird. Streaming kann mit "stream": false deaktiviert werden. Das finale Antwortobjekt enthält Statistiken und zusätzliche Daten der Anfrage.
Parameter
model: (erforderlich) der Modellnamemessages: Die Nachrichten des Chats, dies kann verwendet werden, um einen Chat-Verlauf zu speicherntools: Liste von Tools im JSON-Format, die das Modell verwenden kann, falls unterstütztthink: (für Denk-Modelle) Soll das Modell vor der Antwort denken? Kann ein boolescher Wert oder eine Denkstufe ("low","medium","high"oder"max") sein.
Das message-Objekt hat die folgenden Felder:
role: Die Rolle der Nachricht, entwedersystem,user,assistantodertoolcontent: Der Inhalt der Nachrichtthinking: (für Denk-Modelle) Der Denkprozess des Modellsimages(optional): Eine Liste von Bildern, die in die Nachricht eingefügt werden sollen (für multimodale Modelle wiellava)tool_calls(optional): Eine Liste von Tools im JSON-Format, die das Modell verwenden möchtetool_name(optional): Füge den Namen des ausgeführten Tools hinzu, um das Modell über das Ergebnis zu informieren
Erweiterte Parameter (optional):
format: Das Format, in dem die Antwort zurückgegeben werden soll. Das Format kannjsonoder ein JSON-Schema sein.options: Zusätzliche Modellparameter, die in der Dokumentation für die [Modelfile](. /modelfile. mdx#valid-parameters-and-values) aufgelistet sind, wie z. B.temperaturestream: Wennfalse, wird die Antwort als einzelnes Antwortobjekt zurückgegeben, statt als Stream von Objektenkeep_alive: Steuert, wie lange das Modell nach der Anfrage im Speicher geladen bleibt (Standard:5m)
Tool-Aufrufe
Tool-Aufrufe werden unterstützt, indem eine Liste von Tools im Parameter tools angegeben wird. Das Modell generiert eine Antwort, die eine Liste von Tool-Aufrufen enthält. Siehe das folgende Beispiel Chat-Anfrage (Streaming mit Tools). Modelle können das Ergebnis des Tool-Aufrufs auch in der Antwort erklären. Siehe das folgende Beispiel Chat-Anfrage (Mit Verlauf, mit Tools). [Modelle mit Tool-Aufruf-Fähigkeiten anzeigen](https://ollama. com/search? c=tool).
Strukturierte Ausgaben
Strukturierte Ausgaben werden unterstützt, indem ein JSON-Schema im Parameter format angegeben wird. Das Modell generiert eine Antwort, die dem Schema entspricht. Siehe das folgende Beispiel Chat-Anfrage (Strukturierte Ausgaben).
Beispiele
Chat-Anfrage (Streaming)
Anfrage
Sende eine Chat-Nachricht mit einer Streaming-Antwort.
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [
{
"role": "user",
"content": "why is the sky blue? "
}
]
}'Antwort
Ein Stream von JSON-Objekten wird zurückgegeben:
json
{
"model": "llama3. 2",
"created_at": "2023-08-04T08:52:19. 385406455-07:00",
"message": {
"role": "assistant",
"content": "The",
"images": null
},
"done": false
}Finale Antwort:
json
{
"model": "llama3. 2",
"created_at": "2023-08-04T19:22:45. 499127Z",
"message": {
"role": "assistant",
"content": ""
},
"done": true,
"total_duration": 4883583458,
"load_duration": 1334875,
"prompt_eval_count": 26,
"prompt_eval_duration": 342546000,
"eval_count": 282,
"eval_duration": 4535599000
}Chat-Anfrage (Streaming mit Tools)
Anfrage
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [
{
"role": "user",
"content": "what is the weather in tokyo? "
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the weather in a given city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city to get the weather for"
}
},
"required": ["city"]
}
}
}
],
"stream": true
}'Antwort
Ein Stream von JSON-Objekten wird zurückgegeben:
json
{
"model": "llama3. 2",
"created_at": "2025-07-07T20:22:19. 184789Z",
"message": {
"role": "assistant",
"content": "",
"tool_calls": [
{
"function": {
"name": "get_weather",
"arguments": {
"city": "Tokyo"
}
}
}
]
},
"done": false
}Finale Antwort:
json
{
"model": "llama3. 2",
"created_at": "2025-07-07T20:22:19. 19314Z",
"message": {
"role": "assistant",
"content": ""
},
"done_reason": "stop",
"done": true,
"total_duration": 182242375,
"load_duration": 41295167,
"prompt_eval_count": 169,
"prompt_eval_duration": 24573166,
"eval_count": 15,
"eval_duration": 115959084
}Chat-Anfrage (Kein Streaming)
Anfrage
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [
{
"role": "user",
"content": "why is the sky blue? "
}
],
"stream": false
}'Antwort
json
{
"model": "llama3. 2",
"created_at": "2023-12-12T14:13:43. 416799Z",
"message": {
"role": "assistant",
"content": "Hello! How are you today? "
},
"done": true,
"total_duration": 5191566416,
"load_duration": 2154458,
"prompt_eval_count": 26,
"prompt_eval_duration": 383809000,
"eval_count": 298,
"eval_duration": 4799921000
}Chat-Anfrage (Kein Streaming, mit Tools)
Anfrage
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [
{
"role": "user",
"content": "what is the weather in tokyo? "
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the weather in a given city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city to get the weather for"
}
},
"required": ["city"]
}
}
}
],
"stream": false
}'Antwort
json
{
"model": "llama3. 2",
"created_at": "2025-07-07T20:32:53. 844124Z",
"message": {
"role": "assistant",
"content": "",
"tool_calls": [
{
"function": {
"name": "get_weather",
"arguments": {
"city": "Tokyo"
}
}
}
]
},
"done_reason": "stop",
"done": true,
"total_duration": 3244883583,
"load_duration": 2969184542,
"prompt_eval_count": 169,
"prompt_eval_duration": 141656333,
"eval_count": 18,
"eval_duration": 133293625
}Chat-Anfrage (Strukturierte Ausgaben)
Anfrage
shell
curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d '{
"model": "llama3. 1",
"messages": [{"role": "user", "content": "Ollama is 22 years old and busy saving the world. Return a JSON object with the age and availability. "}],
"stream": false,
"format": {
"type": "object",
"properties": {
"age": {
"type": "integer"
},
"available": {
"type": "boolean"
}
},
"required": [
"age",
"available"
]
},
"options": {
"temperature": 0
}
}'Antwort
json
{
"model": "llama3. 1",
"created_at": "2024-12-06T00:46:58. 265747Z",
"message": {
"role": "assistant",
"content": "{\"age\": 22, \"available\": false}"
},
"done_reason": "stop",
"done": true,
"total_duration": 2254970291,
"load_duration": 574751416,
"prompt_eval_count": 34,
"prompt_eval_duration": 1502000000,
"eval_count": 12,
"eval_duration": 175000000
}Chat-Anfrage (Mit Verlauf)
Sende eine Chat-Nachricht mit einem Gesprächsverlauf. Du kannst diesen gleichen Ansatz verwenden, um das Gespräch mit Multi-Shot- oder Chain-of-Thought-Prompting zu starten.
Anfrage
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [
{
"role": "user",
"content": "why is the sky blue? "
},
{
"role": "assistant",
"content": "due to rayleigh scattering. "
},
{
"role": "user",
"content": "how is that different than mie scattering? "
}
]
}'Antwort
Ein Stream von JSON-Objekten wird zurückgegeben:
json
{
"model": "llama3. 2",
"created_at": "2023-08-04T08:52:19. 385406455-07:00",
"message": {
"role": "assistant",
"content": "The"
},
"done": false
}Finale Antwort:
json
{
"model": "llama3. 2",
"created_at": "2023-08-04T19:22:45. 499127Z",
"done": true,
"total_duration": 8113331500,
"load_duration": 6396458,
"prompt_eval_count": 61,
"prompt_eval_duration": 398801000,
"eval_count": 468,
"eval_duration": 7701267000
}Chat-Anfrage (Mit Verlauf, mit Tools)
Anfrage
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [
{
"role": "user",
"content": "what is the weather in Toronto? "
},
// Die Nachricht des Modells, die zum Verlauf hinzugefügt wurde
{
"role": "assistant",
"content": "",
"tool_calls": [
{
"function": {
"name": "get_weather",
"arguments": {
"city": "Toronto"
}
}
}
]
},
// Das Ergebnis des Tool-Aufrufs, das zum Verlauf hinzugefügt wurde
{
"role": "tool",
"content": "11 degrees celsius",
"tool_name": "get_weather"
}
],
"stream": false,
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the weather in a given city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city to get the weather for"
}
},
"required": ["city"]
}
}
}
]
}'Antwort
json
{
"model": "llama3. 2",
"created_at": "2025-07-07T20:43:37. 688511Z",
"message": {
"role": "assistant",
"content": "The current temperature in Toronto is 11°C. "
},
"done_reason": "stop",
"done": true,
"total_duration": 890771750,
"load_duration": 707634750,
"prompt_eval_count": 94,
"prompt_eval_duration": 91703208,
"eval_count": 11,
"eval_duration": 90282125
}Chat-Anfrage (mit Bildern)
Anfrage
Sende eine Chat-Nachricht mit Bildern. Die Bilder sollten als Array angegeben werden, wobei die einzelnen Bilder in Base64 codiert sind.
shell
curl http://localhost:11434/api/chat -d '{
"model": "llava",
"messages": [
{
"role": "user",
"content": "what is in this image?
",
"images": ["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"]
}
]
}'Antwort
json
{
"model": "llava",
"created_at": "2023-12-13T22:42:50. 203334Z",
"message": {
"role": "assistant",
"content": "Das Bild zeigt ein niedliches, kleines Schwein mit wütendem Gesichtsausdruck. Es trägt ein Herz auf seinem Hemd und winkt in die Luft. Diese Szene scheint Teil eines Zeichen- oder Skizzenprojekts zu sein.",
"images": null
},
"done": true,
"total_duration": 1668506709,
"load_duration": 1986209,
"prompt_eval_count": 26,
"prompt_eval_duration": 359682000,
"eval_count": 83,
"eval_duration": 1303285000
}Chat-Anfrage (Reproduzierbare Ausgaben)
Anfrage
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [
{
"role": "user",
"content": "Hello! "
}
],
"options": {
"seed": 101,
"temperature": 0
}
}'Antwort
json
{
"model": "llama3. 2",
"created_at": "2023-12-12T14:13:43. 416799Z",
"message": {
"role": "assistant",
"content": "Hallo! Wie geht es dir heute? "
},
"done": true,
"total_duration": 5191566416,
"load_duration": 2154458,
"prompt_eval_count": 26,
"prompt_eval_duration": 383809000,
"eval_count": 298,
"eval_duration": 4799921000
}Chat-Anfrage (mit Tools)
Anfrage
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [
{
"role": "user",
"content": "What is the weather today in Paris? "
}
],
"stream": false,
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Holen Sie das aktuelle Wetter für einen Standort",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Der Standort, für den das Wetter abgerufen werden soll, z. B. San Francisco, CA"
},
"format": {
"type": "string",
"description": "Das Format, in dem das Wetter zurückgegeben werden soll, z. B. 'celsius' oder 'fahrenheit'",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location", "format"]
}
}
}
]
}'Antwort
json
{
"model": "llama3. 2",
"created_at": "2024-07-22T20:33:28. 123648Z",
"message": {
"role": "assistant",
"content": "",
"tool_calls": [
{
"function": {
"name": "get_current_weather",
"arguments": {
"format": "celsius",
"location": "Paris, FR"
}
}
}
]
},
"done_reason": "stop",
"done": true,
"total_duration": 885095291,
"load_duration": 3753500,
"prompt_eval_count": 122,
"prompt_eval_duration": 328493000,
"eval_count": 33,
"eval_duration": 552222000
}Modell laden
Wenn das Nachrichten-Array leer ist, wird das Modell in den Speicher geladen. ##### Anfrage
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": []
}'Antwort
json
{
"model": "llama3. 2",
"created_at": "2024-09-12T21:17:29. 110811Z",
"message": {
"role": "assistant",
"content": ""
},
"done_reason": "load",
"done": true
}Modell entladen
Wenn das Nachrichten-Array leer ist und der Parameter keep_alive auf 0 gesetzt ist, wird ein Modell aus dem Speicher entladen. ##### Anfrage
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [],
"keep_alive": 0
}'Antwort
Es wird ein einzelnes JSON-Objekt zurückgegeben:
json
{
"model": "llama3. 2",
"created_at": "2024-09-12T21:33:17. 547535Z",
"message": {
"role": "assistant",
"content": ""
},
"done_reason": "unload",
"done": true
}Ein Modell erstellen
POST /api/createEin Modell kann aus folgenden Quellen erstellt werden:
- einem anderen Modell;
- einem Safetensors-Verzeichnis; oder
- einer GGUF-Datei.
Wenn Sie ein Modell aus einem Safetensors-Verzeichnis oder einer GGUF-Datei erstellen, müssen Sie für jede Datei zuerst einen Blob erstellen und anschließend den Dateinamen sowie den zugehörigen SHA256-Hash des jeweiligen Blobs im Feld files angeben.
Parameter
model: Name des zu erstellenden Modellsfrom: (optional) Name eines vorhandenen Modells, von dem das neue Modell abgeleitet wirdfiles: (optional) Ein Dictionary aus Dateinamen und den zugehörigen SHA256-Hashes von Blobs, aus denen das Modell erstellt werden solladapters: (optional) Ein Dictionary aus Dateinamen und den zugehörigen SHA256-Hashes von Blobs für LORA-Adaptertemplate: (optional) Die Prompt-Vorlage für das Modellrenderer: (optional) Der Name des Renderers für das Modellparser: (optional) Der Name des Parsers für das Modelllicense: (optional) Eine Zeichenkette oder Liste von Zeichenketten, die die Lizenz oder Lizenzen des Modells enthältsystem: (optional) Eine Zeichenkette, die den System-Prompt für das Modell enthältparameters: (optional) Ein Dictionary mit Parametern für das Modell (eine Liste der Parameter finden Sie in der Modelfile)messages: (optional) Eine Liste von Nachrichtenobjekten, die zum Erstellen einer Konversation verwendet werdenstream: (optional) Wenn auffalsegesetzt, wird die Antwort als einzelnes Antwortobjekt zurückgegeben, statt als Stream von Objektenquantize(optional): Quantisieren Sie ein nicht quantisiertes (z. B. float16) Modell
Quantisierungstypen
| Type | Recommended |
|---|---|
| q4_K_M | * |
| q4_K_S | |
| q8_0 | * |
Beispiele
Ein neues Modell erstellen
Erstellen Sie ein neues Modell auf Basis eines vorhandenen Modells.
Anfrage
shell
curl http://localhost:11434/api/create -d '{
"model": "mario",
"from": "llama3.2",
"system": "You are Mario from Super Mario Bros."
}'Antwort
Es wird ein Stream von JSON-Objekten zurückgegeben:
json
{"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"}Ein Modell quantisieren
Quantisieren Sie ein nicht quantisiertes Modell.
Anfrage
shell
curl http://localhost:11434/api/create -d '{
"model": "llama3.2:quantized",
"from": "llama3.2:3b-instruct-fp16",
"quantize": "q4_K_M"
}'Antwort
Es wird ein Stream von JSON-Objekten zurückgegeben:
json
{"status":"quantizing F16 model to Q4_K_M","digest":"0","total":6433687776,"completed":12302}
{"status":"quantizing F16 model to Q4_K_M","digest":"0","total":6433687776,"completed":6433687552}
{"status":"verifying conversion"}
{"status":"creating new layer sha256:fb7f4f211b89c6c4928ff4ddb73db9f9c0cfca3e000c3e40d6cf27ddc6ca72eb"}
{"status":"using existing layer sha256:966de95ca8a62200913e3f8bfbf84c8494536f1b94b49166851e76644e966396"}
{"status":"using existing layer sha256:fcc5a6bec9daf9b561a68827b67ab6088e1dba9d1fa2a50d7bbcc8384e0a265d"}
{"status":"using existing layer sha256:a70ff7e570d97baaf4e62ac6e6ad9975e04caa6d900d3742d37698494479e0cd"}
{"status":"using existing layer sha256:56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb"}
{"status":"writing manifest"}
{"status":"success"}Ein Modell aus GGUF erstellen
Erstellen Sie ein Modell aus einer GGUF-Datei. Der Parameter files muss mit dem Dateinamen und dem SHA256-Hash der zu verwendenden GGUF-Datei befüllt werden. Verwenden Sie /api/blobs/:digest, um die GGUF-Datei vor dem Aufruf dieser API auf den Server zu übertragen.
Anfrage
shell
curl http://localhost:11434/api/create -d '{
"model": "my-gguf-model",
"files": {
"test.gguf": "sha256:432f310a77f4650a88d0fd59ecdd7cebed8d684bafea53cbff0473542964f0c3"
}
}'Antwort
Es wird ein Stream von JSON-Objekten zurückgegeben:
json
{"status":"parsing GGUF"}
{"status":"using existing layer sha256:432f310a77f4650a88d0fd59ecdd7cebed8d684bafea53cbff0473542964f0c3"}
{"status":"writing manifest"}
{"status":"success"}Ein Modell aus einem Safetensors-Verzeichnis erstellen
Der Parameter files muss ein Dictionary mit den Dateien des Safetensors-Modells enthalten, das die Dateinamen und den SHA256-Hash jeder Datei umfasst. Verwenden Sie /api/blobs/:digest, um zuerst jede Datei auf den Server zu übertragen, bevor Sie diese API aufrufen. Die Dateien verbleiben im Cache, bis der Ollama-Server neu gestartet wird.
Anfrage
shell
curl http://localhost:11434/api/create -d '{
"model": "fred",
"files": {
"config.json": "sha256:dd3443e529fb2290423a0c65c2d633e67b419d273f170259e27297219828e389",
"generation_config.json": "sha256:88effbb63300dbbc7390143fbbdd9d9fa50587b37e8bfd16c8c90d4970a74a36",
"special_tokens_map.json": "sha256:b7455f0e8f00539108837bfa586c4fbf424e31f8717819a6798be74bef813d05",
"tokenizer.json": "sha256:bbc1904d35169c542dffbe1f7589a5994ec7426d9e5b609d07bab876f32e97ab",
"tokenizer_config.json": "sha256:24e8a6dc2547164b7002e3125f10b415105644fcf02bf9ad8b674c87b1eaaed6",
"model.safetensors": "sha256:1ff795ff6a07e6a68085d206fb84417da2f083f68391c2843cd2b8ac6df8538f"
}
}'Antwort
Es wird ein Stream von JSON-Objekten zurückgegeben:
shell
{"status":"converting model"}
{"status":"creating new layer sha256:05ca5b813af4a53d2c2922933936e398958855c44ee534858fcfd830940618b6"}
{"status":"using autodetected template llama3-instruct"}
{"status":"using existing layer sha256:56bb8bd477a519ffa694fc449c2413c6f0e1d3b1c88fa7e3c9d88d3ae49d4dcb"}
{"status":"writing manifest"}
{"status":"success"}Prüfen, ob ein Blob existiert
shell
HEAD /api/blobs/:digestStellt sicher, dass der Datei-Blob (Binary Large Object), der zum Erstellen eines Modells verwendet wird, auf dem Server existiert. Diese Prüfung erfolgt auf deinem Ollama-Server und nicht auf ollama.com.
Abfrageparameter
digest: Der SHA256-Digest des Blobs
Beispiele
Anfrage
shell
curl -I http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2Antwort
Gibt 200 OK zurück, wenn der Blob existiert, andernfalls 404 Not Found.
Blob hochladen
POST /api/blobs/:digestLade eine Datei auf den Ollama-Server, um einen „Blob“ (Binary Large Object) zu erstellen.
Abfrageparameter
digest: Der erwartete SHA256-Digest der Datei
Beispiele
Anfrage
shell
curl -T model.gguf -X POST http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2Antwort
Gibt 201 Created zurück, wenn der Blob erfolgreich erstellt wurde, andernfalls 400 Bad Request, wenn der verwendete Digest nicht dem erwarteten entspricht.
Lokale Modelle auflisten
GET /api/tagsListet Modelle auf, die lokal verfügbar sind.
Beispiele
Anfrage
shell
curl http://localhost:11434/api/tagsAntwort
Es wird ein einzelnes JSON-Objekt zurückgegeben.
json
{
"models": [
{
"name": "deepseek-r1:latest",
"model": "deepseek-r1:latest",
"modified_at": "2025-05-10T08:06:48.639712648-07:00",
"size": 4683075271,
"digest": "0a8c266910232fd3291e71e5ba1e058cc5af9d411192cf88b6d30e92b6e73163",
"details": {
"parent_model": "",
"format": "gguf",
"family": "qwen2",
"families": ["qwen2"],
"parameter_size": "7.6B",
"quantization_level": "Q4_K_M"
}
},
{
"name": "llama3.2:latest",
"model": "llama3.2:latest",
"modified_at": "2025-05-04T17:37:44.706015396-07:00",
"size": 2019393189,
"digest": "a80c4f17acd55265feec403c7aef86be0c25983ab279d83f3bcd3abbcb5b8b72",
"details": {
"parent_model": "",
"format": "gguf",
"family": "llama",
"families": ["llama"],
"parameter_size": "3.2B",
"quantization_level": "Q4_K_M"
}
}
]
}Modellinformationen anzeigen
POST /api/showZeigt Informationen zu einem Modell an, einschließlich Details, Modelfile, Vorlage, Parameter, Lizenz und System-Prompt.
Parameter
model: Name des anzuzeigenden Modellsverbose: (optional) Wenn auftruegesetzt, werden vollständige Daten für ausführliche Antwortfelder zurückgegeben
Beispiele
Anfrage
shell
curl http://localhost:11434/api/show -d '{
"model": "llava"
}'Antwort
json5
{
modelfile: '# Modelfile generated by "ollama show"\n# To build a new Modelfile based on this one, replace the FROM line with:\n# FROM llava:latest\n\nFROM /Users/matt/.ollama/models/blobs/sha256:200765e1283640ffbd013184bf496e261032fa75b99498a9613be4e94d63ad52\nTEMPLATE """{{ .System }}\nUSER: {{ .Prompt }}\nASSISTANT: """\nPARAMETER num_ctx 4096\nPARAMETER stop "\u003c/s\u003e"\nPARAMETER stop "USER:"\nPARAMETER stop "ASSISTANT:"',
parameters: 'num_keep 24\nstop "<|start_header_id|>"\nstop "<|end_header_id|>"\nstop "<|eot_id|>"',
template: "{{ if .System }}<|start_header_id|>system<|end_header_id|>\n\n{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>\n\n{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>\n\n{{ .Response }}<|eot_id|>",
details: {
parent_model: "",
format: "gguf",
family: "llama",
families: ["llama"],
parameter_size: "8.0B",
quantization_level: "Q4_0",
},
model_info: {
"general.architecture": "llama",
"general.file_type": 2,
"general.parameter_count": 8030261248,
"general.quantization_version": 2,
"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": 8192,
"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": [], // populates if `verbose=true`
"tokenizer.ggml.model": "gpt2",
"tokenizer.ggml.pre": "llama-bpe",
"tokenizer.ggml.token_type": [], // populates if `verbose=true`
"tokenizer.ggml.tokens": [], // populates if `verbose=true`
},
capabilities: ["completion", "vision"],
}Modell kopieren
POST /api/copyKopiert ein Modell. Erstellt ein Modell mit einem anderen Namen aus einem vorhandenen Modell.
Beispiele
Anfrage
shell
curl http://localhost:11434/api/copy -d '{
"source": "llama3.2",
"destination": "llama3-backup"
}'Antwort
Gibt bei Erfolg 200 OK zurück, andernfalls 404 Not Found, wenn das Quellmodell nicht existiert.
Modell löschen
DELETE /api/deleteLöscht ein Modell und seine zugehörigen Daten.
Parameter
model: Name des zu löschenden Modells
Beispiele
Anfrage
shell
curl -X DELETE http://localhost:11434/api/delete -d '{
"model": "llama3:13b"
}'Antwort
Gibt bei Erfolg 200 OK zurück, andernfalls 404 Not Found, wenn das zu löschende Modell nicht existiert.
Modell herunterladen (Pull)
POST /api/pullLädt ein Modell aus der Ollama-Bibliothek herunter. Abgebrochene Downloads werden an der vorherigen Stelle fortgesetzt, und mehrere Aufrufe teilen sich den gleichen Download-Fortschritt.
Parameter
model: Name des herunterzuladenden Modellsinsecure: (optional) Erlaubt unsichere Verbindungen zur Bibliothek. Verwende dies nur, wenn du während der Entwicklung von deiner eigenen Bibliothek herunterlädst.stream: (optional) Wenn auffalsegesetzt, wird die Antwort als einzelnes Antwortobjekt zurückgegeben, anstatt als Stream von Objekten
Beispiele
Anfrage
shell
curl http://localhost:11434/api/pull -d '{
"model": "llama3.2"
}'Antwort
Wenn stream nicht angegeben oder auf true gesetzt ist, wird ein Stream von JSON-Objekten zurückgegeben:
Das erste Objekt ist das Manifest:
json
{
"status": "pulling manifest"
}Anschließend folgt eine Reihe von Download-Antworten. Bis ein Download abgeschlossen ist, ist der Schlüssel completed möglicherweise nicht enthalten. Die Anzahl der herunterzuladenden Dateien hängt von der Anzahl der im Manifest angegebenen Schichten ab.
json
{
"status": "pulling digestname",
"digest": "digestname",
"total": 2142590208,
"completed": 241970
}Nachdem alle Dateien heruntergeladen wurden, sind die abschließenden Antworten:
json
{
"status": "verifying sha256 digest"
}
{
"status": "writing manifest"
}
{
"status": "removing any unused layers"
}
{
"status": "success"
}Wenn stream auf false gesetzt ist, ist die Antwort ein einzelnes JSON-Objekt:
json
{
"status": "success"
}Modell hochladen (Push)
POST /api/pushLädt ein Modell in eine Modellbibliothek hoch. Erfordert zuvor eine Registrierung auf ollama.ai und das Hinzufügen eines öffentlichen Schlüssels.
Parameter
model: Name des hochzuladenden Modells in der Form<Namespace>/<Modell>:<Tag>insecure: (optional) Erlaubt unsichere Verbindungen zur Bibliothek. Verwende dies nur, wenn du während der Entwicklung in deine eigene Bibliothek hochlädst.stream: (optional) Wenn auffalsegesetzt, wird die Antwort als einzelnes Antwortobjekt zurückgegeben, anstatt als Stream von Objekten
Beispiele
Anfrage
shell
curl http://localhost:11434/api/push -d '{
"model": "mattw/pygmalion:latest"
}'Antwort
Wenn stream nicht angegeben oder auf true gesetzt ist, wird ein Stream von JSON-Objekten zurückgegeben:
json
{ "status": "retrieving manifest" }und anschließend:
json
{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}Anschließend folgt eine Reihe von Upload-Antworten:
json
{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}Schließlich, wenn der Upload abgeschlossen ist:
json
{"status":"pushing manifest"}
{"status":"success"}Wenn stream auf false gesetzt ist, ist die Antwort ein einzelnes JSON-Objekt:
json
{ "status": "success" }Embeddings generieren
POST /api/embedGeneriert Embeddings aus einem Modell
Parameter
model: Name des Modells, aus dem Embeddings generiert werden solleninput: Text oder Liste von Texten, für die Embeddings generiert werden sollen
Erweiterte Parameter:
truncate: Kürzt das Ende jeder Eingabe, damit sie in die Kontextlänge passt. Gibt einen Fehler zurück, wenn der Wertfalseist und die Kontextlänge überschritten wird. Standardmäßigtrueoptions: Zusätzliche Modellparameter, die in der Dokumentation für die Modelfile aufgeführt sind, z. B.temperaturekeep_alive: Steuert, wie lange das Modell nach der Anfrage im Speicher geladen bleibt (Standard:5m)dimensions: Anzahl der Dimensionen für das Embedding
Beispiele
Anfrage
shell
curl http://localhost:11434/api/embed -d '{
"model": "all-minilm",
"input": "Why is the sky blue?"
}'Antwort
json
{
"model": "all-minilm",
"embeddings": [
[
0.010071029, -0.0017594862, 0.05007221, 0.04692972, 0.054916814,
0.008599704, 0.105441414, -0.025878139, 0.12958129, 0.031952348
]
],
"total_duration": 14143917,
"load_duration": 1019500,
"prompt_eval_count": 8
}Anfrage (Mehrere Eingaben)
shell
curl http://localhost:11434/api/embed -d '{
"model": "all-minilm",
"input": ["Why is the sky blue?", "Why is the grass green?"]
}'Antwort
json
{
"model": "all-minilm",
"embeddings": [
[
0.010071029, -0.0017594862, 0.05007221, 0.04692972, 0.054916814,
0.008599704, 0.105441414, -0.025878139, 0.12958129, 0.031952348
],
[
-0.0098027075, 0.06042469, 0.025257962, -0.006364387, 0.07272725,
0.017194884, 0.09032035, -0.051705178, 0.09951512, 0.09072481
]
]
}Laufende Modelle auflisten
GET /api/psListet Modelle auf, die aktuell im Speicher geladen sind.
Beispiele
Anfrage
shell
curl http://localhost:11434/api/psAntwort
Es wird ein einzelnes JSON-Objekt zurückgegeben.
json
{
"models": [
{
"name": "mistral:latest",
"model": "mistral:latest",
"size": 5137025024,
"digest": "2ae6f6dd7a3dd734790bbbf58b8909a606e0e7e97e94b7604e0aa7ae4490e6d8",
"details": {
"parent_model": "",
"format": "gguf",
"family": "llama",
"families": ["llama"],
"parameter_size": "7.2B",
"quantization_level": "Q4_0"
},
"expires_at": "2024-06-04T14:38:31.83753-07:00",
"size_vram": 5137025024
}
]
}Embedding generieren
Hinweis: Dieser Endpunkt wurde durch
/api/embedersetzt
POST /api/embeddingsGeneriert Embeddings aus einem Modell
Parameter
model: Name des Modells, aus dem Embeddings generiert werden sollenprompt: Text, für den Embeddings generiert werden sollen
Erweiterte Parameter:
options: Zusätzliche Modellparameter, die in der Dokumentation für die Modelfile aufgeführt sind, z. B.temperaturekeep_alive: Steuert, wie lange das Modell nach der Anfrage im Speicher geladen bleibt (Standard:5m)
Beispiele
Anfrage
shell
curl http://localhost:11434/api/embeddings -d '{
"model": "all-minilm",
"prompt": "Here is an article about llamas..."
}'Antwort
json
{
"embedding": [
0.5670403838157654, 0.009260174818336964, 0.23178744316101074,
-0.2916173040866852, -0.8924556970596313, 0.8785552978515625,
-0.34576427936553955, 0.5742510557174683, -0.04222835972905159,
-0.137906014919281
]
}Version
GET /api/versionRuft die Ollama-Version ab
Beispiele
Anfrage
shell
curl http://localhost:11434/api/versionAntwort
json
{
"version": "0.5.1"
}Experimentelle Funktionen
Bildgenerierung (Experimentell)
WARNING
Die Bildgenerierung ist experimentell und kann sich in zukünftigen Versionen ändern.
Die Bildgenerierung wird jetzt über den Standard-Endpunkt /api/generate unterstützt, wenn Modelle zur Bildgenerierung verwendet werden. Die API erkennt automatisch, wenn ein Modell zur Bildgenerierung verwendet wird.
Siehe den Abschnitt Completion generieren für die vollständige API-Dokumentation. Die experimentellen Parameter für die Bildgenerierung (width, height, steps) sind dort dokumentiert.
Beispiel
Anfrage
shell
curl http://localhost:11434/api/generate -d '{
"model": "x/z-image-turbo",
"prompt": "a sunset over mountains",
"width": 1024,
"height": 768
}'Antwort (Streaming)
Fortschrittsaktualisierungen während der Generierung:
json
{
"model": "x/z-image-turbo",
"created_at": "2024-01-15T10:30:00.000000Z",
"completed": 5,
"total": 20,
"done": false
}Abschließende Antwort
json
{
"model": "x/z-image-turbo",
"created_at": "2024-01-15T10:30:15.000000Z",
"image": "iVBORw0KGgoAAAANSUhEUg...",
"done": true,
"done_reason": "stop",
"total_duration": 15000000000,
"load_duration": 2000000000
}