当前位置: 首页 > article >正文

终极AI输出格式控制:lm-format-enforcer完全指南

终极AI输出格式控制lm-format-enforcer完全指南【免费下载链接】lm-format-enforcerEnforce the output format (JSON Schema, Regex etc) of a language model项目地址: https://gitcode.com/gh_mirrors/lm/lm-format-enforcerlm-format-enforcer是一款强大的工具能够强制语言模型LM输出符合特定格式如JSON Schema、正则表达式等的内容同时最大限度减少对模型自由度的干扰。无论您是AI应用开发者还是研究人员这款工具都能帮助您获得可靠、结构化的模型输出。为什么需要AI输出格式控制语言模型虽然能够生成流畅的文本但在需要精确输出格式时往往表现不稳定。各种提示工程技术虽然能改善生成文本的鲁棒性但并不总能满足严格的格式要求。lm-format-enforcer通过在每个时间步过滤模型允许生成的标记确保输出格式得到遵守同时最大程度保留模型的表达能力。核心功能与优势lm-format-enforcer提供了多项强大功能使其在众多格式控制工具中脱颖而出广泛兼容性适用于任何Python语言模型和分词器已支持transformers、LangChain、LlamaIndex、llama.cpp、vLLM、Haystack、NVIDIA TensorRT-LLM和ExLlamaV2等主流框架。多格式支持支持JSON Schema、JSON模式无模式和正则表达式格式满足不同场景的需求。高级特性支持批处理生成和 beam 搜索每个输入或 beam 可以在每个时间步过滤不同的标记支持JSON模式中的必填和可选字段以及嵌套字段、数组和字典。灵活性允许语言模型控制JSON模式中的空格和字段顺序减少幻觉现象不修改transformers API的高层循环可在任何场景中使用。快速安装指南安装lm-format-enforcer非常简单只需使用pip命令pip install lm-format-enforcer基础使用教程下面是一个基本示例展示如何使用lm-format-enforcer强制模型输出符合特定JSON Schema的内容from pydantic import BaseModel from lmformatenforcer import JsonSchemaParser from lmformatenforcer.integrations.transformers import build_transformers_prefix_allowed_tokens_fn from transformers import pipeline class AnswerFormat(BaseModel): first_name: str last_name: str year_of_birth: int num_seasons_in_nba: int # 创建transformers pipeline hf_pipeline pipeline(text-generation, modelTheBloke/Llama-2-7b-Chat-GPTQ, device_mapauto) prompt fHere is information about Michael Jordan in the following json schema: {AnswerFormat.schema_json()} :\n # 创建字符级解析器并构建transformers前缀函数 parser JsonSchemaParser(AnswerFormat.schema()) prefix_function build_transformers_prefix_allowed_tokens_fn(hf_pipeline.tokenizer, parser) # 使用前缀函数调用pipeline output_dict hf_pipeline(prompt, prefix_allowed_tokens_fnprefix_function) # 提取结果 result output_dict[0][generated_text][len(prompt):] print(result) # {first_name: Michael, last_name: Jordan, year_of_birth: 1963, num_seasons_in_nba: 15}与其他库的比较lm-format-enforcer在多个关键方面优于其他类似库功能LM Format EnforcerGuidanceJsonformerOutlines正则表达式✅✅❌✅JSON Schema✅ (部分支持)✅✅批处理生成✅❌❌✅Beam Search✅❌❌✅集成现有pipeline✅❌❌✅可选JSON字段✅❌❌❌LLM控制JSON字段顺序和空格✅❌❌❌递归类JSON Schema✅❌✅❌视觉模型支持✅✅❌❌vLLM服务器集成lm-format-enforcer已集成到vLLM推理服务器中。vLLM包含一个OpenAI兼容服务器添加了使用lm-format-enforcer的功能无需编写自定义推理代码。使用vLLM OpenAI服务器时可以通过添加vLLM命令行参数来使用lm-format-enforcerpython -m vllm.entrypoints.openai.api_server \ --model mistralai/Mistral-7B-Instruct-v0.2 \ --guided-decoding-backend lm-format-enforcer或者在每个请求的基础上通过向请求添加guided_decoding_backend参数以及引导解码参数completion client.chat.completions.create( modelmistralai/Mistral-7B-Instruct-v0.2, messages[ {role: user, content: Classify this sentiment: LMFE is wonderful!} ], extra_body{ guided_regex: [Pp]ositive|[Nn]egative, guided_decoding_backend: lm-format-enforcer } )工作原理lm-format-enforcer通过将字符级解析器和分词器前缀树结合到智能标记过滤机制中来工作字符级解析器将字符串解析为任何类型的格式化程序可以看作是一种隐式树结构——在解析过程的任何时刻都有一组允许的下一个字符如果选择了其中任何一个就会有一组新的允许的下一个字符依此类推。CharacterLevelParser是根据这种隐式结构进行解析的接口。add_character()和get_allowed_characters()可以看作是树遍历方法。该接口有几种实现JsonSchemaParser - 根据json模式进行解析或纯json输出 - JsonSchemaParser(None)将允许任何json对象。StringParser - 强制使用精确字符串主要用于诊断RegexParser - 根据正则表达式进行解析。分词器前缀树给定某个语言模型使用的分词器我们可以构建该语言模型可以生成的所有标记的前缀树。这是通过生成所有可能的标记序列并将它们添加到树中来完成的。两者结合给定字符级解析器和分词器前缀树我们可以优雅而高效地过滤语言模型在下一个时间步允许生成的标记我们只遍历同时存在于字符级解析节点和分词器前缀树节点中的字符。这使我们能够找到所有标记包括复杂的子词标记如在JSON解析中至关重要的,。我们在两棵树上递归地执行此操作并返回所有允许的标记。当语言模型生成标记时我们根据新字符推进字符级解析器为过滤下一个时间步做好准备。配置选项lm-format-enforcer使用多种启发式方法来避免LLM生成结构输出时可能出现的边缘情况。有两种方法可以控制这些启发式方法选项1通过环境变量可以设置几个环境变量影响库的操作。当您不想修改代码时例如通过vLLM OpenAI服务器使用库时此方法非常有用。LMFE_MAX_CONSECUTIVE_WHITESPACES - 解析JsonSchemaObjects时允许的连续空格数。默认值12。LMFE_STRICT_JSON_FIELD_ORDER - JsonSchemaParser是否强制属性以与JsonSchema的required列表中出现的相同顺序出现注意这与Pydantic模型中的声明顺序一致。默认值False。LMFE_MAX_JSON_ARRAY_LENGTH - 如果模式未指定最大JSON数组长度是多少。帮助LLM避免无限循环。默认值20。LMFE_DEFAULT_ALPHABET - 默认使用什么字母表作为允许的字符选项2通过CharacterLevelParserConfig类当通过代码使用库时任何CharacterLevelParserJsonSchemaParser、RegexParser等构造函数都接收一个可选的CharacterLevelParserConfig对象。因此要配置单个解析器的启发式方法请实例化一个CharacterLevelParserConfig对象修改其值并将其传递给CharacterLevelParser的构造函数。诊断功能使用此库可确保输出符合格式但不能保证输出在语义上是正确的。强制语言模型符合特定输出可能会导致幻觉增加。通过提示工程指导模型仍然可能改善结果。为了帮助您了解格式强制导致的侵略性如果您在generate_enforced()的kwargs中传递output_scoresTrue和return_dict_in_generateTrue这些是transformers库中现有的可选参数您还将获得一个逐标记的数据框显示选择了哪个标记、其分数以及如果不应用格式强制本来会选择的标记。如果您看到格式强制器迫使语言模型选择权重非常低的标记这很可能是导致结果不佳的原因。尝试修改提示以引导语言模型不要迫使格式强制器如此侵略。如何开始使用要开始使用lm-format-enforcer首先克隆仓库git clone https://gitcode.com/gh_mirrors/lm/lm-format-enforcer然后参考项目中的示例和文档特别是samples目录中的Colab笔记本如colab_llama2_enforcer.ipynb了解如何在实际场景中应用lm-format-enforcer。无论您是构建需要可靠JSON输出的AI应用还是需要确保模型遵循特定格式约束lm-format-enforcer都能为您提供强大而灵活的解决方案让您的AI系统更加可靠和可控。【免费下载链接】lm-format-enforcerEnforce the output format (JSON Schema, Regex etc) of a language model项目地址: https://gitcode.com/gh_mirrors/lm/lm-format-enforcer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

