成功的营销网站的例子,个人域名备案网站名称,店铺logo免费一键生成,小程序制作公司开发跟上一篇内容一样#xff0c;这次我们来看如何限定大模型返回的结果值是枚举类型的。 先看代码#xff1a; # 导入必要的模块 from langchain.prompts import PromptTemplate # 用于创建和管理提示模板 from langchain_openai import ChatOpenAI # 用…跟上一篇内容一样这次我们来看如何限定大模型返回的结果值是枚举类型的。先看代码# 导入必要的模块 from langchain.prompts import PromptTemplate # 用于创建和管理提示模板 from langchain_openai import ChatOpenAI # 用于调用OpenAI兼容的聊天模型如DeepSeek from langchain.output_parsers.enum import EnumOutputParser # 用于将LLM输出解析为枚举类型 from enum import Enum # Python标准库用于定义枚举类型 import os # 用于读取环境变量 # 定义颜色枚举类限定LLM输出必须为以下五种颜色之一 class Colors(Enum): RED 红色 BROWN 棕色 BLACK 黑色 WHITE 白色 YELLOW 黄色 # 创建枚举输出解析器强制LLM输出必须匹配Colors枚举中的值 output_parser EnumOutputParser(enumColors) # 获取格式化指令告诉LLM如何正确格式化输出例如输出必须是红色、棕色... format_instructions output_parser.get_format_instructions() print(format_instructions) # 打印格式要求用于调试或提示用户 print(###########) # 分隔线 # 创建提示模板包含两个占位符 {person}人物和 {instructions}输出格式要求 promptTemplate PromptTemplate.from_template( {person}的皮肤主要是什么颜色 {instructions} ) # 固定instructions部分的内容避免每次调用时重复传入 instructions 响应的结果请选择以下选项之一红色、棕色、黑色、白色、黄色。 prompt promptTemplate.partial(instructionsinstructions) # partial用于预填充模板中的部分变量 # 输出完整提示词示例以亚洲人为例用于调试查看实际发送给LLM的内容 print(prompt.invoke({person: 亚洲人}).text) print(--------------) # 初始化聊天模型使用DeepSeek API llm ChatOpenAI( api_keyos.getenv(DEEPSEEK_API_KEY), # 从环境变量读取API密钥 base_urlos.getenv(BASE_URL), # 从环境变量读取API基础URL如 https://api.deepseek.com modeldeepseek-v3:671b, # 指定使用的模型版本 temperature0.7, # 生成随机性控制0.7 适中创造性 max_tokens1024 # 单次响应最大token数 ) # 构建处理链提示模板 → 大语言模型 → 枚举解析器 # 实现端到端流程生成提示 → 调用LLM → 强制输出为枚举类型 chain prompt | llm | output_parser # 调用链传入亚洲人作为输入 result chain.invoke({person: 亚洲人}) # 输出解析后的结果Enum类型 print(result) # 打印枚举对象如Colors.YELLOW print(result.name) # 打印枚举成员名称如YELLOW print(result.value) # 打印枚举成员值如黄色返回值Select one of the following options: 红色, 棕色, 黑色, 白色, 黄色 ########### 亚洲人的皮肤主要是什么颜色 响应的结果请选择以下选项之一红色、棕色、黑色、白色、黄色。 -------------- Colors.YELLOW YELLOW 黄色重点说明精准控制大模型输出范围本方案的核心目标是强制大语言模型返回预定义的枚举类型值彻底解决自由文本输出的不确定性问题。通过结构化约束机制确保模型响应严格限定在业务允许的选项集合内如仅返回“红色、棕色、黑色、白色、黄色”从源头杜绝“浅黄”“米白”等非标准值显著提升系统可靠性与数据一致性。双重约束保障输出合规性枚举输出解析器EnumOutputParser构建前后端双重防护前端通过/* by 01022.hk - online tools website : 01022.hk/zh/md5.html */ get_format_instructions()自动生成格式指令并注入提示词明确引导模型“仅可选择以下选项之一”后端在解析阶段对返回结果进行强校验任何超出枚举范围的值将立即抛出/* by 01022.hk - online tools website : 01022.hk/zh/md5.html */ OutputParserException异常形成从生成到解析的全链路约束。枚举类型定义数据契约通过Python的Enum类预先声明合法值集合如Colors枚举建立系统与模型之间的标准化数据契约。该设计不仅明确业务规则边界更使模型输出直接转换为类型安全的枚举对象开发者可直接通过.name如YELLOW和.value如黄色属性获取结构化结果彻底规避字符串清洗与匹配的繁琐处理。典型应用场景与业务价值该方案特别适用于需严格输出控制的场景情感分析限定{正面/中性/负面}、审批状态约束{待审/通过/拒绝}、颜色识别规范标准色系等。相比传统依赖正则表达式或关键词匹配的后处理方案枚举控制从设计层面根除脏数据风险降低90%以上的数据清洗成本为关键业务系统提供确定性保障。增强鲁棒性的实践建议实际部署时建议结合重试机制提升容错能力当模型首次输出不符合枚举要求时自动触发2-3次重试并强化格式提示成功率可达99%以上。对于金融、医疗等关键场景可设置异常兜底策略——连续解析失败时自动转交人工审核形成“自动约束人工兜底”的完整质量保障闭环。