在开始正式的API调用之前,我门先来看一下一些基本的约定,以便我们更好的进行后面的的内容。
模型名称遵循 模型:标签
的格式,其中的模型可以有一个可选的命名空间,如example/model
。一些例子包括 orca-mini:3b-q4_1
和 llama3:70b
。标签是可选的,如果未提供,将默认为最新的。标签用于识别特定的版本。
某些端点以JSON对象形式流式传输响应,并可以选择性地返回非流式响应。
POST /api/generate
对给定的提示使用提供的模型生成响应。这是一个流式端点,所以会有一系列的响应。最终的响应对象将包含来自请求的统计数据和额外数据。
设置format参数为JSON,开启JSON模式。
这将把响应构造为一个有效的JSON对象。下面给出了JSON模式示例。
注意:重要的是要指示模型在提示符中使用JSON。否则,模型可能会产生大量的空白。
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Why is the sky blue?"
}'
返回一个JSON对象流
{
"model": "llama3",
"created_at": "2023-08-04T08:52:19.385406455-07:00",
"response": "The",
"done": false
}
流中的最终响应还包括关于生成的额外数据:
load_duration:加载模型所花费的纳秒时间
要计算生成响应的速度(以每秒令牌数(token/s)为单位),可以使用以下公式:eval_count / eval_duration * 10^9。
{
"model": "llama3",
"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
}
当流关闭时,可以在一个回复中接收响应。
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Why is the sky blue?",
"stream": false
}'
如果stream设置为false,则响应将是单个JSON对象
{
"model": "llama3",
"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
}
当format设置为json时,输出将始终是格式良好的json对象。指示模型以JSON进行响应也很重要。
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "What color is the sky at different times of the day? Respond using JSON",
"format": "json",
"stream": false
}'
{
"model": "llama3",
"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
}
response的值将是一个包含JSON的字符串
{
"morning": {
"color": "blue"
},
"noon": {
"color": "blue-gray"
},
"afternoon": {
"color": "warm gray"
},
"evening": {
"color": "orange"
}
}
powered by kaifamiao