终极AI输出格式控制:lm-format-enforcer完全指南

终极AI输出格式控制:lm-format-enforcer完全指南 【免费下载链接】lm-format-enforcer Enforce the output format (JSON Schema, Regex etc) of a language model 项目地址: https://gitcode.com/gh_mirrors/lm/lm-format-enforcer lm-format-enforcer是一款…...

MHVideoPhotoGallery自定义指南:如何打造独一无二的UI界面和过渡动画

MHVideoPhotoGallery自定义指南:如何打造独一无二的UI界面和过渡动画 【免费下载链接】MHVideoPhotoGallery A Photo and Video Gallery 项目地址: https://gitcode.com/gh_mirrors/mh/MHVideoPhotoGallery MHVideoPhotoGallery是一款功能强大的图片和视频画…...

rui多平台开发指南:如何用同一套代码部署到桌面和移动端

rui多平台开发指南:如何用同一套代码部署到桌面和移动端 【免费下载链接】rui Declarative Rust UI library 项目地址: https://gitcode.com/gh_mirrors/ru/rui rui是一款基于Rust的声明式UI库,它让开发者能够使用同一套代码轻松构建跨桌面和移动…...

2025年开源软件趋势分析:7个顶级数据分析工具跟踪指南

2025年开源软件趋势分析:7个顶级数据分析工具跟踪指南 【免费下载链接】openalternative Curated list of open source alternatives to proprietary software. 项目地址: https://gitcode.com/gh_mirrors/op/openalternative 在数据驱动决策的时代&#xff…...

