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

张开发
2026/6/8 4:11:52 15 分钟阅读
python-langchain框架(1-13 返回xml-格式解析器)
有的时候xml格式也是开发中是比较普遍的数据格式如何让大模型返回的数据是标准的xml格式看如下代码1234567891011121314151617181920212223242526272829303132333435363738394041424344fromlangchain.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAIfromlangchain.output_parsersimportXMLOutputParserimportosllmChatOpenAI(api_keyos.getenv(DEEPSEEK_API_KEY),base_urlos.getenv(BASE_URL),modeldeepseek-v3:671b,temperature0.7,max_tokens1024)# 修正 XML 格式指令结束标签必须是 /xmlformat_instructions请严格按照以下XML格式返回结果仅输出XML内容不要包含任何其他文字或说明xmlmovie电影名称1/moviemovie电影名称2/movie!-- 可包含多个 movie 标签 --/xmlpromptPromptTemplate(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(#######################)chainprompt | llm | XMLOutputParser()resultchain.invoke({query: actor_query})print(----------------------)print(解析成功结果)print(result)返结果1234567891011121314#######################请严格按照以下XML格式返回结果仅输出XML内容不要包含任何其他文字或说明xmlmovie电影名称1/moviemovie电影名称2/movie!--可包含多个 movie 标签--/xml用户请求生成陈道明的电影目录。#######################----------------------解析成功结果{xml: [{movie:英雄}, {movie:无间道3终极无间}, {movie:归来}, {movie:唐山大地震}, {movie:康熙王朝}, {movie:围城}, {movie:我的1919}, {movie:楚汉传奇}]}一个标准的xml格式返回更多学习重点知识代码结构与功能概述本段代码构建了一个基于 LangChain 的结构化数据生成管道核心目标是让大语言模型LLM以严格标准的 XML 格式返回陈道明参演的电影列表。整个流程通过提示词工程、模型调用与输出解析三步协同确保最终结果可直接被程序解析使用避免非结构化文本带来的处理负担。提示词模板强制 XML 格式输出代码通过PromptTemplate显式定义格式指令format_instructions要求模型仅输出 XML 内容禁止附加说明、注释或多余文字使用标准 XML 标签结构以xml为根节点每个电影名称包裹在独立的movie子标签中严格闭合标签如/xml结束根节点避免格式错误。这种设计从源头约束模型行为大幅降低后续解析失败风险。模型调用定向生成结构化内容选用deepseek-v3:671b模型并设置temperature0.7在保证创造性的同时维持输出稳定性。关键点在于提示词中明确用户请求“生成陈道明的电影目录”与格式指令分离使模型聚焦于内容生成与格式遵循双重任务通过max_tokens1024限制输出长度避免冗余信息干扰 XML 结构完整性。输出解析器验证并转换 XML 数据XMLOutputParser作为链式调用的最终环节承担双重职责格式校验自动检测 XML 标签闭合性、嵌套合法性若模型输出不符合标准如缺失结束标签将抛出解析异常结构化转换将原始 XML 字符串转换为 Python 字典如{xml: {movie: [电影A, 电影B]}}便于程序直接提取数据无需手动正则匹配。

更多文章