如何使 Ollama 结构化输出 JSON 样式的结果

一、问题

我们希望LLM的回答的结果具有格式,最好是JSON格式(Python字典), 这样有利于后续的调用。

如何从 「普通格式」转为 结构化的「JSON格式」?这里就用到 Instructor库 。

二、Instructor介绍

Instructor 是一个 Python 库,它使处理大型语言模型 (LLM) 的结构化输出变得轻而易举。它建立在 Pydantic 之上,提供了一个简单、透明且用户友好的 API 来管理验证、重试和流式响应。

2.1 Instructor的主要特征

  • 定义输出样式:指定 Pydantic 模型来定义 LLM 输出的结构
  • 失败重试管理:轻松配置请求失败的重试次数
  • 样式验证:使用 Pydantic 验证确保 LLM 响应符合您的期望
  • 灵活的后端:与 OpenAI 之外的各种 LLM 提供商无缝集成

2.2 安装

2.3 样例

注意,本部分的样例仅供观看,因为chatGPT 限制中国大陆用户使用,所以不论是你还是大邓,运行此代码会失败。但文章末尾会提供本地电脑可运行的实验代码。

三、结构化输出实验

3.1 环境配置

假设已在本地安装Ollama软件, 也使用ollama安装了相应的大语言模型(如qwen2:7b、llama3.1:8b等)。 如果之前没有进行这些操作, 请阅读 教程 | 如何使用 Ollama 下载 & 使用本地大语言模型

3.2 代码

只要完成2.2、3.1,本章节的代码是可以运行出结果的。 不做过多解释,直接上代码,大家看运行结果。

Run

resp的数据类型为UserDetail, 是代码中是我们定义的 UserDetail 类。该类具有一些方法,也可直接 resp.dict() 转化为dict

查看 resp 的数据类型

Run

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部