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

10分钟掌握lm-format-enforcer:从安装到实战

10分钟掌握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-enforcer

lm-format-enforcer是一款强大的工具,能够强制语言模型输出符合特定格式(如JSON Schema、正则表达式等)的内容,同时最大程度保留语言模型的生成自由度。本文将带你快速掌握从安装到实战应用的全过程,让你轻松解决语言模型输出格式不规范的问题。

为什么选择lm-format-enforcer?

在使用语言模型时,我们常常需要其输出特定格式的内容,例如JSON数据或符合某种模式的文本。然而,即使通过精心设计提示词,语言模型也未必能始终如一地生成符合要求格式的内容。lm-format-enforcer通过在每个生成步骤过滤允许的令牌,确保输出格式的准确性,同时对语言模型的限制最小化。

这款工具具有诸多优势:

  • 适用于任何Python语言模型和分词器,已支持transformers、LangChain、LlamaIndex、llama.cpp、vLLM等多种集成
  • 支持批量生成和 beam 搜索,每个输入或 beam 在每个时间步可以有不同的令牌过滤
  • 支持JSON Schema、JSON模式(无模式)和正则表达式格式
  • 允许语言模型控制JSON模式中的空格和字段顺序,减少幻觉

快速安装步骤

安装lm-format-enforcer非常简单,只需使用pip命令即可:

pip install lm-format-enforcer

如果你需要从源代码安装,可以先克隆仓库:

git clone https://gitcode.com/gh_mirrors/lm/lm-format-enforcer cd lm-format-enforcer pip install .

基础使用教程

下面我们通过一个简单的例子来展示如何使用lm-format-enforcer强制语言模型输出特定格式的JSON数据。

定义输出格式

首先,我们使用Pydantic定义一个数据模型,指定我们期望的输出格式:

from pydantic import BaseModel class AnswerFormat(BaseModel): first_name: str last_name: str year_of_birth: int num_seasons_in_nba: int

创建解析器和前缀函数

接下来,我们创建一个JSON Schema解析器,并构建一个适用于transformers库的前缀允许令牌函数:

from lmformatenforcer import JsonSchemaParser from lmformatenforcer.integrations.transformers import build_transformers_prefix_allowed_tokens_fn # 创建JSON Schema解析器 parser = JsonSchemaParser(AnswerFormat.schema()) # 构建前缀允许令牌函数 prefix_function = build_transformers_prefix_allowed_tokens_fn(hf_pipeline.tokenizer, parser)

使用管道生成文本

最后,我们使用transformers管道生成文本,并应用我们创建的前缀函数:

from transformers import pipeline # 创建transformers管道 hf_pipeline = pipeline('text-generation', model='TheBloke/Llama-2-7b-Chat-GPTQ', device_map='auto') prompt = f'Here is information about Michael Jordan in the following json schema: {AnswerFormat.schema_json()} :\n' # 调用管道生成文本 output_dict = hf_pipeline(prompt, prefix_allowed_tokens_fn=prefix_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}

高级应用:vLLM服务器集成

lm-format-enforcer还可以与vLLM推理服务器集成,通过OpenAI兼容的API使用。只需在启动vLLM服务器时添加相应的命令行参数:

python -m vllm.entrypoints.openai.api_server \ --model mistralai/Mistral-7B-Instruct-v0.2 \ --guided-decoding-backend lm-format-enforcer

然后,在发送请求时添加相应的参数:

completion = client.chat.completions.create( model="mistralai/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能保证输出的语义正确性吗?

lm-format-enforcer保证输出格式正确,但不保证语义正确性。强制语言模型符合特定格式可能会增加幻觉。通过提示工程引导模型仍然可能提高结果质量。

支持哪些格式约束?

目前支持JSON Schema、JSON模式(无模式)和正则表达式格式。其中,JSON Schema支持必填和可选字段,以及嵌套字段、数组和字典。

可以与哪些库集成?

lm-format-enforcer可以与transformers、LangChain、LlamaIndex、llama.cpp、vLLM、Haystack、NVIDIA TensorRT-LLM和ExLlamaV2等多种库集成。

总结

lm-format-enforcer是一款功能强大的工具,能够有效解决语言模型输出格式不规范的问题。通过本文的介绍,你已经了解了如何安装和使用这款工具,以及它的一些高级特性。无论是在研究还是生产环境中,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-enforcer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/778365/

相关文章:

  • 天津国际幼儿园排行盘点:合规办学实力对比 - 奔跑123
  • 终极Flow问题排查指南:快速诊断和解决JavaScript类型检查难题
  • 2025年开源软件趋势分析:7个顶级数据分析工具跟踪指南
  • 基于Chickensoft架构的Godot C#游戏开发:状态管理与依赖注入实战
  • 基于Vue 3与Node.js的ChatGPT Web应用架构与部署实战
  • Sanic错误追踪:Sentry与日志分析集成终极指南
  • Go语言CGO编译缓存终极指南:5个实用技巧快速加速构建过程
  • 天津正规网球培训机构排行:场地教学综合实力盘点 - 奔跑123
  • Beyond Compare 5激活指南:从评估模式到专业版解锁的完整解决方案
  • rui多平台开发指南:如何用同一套代码部署到桌面和移动端
  • 终极指南:如何用GitHub Actions实现Next.js项目Taxonomy的自动化部署
  • 国内外中压玻璃柱实力TOP厂家集合推荐 - 品牌推荐大师1
  • 别再让LaTeX图表乱跑了!手把手教你用figure/table环境精准定位(附Overleaf实战代码)
  • 2026年中国体重管理师培训体系技术评测与选型报告 - 品牌策略主理人
  • Akvorado与ClickHouse集成:构建高性能流量数据存储方案
  • AI智能体食谱:提升开发效率的提示词模板库实践指南
  • Redirector安全最佳实践:避免恶意重定向的完整防护方案
  • 初级开发者远程求职全攻略:从技术准备到面试拿Offer
  • Amlogic-S9xxx-Armbian终极实战指南:让闲置电视盒子变身高效Linux服务器
  • 终极指南:如何使用HVM-lang构建安全可靠的并行软件系统
  • GEO推广公司真实实力排行:别再只看官网,看这4个硬指标 - 品牌推荐大师1
  • 欧盟《人工智能法案》修订:禁深度伪造色情内容,高风险系统监管规定推迟实施
  • 通过用量分析看板优化提示工程与模型调用策略
  • Go项目AI编程助手技能包:提升代码质量与开发效率的实战指南
  • 使用Taotoken后我的大模型调用延迟与稳定性体验
  • 终极指南:如何通过reverse-interview-zh流程改进提升团队创新文化与建议采纳效率
  • 终极动态规划指南:从硬币问题到最长公共子序列的完整解析
  • 从机械维修到软件诊断:汽车技术变革中的技能迁移与未来职业展望
  • 基于事件驱动的自动化对话引擎:talk-to-chatgpt项目深度解析与应用实践
  • FLUX.1-Krea-Extracted-LoRA实战案例:服装电商模特图批量生成工作流