示例中使用的公共代码:

from langchain_deepseek import ChatDeepSeek
chat = ChatDeepSeek(model="deepseek-chat",temperature=0,api_key=API_KEY,
)

使用方法:

  1. 引入解析器
  2. 实例化解析器
  3. 调用解析器的get_format_instructions()获得提示词,将提示词加入到请求的信息中
  4. 将实例化的解析器加入到链中

1. 列表

# 1. 引入解析器
from langchain.output_parsers import CommaSeparatedListOutputParser # 列表解析器
from langchain.prompts import PromptTemplate
#构造输入模版
template = "用户发起的提问:{question}{format_instructions}"# 2. 实例化输出解析器
output_parser = CommaSeparatedListOutputParser()# 3. 将输出解析器的解析格式作为提示词模版的部分内容
prompt = PromptTemplate.from_template(template,partial_variables={"format_instructions":output_parser.get_format_instructions()},
)
# 4. 将output_parser加入到链中
chain = prompt | chat | output_parser
chain.invoke({"question": "列出上海的三个景点"})
# 结果:['外滩', '豫园', '上海迪士尼度假区']

2. 枚举

from langchain.output_parsers.enum import EnumOutputParser
from langchain.prompts import PromptTemplate
from enum import Enum#定义枚举类型
class Colors(Enum):RED = "红色"BROWN = "棕色"BLACK = "黑色"WHITE = "白色"YELLOW = "黄色"#制定提示词模版
promptTemplate = PromptTemplate.from_template("{person}的皮肤主要是什么颜色? {instructions}")#制定输出解析器
parse = EnumOutputParser(enum=Colors)
# 解析器的提示词是中英文混合,如果直接使用该提示词则最后返回的结果不是想要的结果
# instructions = parse.get_format_instructions() 
instructions = "响应结果请选择以下选项之一:红色、棕色、黑色、白色、黄色,注意:只返回颜色名称,不添加任何解释或额外内容。"prompt = promptTemplate.partial(instructions=instructions)
chain = prompt | chat | parse
chain.invoke({"person":"亚洲人"})# 结果: <Colors.YELLOW: '黄色'>

3. json

from langchain_core.output_parsers import JsonOutputParser
from langchain_core.pydantic_v1 import BaseModel,Field
from langchain.prompts import PromptTemplate
from typing import List#定义JSON结构
class Book(BaseModel):title:str = Field(description="书名")author:str = Field(description="作者")description:str = Field(description="书的简介")beLike:List[str] = Field(description="作者的其他书籍的名称")parser = JsonOutputParser(pydantic_object=Book)prompt = PromptTemplate(template="{format_instructions}",input_variables=["query"],partial_variables={"format_instructions":parser.get_format_instructions()}
)chain = prompt | chat | parser
chain.invoke({"query":"请给我介绍中国最有名的科幻小说"})# 结果:
'''
{'title': '三体','author': '刘慈欣','description': '《三体》是刘慈欣创作的系列长篇科幻小说,讲述了地球人类文明与三体文明的信息交流、生死搏杀及两个文明在宇宙中的兴衰历程。作品以宏大的宇宙观和深刻的哲学思考,探讨了人类与外星文明的接触、科技发展对社会的影响以及宇宙文明的生存法则。','beLike': ['球状闪电', '超新星纪元', '流浪地球', '乡村教师', '中国2185']}
'''

4. xml

使用xml解释器时有个奇怪的问题,如果将解释器的实例加入链中,则返回json格式,如果不加入链中,则返回xml格式

from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import XMLOutputParserparser = XMLOutputParser()
prompt = PromptTemplate(template="{query},\n 要求:返回结果必须符合{format_instructions}",input_variables=["query"],partial_variables={"format_instructions": parser.get_format_instructions()},
)
chain = prompt | chat | parser
response = chain.invoke({"query": "⽣成周星驰1994年的电影作品列表,有电影名称,上映时间,按照时间降序排列"})
print(response)
# 结果:
'''
{'movies': [{'movie': [{'title': '国产凌凌漆'}, {'release_date': '1994-10-13'}]}, {'movie': [{'title': '九品芝麻官'}, {'release_date': '1994-03-31'}]}, {'movie': [{'title': '破坏之王'}, {'release_date': '1994-02-03'}]}, {'movie': [{'title': '大话西游之月光宝盒'}, {'release_date': '1994-01-21'}]}]}
'''
chain1 = prompt | chat
response1 = chain1.invoke({"query": "⽣成周星驰1994年的电影作品列表,有电影名称,上映时间,按照时间降序排列"})
print(response1.content)
# 结果:
'''
<?xml version="1.0" encoding="UTF-8"?>
<movies><movie><title>国产凌凌漆</title><release_date>1994-10-13</release_date></movie><movie><title>九品芝麻官</title><release_date>1994-03-31</release_date></movie><movie><title>破坏之王</title><release_date>1994-02-03</release_date></movie><movie><title>大话西游之月光宝盒</title><release_date>1994-01-21</release_date></movie>
</movies>
'''