Anime4KCPP:高性能动漫图像超分辨率工具的完整指南

Anime4KCPP:高性能动漫图像超分辨率工具的完整指南 【免费下载链接】Anime4KCPP A high performance anime upscaler 项目地址: https://gitcode.com/gh_mirrors/an/Anime4KCPP Anime4KCPP 是一款高性能的动漫图像超分辨率工具,采用基于 CNN 的算…...

OpenClaw安全审计工具:五维扫描与实时监控保障AI助手安全

1. 项目概述:为你的AI助手装上“安全爪”如果你正在使用OpenClaw,或者任何类似的AI助手框架,那么你很可能正面临一个被大多数人忽视的“影子风险”。我们热衷于为AI助手添加各种技能(MCP服务器),优化提示词…...

如何用Gallery保护隐私:深度解析加密保险库功能

如何用Gallery保护隐私:深度解析加密保险库功能 【免费下载链接】ReFra Media Gallery app for Android made with Jetpack Compose 项目地址: https://gitcode.com/gh_mirrors/galler/ReFra Gallery是一款基于Jetpack Compose开发的Android媒体库应用&#…...

四叶草拼音繁简切换技术解析:OpenCC转换与兼容性设计

四叶草拼音繁简切换技术解析:OpenCC转换与兼容性设计 【免费下载链接】rime-cloverpinyin 🍀️四叶草拼音输入方案,做最好用的基于rime开源的简体拼音输入方案! 项目地址: https://gitcode.com/gh_mirrors/ri/rime-cloverpinyin…...

LayerZero验证库工作原理:MPTValidator与FPValidator技术实现

LayerZero验证库工作原理:MPTValidator与FPValidator技术实现 【免费下载链接】LayerZero An Omnichain Interoperability Protocol 项目地址: https://gitcode.com/gh_mirrors/la/LayerZero LayerZero作为Omnichain Interoperability Protocol(全…...

