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

LangChain入门(七) 提取和输出结构化数据

从结构化的文本中提取结构化信息,在自然语言处理中,表格数据抽取是一个重要的任务,它涉及到从文本中提取到结构化数据。

这个里面主要用到pydantic。pydantic是python中使用最广泛的数据验证库。用pydantic可以处理数据、验证数据、定义数据格式、虚拟化和反虚拟化,类型转换等。

可以通过model.with_structured_output() 可以将输出转换为结构化数据

from langchain.chat_models import init_chat_model
from langchain.prompts.chat import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from pydantic.v1 import BaseModel,Field
from typing import Optional
import os;api_key = os.environ.get("DEEPSEEK_API_KEY");
api_base = "https://api.deepseek.com/"
#定义模型
model = init_chat_model(model="deepseek-chat",api_key=api_key,api_base=api_base,temperature=0.8,max_tokens=1024,model_provider="deepseek",)#定义一个数据模型
class Person(BaseModel):"""  关于一个人的模型"""name:Optional[str]=Field(default=None,description="表示人的名字")hair_color:Optional[str] = Field(default=None,description="如果知道的话,这个人的头发颜色")height_in_meters:Optional[str] = Field(default=None ,description="以米为单位测量的高度")class ManyPerson(BaseModel):people:list[Person]# 定义自定义提示以提供指令和任何其他上下文
# 1)你可以在提示词模板中添加示例以提高提取质量
# 2)引入额外的参数以考虑上下文(例如,包括有关图区文本的文档的元数据)prompt = ChatPromptTemplate.from_messages([("system","你是一个专业的提取算法。只从未结构化文本中提取详细信息。如果你不知道要提取的属性的值,返回该属性的值为null"),("human","{text}")]
)chain = {'text':RunnablePassthrough() } |prompt| model.with_structured_output(schema=ManyPerson)text='马路上走来一个女生,长长的黑头发披在肩上,大概1米7左右.走在她旁边的是她男朋友刘海,比她高10厘米'resp=chain.invoke(text)print(resp)

http://www.xdnf.cn/news/5452.html

相关文章:

  • 【计算机视觉】基于深度学习的实时情绪检测系统:emotion-detection项目深度解析
  • Day116 | 灵神 | 二叉树 | 二叉搜索树中第K小的元素
  • 软件测试复习第五章
  • 利用类型别名定义复杂联合类型和交叉类型
  • cheat engine: Scan error no readable memory found
  • 学习通刷课稳定版(美化面板+完全免费)
  • 【RP2350】香瓜树莓派RP2350之新建工程
  • JAVA 锁—— synchronized
  • linux 三剑客命令学习
  • C++基本知识 —— 缺省参数·函数重载·引用
  • 蓝桥杯14届国赛 合并数列
  • 【Python 算法零基础 2.模拟 ⑤ 基于栈和队列】
  • 【JEECG 组件扩展】JSwitch开关组件扩展单个多选框样式
  • 【AI智能推荐系统】第八篇:可解释AI在推荐系统中的实践与价值
  • 深度优先与广度优先:如何用算法思维优化学习策略?
  • 250510-Linux离线配置N8N环境+屏蔽外网请求
  • python使用AES进行加密和解密
  • JavaSE基础
  • python: 为项目创建单独的虚拟环境步骤
  • QSS样式表的选择器
  • 蓝牙RFCOMM协议概述
  • 第二十一节:图像金字塔-高斯金字塔
  • TTS-Web-Vue系列:移动端侧边栏与响应式布局深度优化
  • OSCP备战-kioptrixvm3详细解法
  • [Java实战]Spring Boot 中Starter机制与自定义Starter实战(九)
  • Linux为啥会重新设置中断请求号与中断向量号之间的关系?
  • vector--OJ1
  • 【外网下载Jar包】
  • AI技术驱动SEO关键词智能布局
  • go程序编译成动态库,使用c进行调用