API
Lưu ý: Tài liệu API của Ollama đang được chuyển đến https://docs.ollama.com/api
Điểm cuối
- Tạo hoàn thành
- Tạo hoàn thành trò chuyện
- Tạo mô hình
- Liệt kê mô hình cục bộ
- Hiển thị thông tin mô hình
- Sao chép mô hình
- Xóa mô hình
- Kéo mô hình
- Đẩy mô hình
- Tạo embedding
- Liệt kê mô hình đang chạy
- Phiên bản
- Thử nghiệm: Tạo hình ảnh
Quy ước
Tên mô hình
Tên mô hình theo định dạng model:tag, trong đó model có thể có không gian tên tùy chọn như example/model. Một số ví dụ là orca-mini:3b-q8_0 và llama3:70b. Tag là tùy chọn và nếu không được cung cấp, sẽ mặc định là latest. Tag được sử dụng để xác định một phiên bản cụ thể.
Thời lượng
Tất cả các giá trị thời lượng đều được trả về bằng đơn vị nano giây.
Phản hồi luồng
Một số endpoint nhất định sẽ trả về phản hồi dưới dạng các đối tượng JSON theo luồng. Bạn có thể tắt tính năng phản hồi luồng bằng cách cung cấp {"stream": false} cho các endpoint này.
Tạo hoàn thành
POST /api/generateTạo một phản hồi cho một prompt nhất định với mô hình được cung cấp. Đây là một endpoint phản hồi luồng, do đó sẽ có một chuỗi các phản hồi. Đối tượng phản hồi cuối cùng sẽ bao gồm các số liệu thống kê và dữ liệu bổ sung từ yêu cầu.
Tham số
model: (bắt buộc) tên mô hìnhprompt: prompt để tạo phản hồisuffix: văn bản đứng sau phản hồi của mô hìnhimages: (tùy chọn) danh sách các hình ảnh được mã hóa base64 (dành cho các mô hình đa phương thức nhưllava)think: (dành cho các mô hình có khả năng suy luận) mô hình có nên suy luận trước khi phản hồi không? Có thể là giá trị boolean hoặc mức độ suy luận ("low","medium","high"hoặc"max").
Các tham số nâng cao (tùy chọn):
format: định dạng trả về phản hồi. Định dạng có thể làjsonhoặc một schema JSONoptions: các tham số mô hình bổ sung được liệt kê trong tài liệu của Modelfile nhưtemperaturesystem: tin nhắn hệ thống (ghi đè lên nội dung được định nghĩa trongModelfile)template: mẫu prompt sử dụng (ghi đè lên nội dung được định nghĩa trongModelfile)stream: nếu đặt làfalse, phản hồi sẽ được trả về dưới dạng một đối tượng phản hồi đơn lẻ, thay vì một luồng các đối tượngraw: nếu đặt làtrue, sẽ không áp dụng bất kỳ định dạng nào cho prompt. Bạn có thể sử dụng tham sốrawnếu bạn đang chỉ định một prompt mẫu đầy đủ trong yêu cầu gửi đến APIkeep_alive: điều chỉnh thời gian mô hình sẽ được giữ trong bộ nhớ sau khi yêu cầu hoàn tất (mặc định:5m)context(đã lỗi thời): tham số ngữ cảnh được trả về từ yêu cầu trước đó đến/generate, tham số này có thể được sử dụng để lưu trữ bộ nhớ hội thoại ngắn
Các tham số tạo hình ảnh thử nghiệm (chỉ dành cho các mô hình tạo hình ảnh):
WARNING
Các tham số này ở trạng thái thử nghiệm và có thể thay đổi trong các phiên bản sau.
width: chiều rộng của hình ảnh được tạo, tính bằng pixelheight: chiều cao của hình ảnh được tạo, tính bằng pixelsteps: số bước khuếch tán
Đầu ra có cấu trúc
Đầu ra có cấu trúc được hỗ trợ bằng cách cung cấp một schema JSON trong tham số format. Mô hình sẽ tạo ra phản hồi phù hợp với schema đó. Xem ví dụ về đầu ra có cấu trúc bên dưới.
Chế độ JSON
Bật chế độ JSON bằng cách đặt tham số format thành json. Thao tác này sẽ cấu trúc phản hồi thành một đối tượng JSON hợp lệ. Xem ví dụ về chế độ JSON bên dưới.
IMPORTANT
Bạn cần chỉ dẫn mô hình sử dụng JSON trong trường prompt. Nếu không, mô hình có thể tạo ra một lượng lớn khoảng trắng.
Ví dụ
Yêu cầu tạo phản hồi (Luồng)
Yêu cầu
shell
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?"
}'Phản hồi
Một luồng các đối tượng JSON được trả về:
json
{
"model": "llama3.2",
"created_at": "2023-08-04T08:52:19.385406455-07:00",
"response": "The",
"done": false
}Phản hồi cuối cùng trong luồng cũng bao gồm các dữ liệu bổ sung về quá trình tạo phản hồi:
total_duration: tổng thời gian dùng để tạo phản hồiload_duration: thời gian dùng để tải mô hình, tính bằng nano giâyprompt_eval_count: số lượng token trong promptprompt_eval_duration: thời gian dùng để đánh giá prompt, tính bằng nano giâyeval_count: số lượng token trong phản hồieval_duration: thời gian dùng để tạo phản hồi, tính bằng nano giâycontext: mã hóa của cuộc hội thoại được sử dụng trong phản hồi này, có thể được gửi trong yêu cầu tiếp theo để lưu trữ bộ nhớ hội thoạiresponse: rỗng nếu phản hồi được trả về theo luồng, nếu không trả về theo luồng, trường này sẽ chứa toàn bộ nội dung phản hồi
Để tính tốc độ tạo phản hồi tính bằng token trên giây (token/s), hãy lấy eval_count chia cho eval_duration rồi nhân với 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
}Yêu cầu (Không luồng)
Yêu cầu
Bạn có thể nhận phản hồi trong một lần trả về khi tắt tính năng phản hồi luồng.
shell
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?",
"stream": false
}'Phản hồi
Nếu stream được đặt thành false, phản hồi sẽ là một đối tượng JSON đơn lẻ:
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
}Yêu cầu (có suffix)
Yêu cầu
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
}'Phản hồi
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
}Yêu cầu (Đầu ra có cấu trúc)
Yêu cầu
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"
]
}
}'Phản hồi
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
}Yêu cầu (Chế độ JSON)
IMPORTANT
Khi format được đặt thành json, đầu ra sẽ luôn là một đối tượng JSON hợp lệ. Bạn cần chỉ dẫn mô hình phản hồi bằng định dạng JSON.
Yêu cầu
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
}'Phản hồi
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
}Giá trị của trường response sẽ là một chuỗi chứa JSON tương tự như:
json
{
"morning": {
"color": "blue"
},
"noon": {
"color": "blue-gray"
},
"afternoon": {
"color": "warm gray"
},
"evening": {
"color": "orange"
}
}Yêu cầu (có hình ảnh)
Để gửi hình ảnh đến các mô hình đa phương thức như llava hoặc bakllava, hãy cung cấp danh sách trường images được mã hóa base64:
Yêu cầu
shell
curl http://localhost:11434/api/generate -d '{
"model": "llava",
"prompt":"What is in this picture?",
"stream": false,
"images": ["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"]
}'Phản hồi
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
}Yêu cầu (Chế độ Raw)
Trong một số trường hợp, bạn có thể muốn bỏ qua hệ thống mẫu prompt và cung cấp một prompt đầy đủ. Trong trường hợp này, bạn có thể sử dụng tham số raw để tắt tính năng sử dụng mẫu prompt. Lưu ý rằng chế độ raw sẽ không trả về ngữ cảnh (context).
Yêu cầu
shell
curl http://localhost:11434/api/generate -d '{
"model": "mistral",
"prompt": "[INST] why is the sky blue? [/INST]",
"raw": true,
"stream": false
}'Yêu cầu (Đầu ra có thể tái tạo)
Để có đầu ra có thể tái tạo, hãy đặt tham số seed thành một số nguyên:
Yêu cầu
shell
curl http://localhost:11434/api/generate -d '{
"model": "mistral",
"prompt": "Why is the sky blue?",
"options": {
"seed": 123
}
}'Phản hồi
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
}Yêu cầu tạo phản hồi (có tham số tùy chọn)
Nếu bạn muốn đặt các tùy chọn tùy chỉnh cho mô hình tại thời điểm chạy thay vì trong Modelfile, bạn có thể thực hiện thao tác này bằng tham số options. Ví dụ này đặt tất cả các tùy chọn có sẵn, nhưng bạn có thể đặt từng tùy chọn một và bỏ qua các tùy chọn bạn không muốn ghi đè.
Yêu cầu
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
}
}'Phản hồi
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
}Tải mô hình
Nếu bạn cung cấp một prompt rỗng, mô hình sẽ được tải vào bộ nhớ.
Yêu cầu
shell
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2"
}'Phản hồi
Một đối tượng JSON đơn lẻ được trả về:
json
{
"model": "llama3.2",
"created_at": "2023-12-18T19:52:07.071755Z",
"response": "",
"done": true
}Gỡ tải mô hình
Nếu bạn cung cấp một prompt rỗng và đặt tham số keep_alive thành 0, mô hình sẽ được gỡ tải khỏi bộ nhớ.
Yêu cầu
shell
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"keep_alive": 0
}'Phản hồi
Một đối tượng JSON đơn lẻ được trả về:
json
{
"model": "llama3.2",
"created_at": "2024-09-12T03:54:03.516566Z",
"response": "",
"done": true,
"done_reason": "unload"
}Tạo một hoàn thành trò chuyện
POST /api/chatTạo tin nhắn tiếp theo trong một cuộc trò chuyện với mô hình được cung cấp. Đây là một điểm cuối phát trực tiếp, vì vậy sẽ có một loạt các phản hồi. Phát trực tiếp có thể bị vô hiệu hóa bằng cách sử dụng "stream": false. Đối tượng phản hồi cuối cùng sẽ bao gồm số liệu thống kê và dữ liệu bổ sung từ yêu cầu.
Tham số
model: (bắt buộc) tên mô hìnhmessages: các tin nhắn của cuộc trò chuyện, điều này có thể được sử dụng để lưu trữ bộ nhớ trò chuyệntools: danh sách công cụ ở định dạng JSON để mô hình sử dụng nếu được hỗ trợthink: (dành cho các mô hình suy luận) mô hình có nên suy luận trước khi phản hồi không? Có thể là một giá trị boolean hoặc mức độ suy luận ("low","medium","high", hoặc"max").
Đối tượng message có các trường sau:
role: vai trò của tin nhắn, có thể làsystem,user,assistant, hoặctoolcontent: nội dung của tin nhắnthinking: (dành cho các mô hình suy luận) quá trình suy luận của mô hìnhimages(tùy chọn): danh sách hình ảnh để đưa vào tin nhắn (dành cho các mô hình đa phương thức nhưllava)tool_calls(tùy chọn): danh sách công cụ ở định dạng JSON mà mô hình muốn sử dụngtool_name(tùy chọn): thêm tên của công cụ đã được thực thi để thông báo cho mô hình biết kết quả
Tham số nâng cao (tùy chọn):
format: định dạng để trả về phản hồi. Định dạng có thể làjsonhoặc một lược đồ JSON.options: các tham số mô hình bổ sung được liệt kê trong tài liệu cho [Modelfile](. /modelfile. mdx#valid-parameters-and-values) nhưtemperaturestream: nếu làfalsephản hồi sẽ được trả về như một đối tượng phản hồi duy nhất, thay vì một luồng các đối tượngkeep_alive: kiểm soát thời gian mô hình sẽ được giữ trong bộ nhớ sau yêu cầu (mặc định:5m)
Gọi công cụ
Gọi công cụ được hỗ trợ bằng cách cung cấp một danh sách công cụ trong tham số tools. Mô hình sẽ tạo ra một phản hồi bao gồm danh sách các lệnh gọi công cụ. Xem ví dụ Yêu cầu trò chuyện (Phát trực tiếp với công cụ) bên dưới. Các mô hình cũng có thể giải thích kết quả của lệnh gọi công cụ trong phản hồi. Xem ví dụ Yêu cầu trò chuyện (Với lịch sử, với công cụ) bên dưới. [Xem các mô hình có khả năng gọi công cụ](https://ollama. com/search? c=tool).
Đầu ra có cấu trúc
Các đầu ra có cấu trúc được hỗ trợ bằng cách cung cấp một lược đồ JSON trong tham số format. Mô hình sẽ tạo ra một phản hồi khớp với lược đồ. Xem ví dụ Yêu cầu trò chuyện (Đầu ra có cấu trúc) bên dưới.
Ví dụ
Yêu cầu trò chuyện (Phát trực tiếp)
Yêu cầu
Gửi một tin nhắn trò chuyện với phản hồi phát trực tiếp. ```shell curl http://localhost:11434/api/chat -d '{ "model": "llama3. 2", "messages": [ { "role": "user", "content": "why is the sky blue? " } ] }'
##### Phản hồi
Một luồng các đối tượng JSON được trả về:
```json
{
"model": "llama3. 2",
"created_at": "2023-08-04T08:52:19. 385406455-07:00",
"message": {
"role": "assistant",
"content": "The",
"images": null
},
"done": false
}Phản hồi cuối cùng:
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
}Yêu cầu trò chuyện (Phát trực tiếp với công cụ)
Yêu cầu
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": "Lấy thời tiết ở một thành phố nhất định",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Thành phố cần lấy thời tiết"
}
},
"required": ["city"]
}
}
}
],
"stream": true
}'Phản hồi
Một luồng các đối tượng JSON được trả về:
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
}Phản hồi cuối cùng:
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
}Yêu cầu trò chuyện (Không phát trực tiếp)
Yêu cầu
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [
{
"role": "user",
"content": "why is the sky blue? "
}
],
"stream": false
}'Phản hồi
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
}Yêu cầu trò chuyện (Không phát trực tiếp, với công cụ)
Yêu cầu
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": "Lấy thời tiết ở một thành phố nhất định",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Thành phố cần lấy thời tiết"
}
},
"required": ["city"]
}
}
}
],
"stream": false
}'Phản hồi
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
}Yêu cầu trò chuyện (Đầu ra có cấu trúc)
Yêu cầu
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
}
}'Phản hồi
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
}Yêu cầu trò chuyện (Với lịch sử)
Gửi một tin nhắn trò chuyện với lịch sử cuộc trò chuyện. Bạn có thể sử dụng cùng phương pháp này để bắt đầu cuộc trò chuyện bằng cách sử dụng multi-shot hoặc chain-of-thought prompting.
Yêu cầu
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? "
}
]
}'Phản hồi
Một luồng các đối tượng JSON được trả về:
json
{
"model": "llama3. 2",
"created_at": "2023-08-04T08:52:19. 385406455-07:00",
"message": {
"role": "assistant",
"content": "The"
},
"done": false
}Phản hồi cuối cùng:
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
}Yêu cầu trò chuyện (Với lịch sử, với công cụ)
Yêu cầu
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [
{
"role": "user",
"content": "what is the weather in Toronto? "
},
// tin nhắn từ mô hình được thêm vào lịch sử
{
"role": "assistant",
"content": "",
"tool_calls": [
{
"function": {
"name": "get_weather",
"arguments": {
"city": "Toronto"
}
}
}
]
},
// kết quả lệnh gọi công cụ được thêm vào lịch sử
{
"role": "tool",
"content": "11 degrees celsius",
"tool_name": "get_weather"
}
],
"stream": false,
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Lấy thời tiết ở một thành phố nhất định",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Thành phố cần lấy thời tiết"
}
},
"required": ["city"]
}
}
}
]
}'Phản hồi
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
}Yêu cầu trò chuyện (với hình ảnh)
Yêu cầu
Gửi một tin nhắn trò chuyện với hình ảnh. Các hình ảnh nên được cung cấp dưới dạng mảng, với từng hình ảnh được mã hóa ở định dạng Base64. ```shell curl http://localhost:11434/api/chat -d '{ "model": "llava", "messages": [ { "role": "user", "content": "what is in this image?
json
,
"images": ["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"]
}
]
}'Phản hồi
json
{
"model": "llava",
"created_at": "2023-12-13T22:42:50. 203334Z",
"message": {
"role": "assistant",
"content": " The image features a cute, little pig with an angry facial expression. It's wearing a heart on its shirt and is waving in the air. This scene appears to be part of a drawing or sketching project. ",
"images": null
},
"done": true,
"total_duration": 1668506709,
"load_duration": 1986209,
"prompt_eval_count": 26,
"prompt_eval_duration": 359682000,
"eval_count": 83,
"eval_duration": 1303285000
}Yêu cầu trò chuyện (Đầu ra có thể tái tạo)
Yêu cầu
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [
{
"role": "user",
"content": "Hello! "
}
],
"options": {
"seed": 101,
"temperature": 0
}
}'Phản hồi
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
}Yêu cầu trò chuyện (với công cụ)
Yêu cầu
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": "Get the current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The location to get the weather for, e. g. San Francisco, CA"
},
"format": {
"type": "string",
"description": "The format to return the weather in, e. g. 'celsius' or 'fahrenheit'",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location", "format"]
}
}
}
]
}'Phản hồi
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
}Tải mô hình
Nếu mảng messages trống, mô hình sẽ được tải vào bộ nhớ. ##### Yêu cầu
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": []
}'Phản hồi
json
{
"model": "llama3. 2",
"created_at": "2024-09-12T21:17:29. 110811Z",
"message": {
"role": "assistant",
"content": ""
},
"done_reason": "load",
"done": true
}Gỡ tải mô hình
Nếu mảng messages trống và tham số keep_alive được đặt thành 0, mô hình sẽ được gỡ tải khỏi bộ nhớ. ##### Yêu cầu
shell
curl http://localhost:11434/api/chat -d '{
"model": "llama3. 2",
"messages": [],
"keep_alive": 0
}'Một đối tượng JSON duy nhất được trả về:
json
{
"model": "llama3. 2",
"created_at": "2024-09-12T21:33:17. 547535Z",
"message": {
"role": "assistant",
"content": ""
},
"done_reason": "unload",
"done": true
}Phản hồi
Tạo Mô hình
POST /api/createTạo mô hình từ:
- một mô hình khác;
- một thư mục safetensors; hoặc
- một tệp GGUF.
Nếu bạn đang tạo mô hình từ một thư mục safetensors hoặc từ một tệp GGUF, bạn phải tạo một blob cho mỗi tệp và sau đó sử dụng tên tệp và giá trị băm SHA256 liên kết với mỗi blob trong trường files.
Parameters
model: tên của mô hình cần tạofrom: (tùy chọn) tên của một mô hình hiện có để tạo mô hình mới từ đófiles: (tùy chọn) một từ điển ánh xạ tên tệp sang giá trị băm SHA256 của các blob để tạo mô hình từ đóadapters: (tùy chọn) một từ điển ánh xạ tên tệp sang giá trị băm SHA256 của các blob dùng cho bộ điều hợp LORAtemplate: (tùy chọn) mẫu prompt cho mô hìnhrenderer: (tùy chọn) tên của trình kết xuất cho mô hìnhparser: (tùy chọn) tên của bộ phân tích cú pháp cho mô hìnhlicense: (tùy chọn) một chuỗi hoặc danh sách các chuỗi chứa giấy phép hoặc các giấy phép của mô hìnhsystem: (tùy chọn) một chuỗi chứa prompt hệ thống cho mô hìnhparameters: (tùy chọn) một từ điển các tham số cho mô hình (xem Modelfile để biết danh sách các tham số)messages: (tùy chọn) một danh sách các đối tượng tin nhắn dùng để tạo một cuộc hội thoạistream: (tùy chọn) nếu làfalsephản hồi sẽ được trả về dưới dạng một đối tượng phản hồi duy nhất, thay vì một luồng các đối tượngquantize(tùy chọn): lượng tử hóa một mô hình chưa được lượng tử hóa (ví dụ: float16)
Quantization types
| Type | Recommended |
|---|---|
| q4_K_M | * |
| q4_K_S | |
| q8_0 | * |
Examples
Tạo mô hình mới
Tạo một mô hình mới từ một mô hình hiện có.
Request
shell
curl http://localhost:11434/api/create -d '{
"model": "mario",
"from": "llama3.2",
"system": "You are Mario from Super Mario Bros."
}'Response
Một luồng các đối tượng JSON được trả về:
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"}Lượng tử hóa mô hình
Lượng tử hóa một mô hình chưa được lượng tử hóa.
Request
shell
curl http://localhost:11434/api/create -d '{
"model": "llama3.2:quantized",
"from": "llama3.2:3b-instruct-fp16",
"quantize": "q4_K_M"
}'Response
Một luồng các đối tượng JSON được trả về:
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"}Tạo mô hình từ GGUF
Tạo mô hình từ một tệp GGUF. Tham số files cần được điền với tên tệp và giá trị băm SHA256 của tệp GGUF bạn muốn sử dụng. Sử dụng /api/blobs/:digest để đẩy tệp GGUF lên máy chủ trước khi gọi API này.
Request
shell
curl http://localhost:11434/api/create -d '{
"model": "my-gguf-model",
"files": {
"test.gguf": "sha256:432f310a77f4650a88d0fd59ecdd7cebed8d684bafea53cbff0473542964f0c3"
}
}'Response
Một luồng các đối tượng JSON được trả về:
json
{"status":"parsing GGUF"}
{"status":"using existing layer sha256:432f310a77f4650a88d0fd59ecdd7cebed8d684bafea53cbff0473542964f0c3"}
{"status":"writing manifest"}
{"status":"success"}Tạo mô hình từ một thư mục Safetensors
Tham số files cần bao gồm một từ điển các tệp cho mô hình safetensors, bao gồm tên tệp và giá trị băm SHA256 của mỗi tệp. Sử dụng /api/blobs/:digest để đẩy từng tệp lên máy chủ trước khi gọi API này. Các tệp sẽ được lưu trong bộ nhớ đệm cho đến khi máy chủ Ollama được khởi động lại.
Request
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"
}
}'Response
Một luồng các đối tượng JSON được trả về:
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"}Kiểm tra xem Blob có tồn tại không
shell
HEAD /api/blobs/:digestĐảm bảo rằng file blob (Binary Large Object - Đối tượng Nhị phân Lớn) được dùng để tạo mô hình tồn tại trên máy chủ. Thao tác này kiểm tra máy chủ Ollama của bạn chứ không phải ollama.com.
Tham số truy vấn
digest: giá trị băm SHA256 của blob
Ví dụ
Yêu cầu
shell
curl -I http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2Phản hồi
Trả về 200 OK nếu blob tồn tại, 404 Not Found nếu không tồn tại.
Đẩy Blob lên
POST /api/blobs/:digestĐẩy một file lên máy chủ Ollama để tạo một "blob" (Đối tượng Nhị phân Lớn).
Tham số truy vấn
digest: giá trị băm SHA256 mong đợi của file
Ví dụ
Yêu cầu
shell
curl -T model.gguf -X POST http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2Phản hồi
Trả về 201 Created nếu blob được tạo thành công, 400 Bad Request nếu giá trị băm được sử dụng không khớp với mong đợi.
Liệt kê các Mô hình Cục bộ
GET /api/tagsLiệt kê các mô hình có sẵn trên máy cục bộ.
Ví dụ
Yêu cầu
shell
curl http://localhost:11434/api/tagsPhản hồi
Một đối tượng JSON duy nhất sẽ được trả về.
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"
}
}
]
}Hiển thị Thông tin Mô hình
POST /api/showHiển thị thông tin về một mô hình bao gồm chi tiết, file mô hình (modelfile), mẫu (template), tham số, giấy phép, lời nhắc hệ thống.
Tham số
model: tên của mô hình cần hiển thịverbose: (tùy chọn) nếu đặt thànhtrue, trả về toàn bộ dữ liệu cho các trường phản hồi chi tiết
Ví dụ
Yêu cầu
shell
curl http://localhost:11434/api/show -d '{
"model": "llava"
}'Phản hồi
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"],
}Sao chép Mô hình
POST /api/copySao chép một mô hình. Tạo một mô hình có tên khác từ một mô hình đã có sẵn.
Ví dụ
Yêu cầu
shell
curl http://localhost:11434/api/copy -d '{
"source": "llama3.2",
"destination": "llama3-backup"
}'Phản hồi
Trả về 200 OK nếu thành công, hoặc 404 Not Found nếu mô hình nguồn không tồn tại.
Xóa Mô hình
DELETE /api/deleteXóa một mô hình và toàn bộ dữ liệu của nó.
Tham số
model: tên mô hình cần xóa
Ví dụ
Yêu cầu
shell
curl -X DELETE http://localhost:11434/api/delete -d '{
"model": "llama3:13b"
}'Phản hồi
Trả về 200 OK nếu thành công, 404 Not Found nếu mô hình cần xóa không tồn tại.
Kéo Mô hình về
POST /api/pullTải xuống một mô hình từ thư viện ollama. Các lần kéo bị hủy sẽ được tiếp tục từ vị trí dừng lại, và nhiều lần gọi sẽ chia sẻ cùng tiến độ tải xuống.
Tham số
model: tên của mô hình cần kéo vềinsecure: (tùy chọn) cho phép kết nối không bảo mật đến thư viện. Chỉ sử dụng tham số này nếu bạn đang kéo mô hình từ thư viện riêng của mình trong quá trình phát triển.stream: (tùy chọn) nếu đặt thànhfalse, phản hồi sẽ được trả về dưới dạng một đối tượng phản hồi duy nhất, thay vì một luồng các đối tượng
Ví dụ
Yêu cầu
shell
curl http://localhost:11434/api/pull -d '{
"model": "llama3.2"
}'Phản hồi
Nếu stream không được chỉ định, hoặc đặt thành true, một luồng các đối tượng JSON sẽ được trả về:
Đối tượng đầu tiên là manifest (định nghĩa mô hình):
json
{
"status": "pulling manifest"
}Sau đó là một loạt các phản hồi tải xuống. Cho đến khi một phần của quá trình tải xuống hoàn thành, khóa completed có thể không được bao gồm. Số lượng file cần tải xuống phụ thuộc vào số lượng lớp được chỉ định trong manifest.
json
{
"status": "pulling digestname",
"digest": "digestname",
"total": 2142590208,
"completed": 241970
}Sau khi tất cả các file được tải xuống, các phản hồi cuối cùng là:
json
{
"status": "verifying sha256 digest"
}
{
"status": "writing manifest"
}
{
"status": "removing any unused layers"
}
{
"status": "success"
}Nếu stream được đặt thành false, thì phản hồi là một đối tượng JSON duy nhất:
json
{
"status": "success"
}Đẩy Mô hình lên
POST /api/pushTải lên một mô hình đến thư viện mô hình. Yêu cầu đăng ký tài khoản ollama.ai và thêm khóa công khai trước.
Tham số
model: tên của mô hình cần đẩy lên theo định dạng<namespace>/<model>:<tag>insecure: (tùy chọn) cho phép kết nối không bảo mật đến thư viện. Chỉ sử dụng tham số này nếu bạn đang đẩy mô hình lên thư viện riêng của mình trong quá trình phát triển.stream: (tùy chọn) nếu đặt thànhfalse, phản hồi sẽ được trả về dưới dạng một đối tượng phản hồi duy nhất, thay vì một luồng các đối tượng
Ví dụ
Yêu cầu
shell
curl http://localhost:11434/api/push -d '{
"model": "mattw/pygmalion:latest"
}'Phản hồi
Nếu stream không được chỉ định, hoặc đặt thành true, một luồng các đối tượng JSON sẽ được trả về:
json
{ "status": "retrieving manifest" }sau đó:
json
{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}Sau đó là một loạt các phản hồi tải lên:
json
{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}Cuối cùng, khi quá trình tải lên hoàn tất:
json
{"status":"pushing manifest"}
{"status":"success"}Nếu stream được đặt thành false, thì phản hồi là một đối tượng JSON duy nhất:
json
{ "status": "success" }Tạo Embedding (Nhúng Vectơ)
POST /api/embedTạo các embedding (nhúng vectơ) từ một mô hình
Tham số
model: tên mô hình để tạo embedding từ đóinput: văn bản hoặc danh sách văn bản để tạo embedding
Tham số nâng cao:
truncate: cắt phần cuối của mỗi đầu vào để vừa với độ dài ngữ cảnh. Trả về lỗi nếu đặt thànhfalsevà độ dài ngữ cảnh bị vượt quá. Giá trị mặc định làtrueoptions: các tham số mô hình bổ sung được liệt kê trong tài liệu cho Modelfile nhưtemperaturekeep_alive: điều khiển thời gian mô hình sẽ được giữ trong bộ nhớ sau khi yêu cầu được xử lý (mặc định:5m)dimensions: số chiều của embedding
Ví dụ
Yêu cầu
shell
curl http://localhost:11434/api/embed -d '{
"model": "all-minilm",
"input": "Why is the sky blue?"
}'Phản hồi
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
}Yêu cầu (Nhiều đầu vào)
shell
curl http://localhost:11434/api/embed -d '{
"model": "all-minilm",
"input": ["Why is the sky blue?", "Why is the grass green?"]
}'Phản hồi
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
]
]
}Liệt kê các Mô hình Đang chạy
GET /api/psLiệt kê các mô hình hiện đang được tải vào bộ nhớ.
Ví dụ
Yêu cầu
shell
curl http://localhost:11434/api/psPhản hồi
Một đối tượng JSON duy nhất sẽ được trả về.
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
}
]
}Tạo Embedding (Nhúng Vectơ)
Lưu ý: điểm cuối này đã được thay thế bằng
/api/embed
POST /api/embeddingsTạo các embedding (nhúng vectơ) từ một mô hình
Tham số
model: tên mô hình để tạo embedding từ đóprompt: văn bản để tạo embedding
Tham số nâng cao:
options: các tham số mô hình bổ sung được liệt kê trong tài liệu cho Modelfile nhưtemperaturekeep_alive: điều khiển thời gian mô hình sẽ được giữ trong bộ nhớ sau khi yêu cầu được xử lý (mặc định:5m)
Ví dụ
Yêu cầu
shell
curl http://localhost:11434/api/embeddings -d '{
"model": "all-minilm",
"prompt": "Here is an article about llamas..."
}'Phản hồi
json
{
"embedding": [
0.5670403838157654, 0.009260174818336964, 0.23178744316101074,
-0.2916173040866852, -0.8924556970596313, 0.8785552978515625,
-0.34576427936553955, 0.5742510557174683, -0.04222835972905159,
-0.137906014919281
]
}Phiên bản
GET /api/versionLấy phiên bản của Ollama
Ví dụ
Yêu cầu
shell
curl http://localhost:11434/api/versionPhản hồi
json
{
"version": "0.5.1"
}Tính năng Thử nghiệm
Tạo ảnh (Thử nghiệm)
[!CẢNH BÁO] Tính năng tạo ảnh đang ở trạng thái thử nghiệm và có thể thay đổi trong các phiên bản sau.
Tạo ảnh hiện được hỗ trợ thông qua điểm cuối tiêu chuẩn /api/generate khi sử dụng các mô hình tạo ảnh. API sẽ tự động phát hiện khi đang sử dụng mô hình tạo ảnh.
Xem phần Tạo hoàn thành văn bản để có tài liệu API đầy đủ. Các tham số tạo ảnh thử nghiệm (width, height, steps) được ghi chú tại đó.
Ví dụ
Yêu cầu
shell
curl http://localhost:11434/api/generate -d '{
"model": "x/z-image-turbo",
"prompt": "a sunset over mountains",
"width": 1024,
"height": 768
}'Phản hồi (luồng)
Cập nhật tiến độ trong quá trình tạo ảnh:
json
{
"model": "x/z-image-turbo",
"created_at": "2024-01-15T10:30:00.000000Z",
"completed": 5,
"total": 20,
"done": false
}Phản hồi cuối cùng
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
}