告别MATLAB依赖:手把手教你用Python实现GCC-PHAT时延估计(附完整代码与对比测试)

告别MATLAB依赖:手把手教你用Python实现GCC-PHAT时延估计(附完整代码与对比测试) 在声学信号处理领域,时延估计(Time Delay Estimation, TDE)是许多实际应用的核心技术,从智能音箱的声源定位到工…...

Ambar 多语言支持:如何配置中文、英文等8种语言分析器

Ambar 多语言支持:如何配置中文、英文等8种语言分析器 【免费下载链接】ambar :mag: Ambar: Document Search Engine 项目地址: https://gitcode.com/gh_mirrors/am/ambar Ambar 作为一款强大的文档搜索引擎,提供了对多种语言的支持,包…...

使用Python快速调用Taotoken大模型API的完整入门教程

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Python快速调用Taotoken大模型API的完整入门教程 对于希望快速集成大模型能力的开发者而言,直接对接多个厂商的API…...

如何快速掌握Flow:新成员静态类型系统培训的完整指南

如何快速掌握Flow:新成员静态类型系统培训的完整指南 【免费下载链接】flow Adds static typing to JavaScript to improve developer productivity and code quality. 项目地址: https://gitcode.com/gh_mirrors/flow30/flow Flow是一个为JavaScript添加静态…...

终极指南:CDC技术如何彻底改变数据工程中的数据捕获与集成

终极指南:CDC技术如何彻底改变数据工程中的数据捕获与集成 【免费下载链接】data-engineer-handbook This is a repo with links to everything youd ever want to learn about data engineering 项目地址: https://gitcode.com/GitHub_Trending/da/data-engineer…...

2TB 数据库增量备份还要 200GB?KES块级永久增量备份,存储省 80%、速度快 60%

引言:增量备份比全量备份还"心虚" 作为 DBA,你一定经历过这样的尴尬时刻:“今天是增量备份日,预计耗时……嗯……大概两个小时吧。” “增量?全量才两个半小时啊?” “对……差不多吧。”这并非段…...

PyTorch-OpCounter终极测试指南:5步编写可靠的算子计数测试用例

PyTorch-OpCounter终极测试指南:5步编写可靠的算子计数测试用例 【免费下载链接】pytorch-OpCounter Count the MACs / FLOPs of your PyTorch model. 项目地址: https://gitcode.com/gh_mirrors/py/pytorch-OpCounter PyTorch-OpCounter是一款用于计算PyTor…...

如何快速集成Deep Learning with Python到Web应用:Flask与FastAPI完整指南

如何快速集成Deep Learning with Python到Web应用:Flask与FastAPI完整指南 【免费下载链接】deep-learning-with-python-notebooks Jupyter notebooks for the code samples of the book "Deep Learning with Python" 项目地址: https://gitcode.com/gh…...

Rack安全漏洞修复终极指南:如何快速保护你的Web应用

Rack安全漏洞修复终极指南:如何快速保护你的Web应用 【免费下载链接】rack A modular Ruby web server interface. 项目地址: https://gitcode.com/gh_mirrors/ra/rack Rack作为Ruby Web开发的核心接口,其安全性直接关系到无数Web应用的防护能力。…...

终极指南:Chrono 自然语言日期解析如何通过增量技术实现10倍性能优化

终极指南:Chrono 自然语言日期解析如何通过增量技术实现10倍性能优化 【免费下载链接】chrono A natural language date parser in Javascript 项目地址: https://gitcode.com/gh_mirrors/ch/chrono Chrono 是一款强大的 JavaScript 自然语言日期解析库&…...

如何全面测试Talebook个人书库:从单元测试到集成测试的实用指南

如何全面测试Talebook个人书库:从单元测试到集成测试的实用指南 【免费下载链接】talebook 一个简单好用的个人书库 项目地址: https://gitcode.com/gh_mirrors/ta/talebook Talebook作为一款简单好用的个人书库系统,其稳定性和可靠性直接影响用户…...

