AI个人学习
和实操指南

大模型结构化数据输出方法:精选 LLM JSON 资源列表

此精选列表专注于使用大语言模型(LLM)生成 JSON 或其他结构化输出的相关资源。

通过函数调用、工具、CFG 等方式使用 LLM 生成 JSON 的资源列表,涵盖库、模型、Notebooks 等。


 

目录

 

术语

关于生成 JSON,有一些不同的名称,尽管含义基本相同:

  • 结构化输出:使用 LLM 生成任何结构化输出,包括 JSON、XML 或 YAML,不论具体技术(例如函数调用、引导生成)。
  • 函数调用:为 LLM 提供一个假设(或实际)函数定义,提示它在聊天或完成响应中“调用”该函数。LLM 实际上并不会真正调用该函数,只是通过 JSON 消息指示调用的意图。
  • JSON 模式:指定 LLM 必须生成有效的 JSON。根据供应商不同,可能会或不会指定 schema,LLM 可能会创建意外的 schema。
  • 工具使用:为 LLM 提供一系列工具选择,如图像生成、网页搜索和“函数调用”。在 API 请求中的函数调用参数现在称为“工具”。
  • 引导生成:使 LLM 遵循特定规范生成文本,例如 上下文无关文法
  • GPT 操作:ChatGPT 基于指定的 OpenAPI 规范 中的端点和参数来调用操作(即 API 调用)。与称为“函数调用”的功能不同,此功能确实会调用托管在 API 服务器上的函数。

以上术语可能各有不同含义,因此我将此列表命名为 “精选 LLM JSON”。

 

托管模型

提供商 模型 链接
Anthropic claude-3-opus-20240229claude-3-sonnet-20240229claude-3-haiku-20240307 API 文档定价
AnyScale Mistral-7B-Instruct-v0.1Mixtral-8x7B-Instruct-v0.1 函数调用JSON 模式定价公告 (2023)
Azure gpt-4gpt-4-turbogpt-35-turbomistral-large-latestmistral-large-2402 函数调用OpenAI 定价Mistral 定价
Cohere Command-RCommand-R+ 函数调用定价Command-R (2024-03-11)Command-R+ (2024-04-04)
Fireworks.ai firefunction-v1 函数调用JSON 模式文法模式定价公告 (2023-12-20)
Google gemini-1.0-pro 函数调用定价
Groq llama2-70bmixtral-8x7bgemma-7b-it 函数调用定价
Hugging Face TGI 多个开源模型 文法、JSON 模式、函数调用和工具在本地免费使用,或通过专用无服务器 端点提供服务。
Mistral mistral-large-latest 函数调用定价
OpenAI gpt-4gpt-4-turbogpt-35-turbo 函数调用JSON 模式定价公告 (2023-06-13)
Rysana inversion-sm API 文档定价公告 (2024-03-18)
Together AI Mixtral-8x7B-Instruct-v0.1Mistral-7B-Instruct-v0.1CodeLlama-34b-Instruct 函数调用JSON 模式定价公告 2024-01-31

并行函数调用

以下是支持多并行功能调用的托管 API 模型列表。这些调用可能包括在多个城市检查天气,或首先找到酒店位置,然后再检查该位置的天气。

  • anthropic
    • claude-3-opus-20240229
    • claude-3-sonnet-20240229
    • claude-3-haiku-20240307
  • azure/openai
    • gpt-4-turbo-preview
    • gpt-4-1106-preview
    • gpt-4-0125-preview
    • gpt-3.5-turbo-1106
    • gpt-3.5-turbo-0125
  • cohere
    • command-r
  • together_ai
    • Mixtral-8x7B-Instruct-v0.1
    • Mistral-7B-Instruct-v0.1
    • CodeLlama-34b-Instruct

 

本地模型

Mistral 7B Instruct v0.3 (2024-05-22, Apache 2.0)是 Mistral 的指令微调版本,增加了功能调用支持。

C4AI Command R+ (2024-03-20, CC-BY-NC, Cohere)是一个104B参数的多语言模型,具有高级检索增强生成(RAG)和工具使用功能,优化于10种语言的推理、总结和问答。支持量化以提高使用效率,并展示了在复杂任务执行中的独特多步骤工具集成。

Hermes 2 Pro - Mistral 7B (2024-03-13, Nous Research)是一个7B参数模型,擅长功能调用、JSON结构化输出和通用任务。基于更新的OpenHermes 2.5数据集和新的功能调用数据集进行训练,使用特殊系统提示和多轮结构。在功能调用和JSON模式评估中分别达到91%和84%的准确率。