5. 布尔

BooleanOutputParser:这个解析器专门用于解析布尔值(即对错、真假)的输出。例如,当模型输出是 True 或 False 时,该解析器可以准确识别和处理。

6. 时间

DatetimeOutputParser:该解析器用于处理日期和时间的输出。它能够将模型生成的日期时间字符串解析为标准的日期时间格式,方便后续处理。

7. 列表对象

ListOutputParser:当输出是一个列表时,无论是什么类型的列表,都可以使用这个解析器进行解析。它能将模型生成的列表字符串转换为实际的列表对象。

8. Pydantic

PydanticOutputParser:如果你的输出需要符合 Pydantic 的要求(Pydantic 是一个用于数据验证和转换的库),那么这个解析器就能派上用场。它可以确保输出数据符合预定义的数据模型和验证规则。

9. StructuredOutputParser

StructuredOutputParser:对于具有特定结构的输出,这个解析器可以大显身手。它能够处理复杂的结构,并将模型生成的结构化数据解析为易于使用的格式。

10. 自定义

from typing import Iterator
from langchain_core.messages import AIMessage,AIMessageChunk#自定义输出解析器
def parse(ai_message:AIMessage)->str:return ai_message.content.swapcase()
# 链式调用chat,返回的结果作为下一个链的参数,也就是ai_message,调用parse方法
chain = chat | parse
response = chain.invoke("用英语回答,你是谁")
response
# 结果: 'i AM dEEPsEEK-v3, AN ai ASSISTANT CREATED BY dEEPsEEK. mY PURPOSE IS TO HELP ANSWER YOUR QUESTIONS, PROVIDE INFORMATION, AND ASSIST WITH VARIOUS TASKS. fEEL FREE TO ASK ME ANYTHING! 😊'

11. 字符串

StrOutputParser

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/922031.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/922031.shtml
英文地址,请注明出处:http://en.pswp.cn/news/922031.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode算法日记 - Day 37: 验证栈序列、N叉树的层序遍历

目录 1. 验证栈序列 1.1 题目解析 1.2 解法 1.3 代码实现 2. N叉树的层序遍历 2.1 题目解析 2.2 解法 2.3 代码实现 1. 验证栈序列 https://leetcode.cn/problems/validate-stack-sequences/description/ 给定 pushed 和 popped 两个序列&#xff0c;每个序列中的 值…

金融数据库--3Baostock

一、 Baostock 是什么&#xff1f;Baostock&#xff08;宝硕股票&#xff09;是一个免费、开源的证券数据平台&#xff08;SDK&#xff09;&#xff0c;旨在为金融量化投资者、研究人员和学生提供稳定、准确、易用的A股历史数据和相关金融数据。其核心是一个 Python 库&#xf…

微信小程序-1-微信开发者工具环境搭建和初始化创建项目

文章目录1 小程序概述1.1 什么是微信小程序1.2 大前端概念1.3 账号注册1.4 开发流程1.5 小程序成员2 创建项目2.1 创建项目流程2.2 创建项目2.3 本地开发支持http3 项目目录3.1 项目目录结构3.2 配置文件3.2.1 app.json(全局配置)3.2.2 xxx.json(页面配置)3.2.3 project.config…

Go语言开发AI应用

为什么选择Go语言开发AI应用在人工智能快速发展的今天&#xff0c;选择合适的编程语言对于AI应用的成功至关重要。虽然Python长期以来被认为是AI开发的首选语言&#xff0c;但Go语言正在逐渐崭露头角&#xff0c;成为AI应用开发的有力竞争者。Go语言的核心优势1. 卓越的性能表现…

10. 游戏开发中的TCP与UDP

1.TCP和UDP 2.TCP为什么慢于UDP 3.可靠UDP1.TCP和UDP 1).通过打电话的方式说明TCP和UDPa.TCP(传输控制协议), 就像打电话- 需要先拨号, 接通, 问候(建立连接)- 你一句, 我一句, 对方没有听清会要求你重复(确认与重传)- 保证对话有条不紊, 内容准确无误(可靠, 有序)- 如果信号不…

CMap常用函数

CMap 是 MFC 中用于存储键值对&#xff08;key-value&#xff09;的关联容器类&#xff0c;类似于 C 标准库中的 std::map&#xff0c;但依赖 MFC 框架实现。它采用哈希表&#xff08;Hash Table&#xff09;作为底层数据结构&#xff0c;支持高效的键值查找、插入和删除操作。…

Rocky9.0去堆叠双发arp(支持“ARP 广播双发”)

摘要 在去堆叠/MLAG 场景下&#xff0c;默认 bonding 只会以单口回复 ARP&#xff0c;另一台交换机收不到 ARP Reply。本文在 Linux bonding 驱动中增加参数 arp_broadcast_mode&#xff0c;当开启时对 ARP 包临时切换到 广播模式&#xff0c;实现双口同时发 ARP Reply。文内提…

网页连接摄像头

摄像机处理 <!-- camera_solve.html --> <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

FPGA雷达信号处理之:自适应门限阈值

