Created
Aug 14, 2024 01:42 PM
Favorite
Favorite
Priority
备注
推荐
类型
模型测试
https://textdata.cn/blog/2024-08-07-structured-outputs-with-ollama/
一、问题
我们希望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
Tips: 公众号推送后内容只能更改一次,且只能改20字符。如果内容出问题,或者想更新内容, 只能重复推送。为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2024-08-07-structured-outputs-with-ollama/