Gorilla OpenFunctions v2 (2024-02-27, Apache 2.0许可, Charlie Cheng-Jie Ji et al.)基于JSON模式对象解释并执行功能,支持多种语言并能够检测功能相关性。

NexusRaven-V2 (2023-12-05, Nexusflow)是一个13B模型,在零样本功能调用上比GPT-4的性能高达7%,能够有效地使用软件工具。进一步基于CodeLlama-13B-instruct进行指令微调。

Functionary (2023-08-04, MeetKai)基于JSON模式对象解释并执行功能,支持多种计算需求和调用类型。兼容OpenAI-python和llama-cpp-python,用于高效执行JSON生成任务中的功能调用。

Hugging Face TGI 为多种本地模型启用了JSON输出和功能调用支持。

 

Python 库

DSPy (MIT) 是一个框架,用于算法优化语言模型(LM)提示和权重。DSPy 引入了类型预测器和签名,通过使用 Pydantic 强制执行输入和输出的类型约束,从而改进了基于字符串的字段。

FuzzTypes (MIT) 扩展了 Pydantic,提供自动校正注解类型以增强数据标准化,并处理复杂类型,如电子邮件、日期和自定义实体。

guidance (Apache-2.0) 支持约束生成,将 Python 逻辑与大语言模型(LLM)调用相结合,支持重用函数及调用外部工具,从而优化提示以加速生成。

Instructor (MIT) 使用函数调用、工具调用和约束采样模式简化了 LLM 的结构化数据生成。基于 Pydantic 进行验证,并支持多种 LLM。

LangChain (MIT) 提供链接口、与其他工具的集成,以及用于应用程序的链。LangChain 提供结构化输出的链和跨模型的函数调用支持。

LiteLLM (MIT) 简化了以 OpenAI 格式调用 100 多种 LLM,支持函数调用、工具调用和 JSON 模式。

LlamaIndex (MIT) 提供不同抽象级别的结构化输出模块,包括文本补全端点的输出解析器、用于将提示映射到结构化输出的 Pydantic 程序,以及特定输出类型的预定义 Pydantic 程序。

Marvin (Apache-2.0) 是一个轻量级工具包,用于构建可靠的自然语言界面,具备实体提取和多模态支持等自我记录工具。

Outlines (Apache-2.0) 使用多种模型、Jinja 模板以及支持正则表达式模式、JSON 模式、Pydantic 模型和上下文无关语法生成结构化文本。

Pydantic (MIT) 通过定义数据模型、验证、JSON 模式生成以及无缝解析与序列化,简化了数据结构和 JSON 的使用。

SGLang (MPL-2.0) 允许使用正则表达式或 Pydantic 模型指定 JSON 模式以实现约束解码。其高性能运行时加速了 JSON 解码。

SynCode (MIT) 是一个用于语法引导生成大语言模型(LLM)的框架。它支持 Python、Go、Java、JSON、YAML 等的上下文无关语法(CFG)。

Mirascope (MIT) 是一个支持结构化提取的 LLM 工具包,提供直观的 Python API。

Magnetic (MIT) 通过三行代码在 Python 中调用 LLM。只需使用 @prompt 装饰器创建返回结构化输出的 LLM 函数,并由 Pydantic 提供支持。

Formatron (MIT) 是一个高效、可扩展的约束解码库,支持使用 f 字符串模板控制语言模型输出格式,支持正则表达式、上下文无关语法、JSON 模式和 Pydantic 模型。Formatron 无缝集成了多种模型推理库。

Transformers-cfg (MIT) 通过 EBNF 接口将上下文无关语法(CFG)支持扩展到 Hugging Face Transformers。它实现了语法约束生成,对 Transformers 代码的更改最小,并支持 JSON 模式和 JSON 模式。

 

博客文章

语法结构生成速度有多快? (2024-04-12, .txt Engineering) 展示了一种几乎零成本的生成符合语法的文本的方法。在 C 语法上,它的性能优于 llama.cpp 达 50 倍。

结构化生成提升 LLM 性能:GSM8K 基准测试 (2024-03-15, .txt Engineering) 展示了在 8 个模型上的一致性提升,强调了“提示一致性”和“思维控制”等优点。

LoRAX + Outlines:通过结构化生成和 LoRA 实现更好的 JSON 提取 (2024-03-03, Predibase Blog) 将 Outlines 与 LoRAX v0.8 结合,通过结构化生成、微调和 LoRA 适配器提升提取准确性和模式完整性。