一、原理 参考这个博主&#xff0c;讲的很仔细&#xff1a;基于脉冲功率的雷达脉冲参数检测原理详解 二、FPGA实现 使用system generator搭建算法模型如下&#xff1a; 在这里&#xff0c;滤波器窗长度为8&#xff0c;原博主设置为50效果更好&#xff0c;门限公式如下&#xf…

Vue 中实现选中文本弹出弹窗的完整指南

在现代 Web 应用中&#xff0c;选中文本后显示相关操作或信息是一种常见的交互模式。本文将详细介绍如何在 Vue 中实现选中文本后弹出弹窗的功能&#xff0c;包括其工作原理、多种实现方式以及实际项目中的应用示例。 一、实现原理 1. 文本选中检测机制 浏览器提供了 Select…

第4节-排序和限制-FETCH

摘要: 在本教程中&#xff0c;你将学习如何使用 PostgreSQL 的 FETCH 子句从查询中检索部分行。 PostgreSQL FETCH 简介 在 PostgreSQL 中&#xff0c;OFFSET 子句的作用类似于 LIMIT 子句。FETCH 子句允许你限制查询返回的行数。 LIMIT 子句并非 SQL 标准的一部分。不过&#…

洛谷 P2680 [NOIP 2015 提高组] 运输计划(二分答案 + 树上差分)

题目链接题目概括与评价 很经典&#xff0c;突破口藏的很深&#xff0c;求最小值这里&#xff0c;是问题切入点&#xff0c;想到用二分答案&#xff0c;然后思考怎么写 f_check 函数。二分答案树上差分。代码 #include <iostream> #include <vector> #include <…

接力邓承浩,姜海荣能讲好深蓝汽车新故事吗?

出品 | 何玺排版 | 叶媛深蓝汽车迎来新话事人。9月5日&#xff0c;新央企长安汽车旗下品牌深蓝汽车传出新的人事调整。多家业内媒体报道称&#xff0c;荣耀前中国区CMO姜海荣已正式加入长安汽车&#xff0c;并出任旗下深蓝汽车CEO一职。原CEO邓承浩则升任深蓝汽车董事长&#x…

esp32-c3写一个收集附近 WiFi 和蓝牙信号通过

下面给你一个基于 ESP-IDF(v5.x) 的完整示例&#xff1a;在 ESP32-C3 上同时扫描附近 Wi-Fi 与蓝牙&#xff08;BLE&#xff09;广播&#xff0c;把结果以 JSON 结构统一输出到串口&#xff0c;并且可可选通过 MQTT 上报到服务器&#xff08;打开一个宏即可&#xff09;。日志默…

文心大模型 X1.1:百度交出的“新深度思考”答卷

文心大模型 X1.1&#xff1a;百度交出的“新深度思考”答卷 2025年9月9日&#xff0c;WAVE SUMMIT 2025深度学习开发者大会在北京正式召开&#xff0c;由深度学习技术及应用国家工程研究中心主办&#xff0c;百度飞桨与文心大模型联合承办。大会上&#xff0c;百度正式发布了基…

开始 ComfyUI 的 AI 绘图之旅-Flux.1图生图(八)

文章标题一、Flux Kontext Dev1.关于 FLUX.1 Kontext Dev1.1 版本说明1.2 工作流说明1.3 模型下载2.Flux.1 Kontext Dev 工作流2.1 工作流及输入图片下载2.2 按步骤完成工作流的运行3.Flux Kontext 提示词技巧3.1 基础修改3.2 风格转换3.3 角色一致性3.4 文本编辑4.常见问题解决…

Java 生成微信小程序二维码

1. java 二维码生成工具类import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import com.pdatao.api.controller.file.FileController; import com.pdatao.api.error.CommunityException; import org.apache.commons.io.IOUtils; import org.springframe…

智慧健康触手可及:AI健康小屋——未来健康管理的全能守护者

AI健康小屋&#xff0c;这座融合人工智能、物联网与医疗科技的“健康堡垒”&#xff0c;正悄然重构健康管理生态。它以科技为引擎&#xff0c;将专业医疗资源下沉至社区、企业、家庭&#xff0c;通过智能检测、精准分析、个性化干预&#xff0c;实现从疾病治疗到主动预防的健康…

[工作表控件19] 验证规则实战:如何用正则表达式规范业务输入?

在企业应用中,数据准确性至关重要。工作表控件通过“验证规则”能力,支持在文本字段和附件字段中使用正则表达式(RegEx)进行格式校验。它能帮助开发者轻松实现邮箱、身份证号、车牌号、URL 等格式的高效验证,大幅提升数据质量与表单使用体验。 一、官方功能介绍与基础能力…

uniapp分包实现

关于分包优化的说明 在对应平台的配置下添加"optimization":{"subPackages":true}开启分包优化 目前只支持mp-weixin、mp-qq、mp-baidu、mp-toutiao、mp-kuaishou的分包优化 分包优化具体逻辑&#xff1a; 静态文件&#xff1a;分包下支持 static 等静态…