Pinion-OS:嵌入式与物联网开发的轻量级微内核操作系统实践

1. 项目概述:一个为嵌入式与物联网而生的精简操作系统最近在嵌入式开发社区里,一个名为Pinion-OS的项目引起了我的注意。它的 GitHub 仓库地址是Azure55562/pinion-os。乍一看这个名字,你可能会联想到“小齿轮”(Pinion&#xff0…...

基于Next.js与OpenAI的AI色彩生成器:从情绪文字到CSS渐变的实现

1. 项目概述:用AI将情绪文字转化为色彩渐变 最近在做一个设计相关的项目,需要根据不同的内容主题快速生成匹配的配色方案,尤其是背景渐变。手动从色轮里挑颜色、调渐变角度和位置,既耗时又容易陷入选择困难。就在我到处找灵感的时…...

中文商业报告Markdown模板:提升效率与专业度的结构化写作框架

1. 项目概述:一份开箱即用的中文商业报告模板最近在整理团队季度复盘材料,发现一个挺普遍的问题:大家花在数据整理和格式调整上的时间,远比分析业务本身要多。一份商业报告,从数据清洗、图表制作到排版成文&#xff0c…...

Go语言终端动画库Charivo:打造流畅CLI交互体验

1. 项目概述与核心价值最近在开源社区里,一个名为zeikar/charivo的项目引起了我的注意。乍一看这个标题,它不像那些功能描述直白的项目,比如“XX管理系统”或“XX工具包”。zeikar是作者或组织的标识,而charivo这个名字听起来像是…...

别再傻傻分不清了!家装水电改造中火线、零线、地线的颜色标准与接线实战(附常见开关插座接线图)

家装电路改造实战指南:从电线颜色识别到安全接线全解析 第一次拆开家里的开关面板时,那几根颜色各异的电线让我彻底懵了——红色、蓝色、黄绿相间的线缠绕在一起,像是一道无解的谜题。作为DIY爱好者,我原以为换个插座不过是拧几个…...

ResearchClawBench:AI科研能力基准测试实战部署与评估指南

1. 项目概述:一个重新定义AI科研能力的基准测试 如果你和我一样,长期关注AI在科研自动化领域的发展,那你一定见过不少“AI科学家”的演示。它们能写代码、能画图、甚至能生成看起来像模像样的论文草稿。但一个核心问题始终悬而未决&#xff…...

FPGA协处理器加速CPU性能的技术与实践

1. FPGA协处理器加速CPU性能的技术背景在嵌入式系统开发中,我们经常遇到一个经典困境:产品迭代需要更强的计算能力,但原有CPU已经达到性能天花板。传统解决方案不外乎三种:提升时钟频率(很快会遇到物理极限&#xff09…...

如何在Voxelman中使用Burst Compiler加速计算:提升Unity DOTS性能的终极指南

如何在Voxelman中使用Burst Compiler加速计算:提升Unity DOTS性能的终极指南 【免费下载链接】Voxelman Unity DOTS/ECS example 项目地址: https://gitcode.com/gh_mirrors/vo/Voxelman Voxelman作为Unity DOTS/ECS示例项目,展示了高效的实体组件…...

开源ERP Trenova:云原生架构重塑运输物流管理

1. 项目概述:一个开源ERP的现代探索 最近在开源社区里,一个名为 Trenova 的项目引起了我的注意。它的全称是 kubaparol/trenova ,从名字就能看出,这是一个部署在 Kubernetes 上的应用。但它的定位远不止于此——它是一个旨在为…...

CongaLine:轻量级部署流水线工具,实现环境一致性

1. 项目概述:当“康加舞”遇上代码流水线如果你在软件开发领域摸爬滚打了一段时间,尤其是经历过从单体应用到微服务架构的转型,那么对“部署”这个词的感受一定很复杂。它可能是午夜时分的一次次手动脚本执行,是不同环境间配置文件…...