FU,快速了解难以理解的 LLM 框架提示。 (2023-02-14, Hamel Husain) 提供了使用 mitmproxy 截获 API 调用的实践指南,以便了解工具功能并评估其必要性。强调减少复杂性并与底层 LLM 紧密结合。

Coalescence:使 LLM 推理速度提升 5 倍 (2024-02-02, .txt Engineering) 展示了使用“聚合”技术来加速结构化生成,相较于非结构化生成速度更快,但可能影响生成质量。

为什么 Pydantic 对 LLMs 不可或缺 (2024-01-19, Adam Azzam) 解释了 Pydantic 作为关键工具的出现,使得可以通过 JSON 模式共享数据模型,并实现无结构数据和结构化数据之间的推理。强调了量化决策空间的重要性,以及 LLM 在旧模式版本上过拟合的潜在问题。

函数调用入门 (2024-01-11, Elvis Saravia) 介绍了函数调用,用于将 LLMs 连接到外部工具和 API,提供了使用 OpenAI API 的示例,并强调了潜在应用。

将 ChatGPT 的结构化数据支持推向极限 (2023-12-21, Max Woolf) 探讨了使用付费 API、JSON 模式和 Pydantic 充分利用 ChatGPT 功能的方法。介绍了提升输出质量的技巧以及结构化数据支持的优点。

为什么选择 Instructor? (2023-11-18, Jason Liu) 解释了该库的优势,提供了易读的方式、对部分提取和各种类型的支持以及自我校正机制。推荐了 Instructor 网站上的其他资源。

使用语法约束 llama.cpp 的输出 (2023-09-06, Ian Maurer) 结合上下文无关语法以增强 llama.cpp 的输出精度,尤其适用于生物医学数据。

使用 OpenAI 函数及其 Python 库进行数据提取 (2023-07-09, Simon Willison) 演示了通过 OpenAI Python 库和函数调用在单个 API 调用中提取结构化数据,并提供了代码示例及处理流限制的建议。

 

视频

(2024-04-09,Simon Willison)展示了 datasette-extract 插件如何通过 GPT-4 Turbo 的 API,从非结构化文本和图像中提取数据并填充数据库表格。

(2024-03-25,Andrej Baranovskij)演示了基于函数调用的数据提取,使用 Ollama、Instructor 和 Sparrow agent 。

(2024-03-18,Prompt Engineer)介绍了 Hermes 2 Pro,这是一种具有 70 亿参数的模型,擅长函数调用和生成结构化 JSON 输出。在函数调用方面展示了 90% 的准确率,JSON 模式下为 84%,性能优于其他模型。

(2024-02-24,Sophia Yang)展示了将大语言模型连接到外部工具、生成函数参数并执行函数。可进一步扩展为生成或操作 JSON 数据。

(2024-02-13,Matt Williams)阐明了模型生成的结构化输出用于解析和调用函数。比较了实现方式,强调 Ollama 的方法更简洁,并使用少量示例提示保持一致性。

(2024-02-12,Jason LiuWeights & Biases 课程)提供了一个简明课程,介绍如何使用 Pydantic 处理结构化 JSON 输出、函数调用和验证,涵盖了构建稳健管道和高效生产集成的要点。

(2023-10-10,Jason LiuAI Engineer Conference)讨论了 Pydantic 在结构化提示和输出验证中的重要性,介绍了 Instructor 库,并展示了可靠和可维护的 LLM 应用的高级应用。

 

Jupyter Notebooks

使用 llama-cpp-python 和 OpenAI Python 客户端进行函数调用 展示了集成,包括使用 Instructor 库的设置,并提供了获取天气信息和提取用户详细信息的示例。

使用 Mistral 模型进行函数调用 展示了通过一个涉及支付交易数据框的简单示例,将 Mistral 模型连接到外部工具。

chatgpt-structured-data 由 Max Woolf 提供,展示了 ChatGPT 的函数调用和结构化数据支持,涵盖了各种用例和数据结构。

排行榜

伯克利函数调用排行榜(BFCL) 是一个评估框架,用于测试 LLM 的函数调用能力,包括 2000 多个问题-函数-答案配对,涵盖 Python、Java、JavaScript、SQL 和 REST API 等语言,侧重于简单、多重和并行函数调用,以及函数相关性检测。

AI轻松学

普通人的AI入门指南

帮助你以低成本、零基础学会如何利用AI工具。AI就像办公软件一样,是每个人的必备技能。 掌握AI会让你在求职中占据优势,在未来的工作和学习中事半功倍。

查看详情>
未经允许不得转载:首席AI分享圈 » 大模型结构化数据输出方法:精选 LLM JSON 资源列表

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文