开发喵星球

Ollama API调用之生成补全

Ollama API调用之生成补全

基本约定

在开始正式的API调用之前,我门先来看一下一些基本的约定,以便我们更好的进行后面的的内容。

模型名称

模型名称遵循 模型:标签 的格式,其中的模型可以有一个可选的命名空间,如example/model 。一些例子包括 orca-mini:3b-q4_1llama3:70b 。标签是可选的,如果未提供,将默认为最新的。标签用于识别特定的版本。

流式响应

某些端点以JSON对象形式流式传输响应,并可以选择性地返回非流式响应。

生成补全

POST /api/generate

对给定的提示使用提供的模型生成响应。这是一个流式端点,所以会有一系列的响应。最终的响应对象将包含来自请求的统计数据和额外数据。

参数

高级参数(可选)

JSON模式

设置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
}

流中的最终响应还包括关于生成的额外数据:

要计算生成响应的速度(以每秒令牌数(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
}

请求(JSON模式)

当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"
  }
}
   
分类:玩技术 作者:荡荡, 浩浩 发表于:2024-05-17 14:54:21 阅读量:294
<<   >>


powered by kaifamiao