开发喵星球

Ollama 生成结构化输出

Ollama 生成结构化输出

步骤 1:docker-compose.yml

首先,定义拉取 Ollama 的 docker 镜像的要求。docker-compose.yml使用以下代码创建一个文件。

services:
  ollama:
    image: ollama/ollama:latest
    restart: always
    ports:
      - "8080:11434"

注意:如果您之前拉取过 Ollama 的镜像,请确保使用 删除之前的镜像docker rmi ollama/ollama,以便在运行 docker compose 文件时拉取最新的镜像。

最后,使用 启动容器docker compose up --build -d

第 2 步:拉动模型

一旦启动了容器,现在就该提取所需的模型了。为此,我们需要使用 进入容器docker exec -it <Container's Name> bash。将“容器名称”替换为容器的名称。这将启动一个交互式 bash shell 终端。

从此 shell 中,要获取所需的模型,请使用命令ollama pull <Model Name>。将“模型名称”替换为所需模型的名称。对于本教程,我使用的是llama3.2:latest

一旦模型被拉出,您就可以使用exit命令退出shell。

步骤 3:提示模型

现在是时候提示模型了。您可以使用任何 API 测试应用程序,例如PostmanThunder Client。在本教程中,我使用的是 Thunder Client。

要生成响应,请使用以下主体发出POST请求,http://localhost:8080/api/generate

{
  "model":"Model Name", // Replace this with the model that you pulled.
  "prompt":"Prompt", // Add your prompt here.
  "stream":false,
  "format": {} // Add the required structure here.
}

此类请求将生成响应并以所需格式返回。当我向“llama3.2:latest”提示“列出印度 5 个主要语言的城市”时,请查看以下响应。

要求

回复

如何定义所需的结构

要定义所需的结构,您需要首先定义类型。类型可以是字符串、对象或数组。以下是如何定义类型。

{
  "type": "object" // or "string" or "array"
}

目的

如果类型定义为对象,您还需要添加带有键的键properties。键包含响应中所需的值列表及其类型。最后,键的值是一个字符串数组,其中包含 中定义的所有键的列表。required``type``properties``required``properties

这个解释让人困惑。下面是一个例子,以便更好地理解。对于提示What is the capital of India and the primary language spoken there.,以下可以是结构。

{
  "type": "object",
  "properties": {
    "capital": {
      "type": "string"
    },
    "primary_language": {
      "type": "string"
    }
  },
  "required": ["capital", "primary_language"]
}

属性的类型,例如 capital 的类型也可以是对象或数组。

如果类型定义为数组,则还需要添加items键。items键包含数组项的类型。例如,对于提示List 5 cities of Canada.,以下可以是结构。

{
  "type": "object",
  "properties": {
    "cities": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
  },
  "required": ["cities"]
}
   
分类:未分类 作者:荡荡, 浩浩 发表于:2024-12-31 18:34:26 阅读量:34
<<   >>


powered by kaifamiao