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

AI开发-python-langchain框架(1-13 返回xml-格式解析器)

有的时候xml格式也是开发中是比较普遍的数据格式,如何让大模型返回的数据是标准的xml格式?

看如下代码:

from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from langchain.output_parsers import XMLOutputParser
import osllm = ChatOpenAI(api_key=os.getenv("DEEPSEEK_API_KEY"),base_url=os.getenv("BASE_URL"),model="deepseek-v3:671b",temperature=0.7,max_tokens=1024
)# 修正 XML 格式指令:结束标签必须是 </xml>
format_instructions = """请严格按照以下XML格式返回结果,仅输出XML内容,不要包含任何其他文字或说明:<xml><movie>电影名称1</movie><movie>电影名称2</movie><!-- 可包含多个 movie 标签 -->
</xml>"""prompt = PromptTemplate(template="{format_instructions}\n\n用户请求:{query}",input_variables=["query"],partial_variables={"format_instructions": format_instructions},
)actor_query = "生成陈道明的电影目录。"#输出提示词
print('#######################')
print(prompt.invoke({"query": actor_query}).text)
print('#######################')chain = prompt | llm | XMLOutputParser()result = chain.invoke({"query": actor_query})
print('----------------------')
print("解析成功,结果:")
print(result)

 返结果:

#######################
请严格按照以下XML格式返回结果,仅输出XML内容,不要包含任何其他文字或说明:<xml><movie>电影名称1</movie><movie>电影名称2</movie><!-- 可包含多个 movie 标签 -->
</xml>用户请求:生成陈道明的电影目录。
#######################
----------------------
解析成功,结果:
{'xml': [{'movie': '英雄'}, {'movie': '无间道3:终极无间'}, {'movie': '归来'}, {'movie': '唐山大地震'}, {'movie': '康熙王朝'}, {'movie': '围城'}, {'movie': '我的1919'}, {'movie': '楚汉传奇'}]}

 一个标准的xml格式返回

更多学习资料尽在老虎网盘资源:http://resources.kittytiger.cn/ 老虎网盘资源

重点知识:

代码结构与功能概述

本段代码构建了一个基于 LangChain 的结构化数据生成管道,核心目标是让大语言模型(LLM)以严格标准的 XML 格式返回陈道明参演的电影列表。整个流程通过提示词工程、模型调用与输出解析三步协同,确保最终结果可直接被程序解析使用,避免非结构化文本带来的处理负担。
 

提示词模板:强制 XML 格式输出

代码通过 PromptTemplate 显式定义格式指令(format_instructions),要求模型:
  1. 仅输出 XML 内容,禁止附加说明、注释或多余文字;
  2. 使用标准 XML 标签结构,以 <xml> 为根节点,每个电影名称包裹在独立的 <movie> 子标签中;
  3. 严格闭合标签,如 </xml> 结束根节点,避免格式错误。
    这种设计从源头约束模型行为,大幅降低后续解析失败风险。

模型调用:定向生成结构化内容

选用 deepseek-v3:671b 模型并设置 temperature=0.7,在保证创造性的同时维持输出稳定性。关键点在于:
  • 提示词中明确用户请求(“生成陈道明的电影目录”)与格式指令分离,使模型聚焦于内容生成格式遵循双重任务;
  • 通过 max_tokens=1024 限制输出长度,避免冗余信息干扰 XML 结构完整性。

输出解析器:验证并转换 XML 数据

XMLOutputParser 作为链式调用的最终环节,承担双重职责:
    1. 格式校验:自动检测 XML 标签闭合性、嵌套合法性,若模型输出不符合标准(如缺失结束标签),将抛出解析异常;
    2. 结构化转换:将原始 XML 字符串转换为 Python 字典(如 {'xml': {'movie': ['电影A', '电影B']}}),便于程序直接提取数据,无需手动正则匹配。

 

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

相关文章:

  • ABB ACS510 变频器恒压供水与昆仑通泰触摸屏 485 通讯实现
  • 讲讲广州箱包肩带板扣五金定制供应商排名,哪家更值得合作 - 工业推荐榜
  • 2026年昆明挂坠采购全攻略:从源头到精工的厂家评测 - 2026年企业推荐榜
  • JS Number 精度丢失问题
  • 2026年昆明花园旅居深度测评:六家宝藏酒店谁是你的心头好? - 2026年企业推荐榜
  • 有哪些好用的AI写论文的工具?6款写论文的AI工具,知网查重一把通过无忧! - 掌桥科研-AI论文写作
  • 2026年徐州地区高评价铝基中间合金厂家盘点 - 2026年企业推荐榜
  • 抗真菌洗发水推荐:从根源解决脂溢性皮炎头屑 - 博客万
  • 2026年板式换热器价格大揭秘,扬州镇江地区品牌厂家哪家好 - myqiye
  • 脂溢性皮炎洗发水使用建议:频率与时长 - 博客万
  • 2026年青少年普法宣教展厅建设品牌企业价格大揭秘 - 工业推荐榜
  • 分析来图定制的丝杠厂家,数控设备丝杠供应商怎么选择 - 工业设备
  • 数字广播纽格立NGA-602 DRM数字广播专业监测接收机中波台站数字化改造适用
  • 2026年好用的酿酒降温304不锈钢全自动晾床厂家推荐 - mypinpai
  • 盘点2026年性价比高的PVC防静电地板加工厂,珠海地区推荐 - 工业品网
  • 数字广播媒体服务器NGA-101 DRM媒体编码器广播中波广播站数字化改造适用
  • 参考文献崩了?AI论文工具 千笔ai写作 VS PaperRed,本科生写论文更轻松!
  • 【控制】基于MPC模型预测控制和稀疏识别非线性动力学算法辨识旋翼飞行器的动力学模型附Matlab代码
  • 对比一圈后,一键生成论文工具,千笔·专业学术智能体 VS Checkjie
  • 二硫化硒洗发水选购指南:浓度、品牌、用法全解析 - 博客万
  • 使用LSTM进行情感分类:原理与实现剖析
  • 【数据分析】具有稳定性保证的Hammerstein 系统的数据驱动控制附matlab代码
  • 嵌入式处理器架构
  • 盘点2026年苏州靠谱的钎焊换热器定制厂家,节能优势大揭秘 - myqiye
  • uniapp中使用canvas和requestAnimationFrame显示粒子动画
  • 基于Matlab的工件测量系统
  • 2026年性价比高的屋面板品牌厂家排名,选购指南来了 - 工业品牌热点
  • 详细介绍:分布式虚拟 Actor 技术在码头生产调度中的应用研究
  • 前端实现速度线
  • 2026年实盘股票配资平台权威榜单:强监管背景下的十大正规安全机构解析 - 资讯焦点