Skip to content

API

Hinweis: Die API-Dokumentation von Ollama wird zu https://docs.ollama.com/api verschoben.

Endpunkte

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/generate

Generiert 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 Modellname
  • prompt: Der Prompt, für den eine Antwort generiert werden soll
  • suffix: Der Text nach der Modellantwort
  • images: (optional) Eine Liste von base64-kodierten Bildern (für multimodale Modelle wie llava)
  • 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 kann json oder ein JSON-Schema sein
  • options: Zusätzliche Modellparameter, die in der Dokumentation für die Modelfile aufgelistet sind, wie z. B. temperature
  • system: Systemnachricht (überschreibt die im Modelfile definierte Einstellung)
  • template: Die zu verwendende Prompt-Vorlage (überschreibt die im Modelfile definierte Einstellung)
  • stream: Wenn auf false gesetzt, wird die Antwort als einzelnes Antwortobjekt zurückgegeben, statt als Stream von Objekten
  • raw: Wenn auf true gesetzt, wird keine Formatierung auf den Prompt angewendet. Sie können den raw-Parameter verwenden, wenn Sie in Ihrer Anfrage an die API einen vollständigen, vorlagenbasierten Prompt angeben
  • keep_alive: Steuert, wie lange das Modell nach der Anfrage im Speicher geladen bleibt (Standard: 5m)
  • context (veraltet): Der context-Parameter, der von einer vorherigen Anfrage an /generate zurü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 Pixeln
  • height: Höhe des generierten Bildes in Pixeln
  • steps: 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 wurde
  • load_duration: Zeit in Nanosekunden, die für das Laden des Modells aufgewendet wurde
  • prompt_eval_count: Anzahl der Token im Prompt
  • prompt_eval_duration: Zeit in Nanosekunden, die für die Auswertung des Prompts aufgewendet wurde
  • eval_count: Anzahl der Token in der Antwort
  • eval_duration: Zeit in Nanosekunden, die für die Generierung der Antwort aufgewendet wurde
  • context: Eine Kodierung des in dieser Antwort verwendeten Gesprächs. Diese kann in der nächsten Anfrage gesendet werden, um ein Gesprächsgedächtnis zu behalten
  • response: 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/chat

Generiert 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 Modellname
  • messages: Die Nachrichten des Chats, dies kann verwendet werden, um einen Chat-Verlauf zu speichern
  • tools: Liste von Tools im JSON-Format, die das Modell verwenden kann, falls unterstützt
  • 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.

Das message-Objekt hat die folgenden Felder:

  • role: Die Rolle der Nachricht, entweder system, user, assistant oder tool
  • content: Der Inhalt der Nachricht
  • thinking: (für Denk-Modelle) Der Denkprozess des Modells
  • images (optional): Eine Liste von Bildern, die in die Nachricht eingefügt werden sollen (für multimodale Modelle wie llava)
  • tool_calls (optional): Eine Liste von Tools im JSON-Format, die das Modell verwenden möchte
  • tool_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 kann json oder 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. temperature
  • stream: Wenn false, wird die Antwort als einzelnes Antwortobjekt zurückgegeben, statt als Stream von Objekten
  • keep_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/create

Ein 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 Modells
  • from: (optional) Name eines vorhandenen Modells, von dem das neue Modell abgeleitet wird
  • files: (optional) Ein Dictionary aus Dateinamen und den zugehörigen SHA256-Hashes von Blobs, aus denen das Modell erstellt werden soll
  • adapters: (optional) Ein Dictionary aus Dateinamen und den zugehörigen SHA256-Hashes von Blobs für LORA-Adapter
  • template: (optional) Die Prompt-Vorlage für das Modell
  • renderer: (optional) Der Name des Renderers für das Modell
  • parser: (optional) Der Name des Parsers für das Modell
  • license: (optional) Eine Zeichenkette oder Liste von Zeichenketten, die die Lizenz oder Lizenzen des Modells enthält
  • system: (optional) Eine Zeichenkette, die den System-Prompt für das Modell enthält
  • parameters: (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 werden
  • stream: (optional) Wenn auf false gesetzt, wird die Antwort als einzelnes Antwortobjekt zurückgegeben, statt als Stream von Objekten
  • quantize (optional): Quantisieren Sie ein nicht quantisiertes (z. B. float16) Modell

Quantisierungstypen

TypeRecommended
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/:digest

Stellt 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:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2

Antwort

Gibt 200 OK zurück, wenn der Blob existiert, andernfalls 404 Not Found.

Blob hochladen

POST /api/blobs/:digest

Lade 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:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2

Antwort

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/tags

Listet Modelle auf, die lokal verfügbar sind.

Beispiele

Anfrage

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

Antwort

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/show

Zeigt Informationen zu einem Modell an, einschließlich Details, Modelfile, Vorlage, Parameter, Lizenz und System-Prompt.

Parameter

  • model: Name des anzuzeigenden Modells
  • verbose: (optional) Wenn auf true gesetzt, 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/copy

Kopiert 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/delete

Lö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/pull

Lä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 Modells
  • insecure: (optional) Erlaubt unsichere Verbindungen zur Bibliothek. Verwende dies nur, wenn du während der Entwicklung von deiner eigenen Bibliothek herunterlädst.
  • stream: (optional) Wenn auf false gesetzt, 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/push

Lä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 auf false gesetzt, 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/embed

Generiert Embeddings aus einem Modell

Parameter

  • model: Name des Modells, aus dem Embeddings generiert werden sollen
  • input: 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 Wert false ist und die Kontextlänge überschritten wird. Standardmäßig true
  • options: Zusätzliche Modellparameter, die in der Dokumentation für die Modelfile aufgeführt sind, z. B. temperature
  • keep_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/ps

Listet Modelle auf, die aktuell im Speicher geladen sind.

Beispiele

Anfrage

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

Antwort

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/embed ersetzt

POST /api/embeddings

Generiert Embeddings aus einem Modell

Parameter

  • model: Name des Modells, aus dem Embeddings generiert werden sollen
  • prompt: 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. temperature
  • keep_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/version

Ruft die Ollama-Version ab

Beispiele

Anfrage

shell
curl http://localhost:11434/api/version

Antwort

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
}