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

Langchian - 自定义提示词模板 提取结构化的数据

场景:从自然语言中提取固定结构信息返回

例如:根据一段文字,提取文字中人的具体特征

马路上走来一个1米7的女生,她一头乌黑的长发披在肩上随风飘动,在她旁边的是她的男朋友,叫:刘山;比她高10厘米

如果想要提取上面这句话中人的身高及头发的颜色,并以固定的格式返回,该如何做呢?

下面用三个示例来阐述自定义提示词模板的使用方法

示例1

以下,主要功能是从一段非结构化文本中提取人物信息,并将其转换为结构化数据。

具体流程如下:


1.加载配置:从 .env 文件中读取模型和 API 相关的配置。

先从 .env 文件加载环境变量,该文件通常用于配置敏感信息(如 API 密钥)

创建一个 ChatOpenAI 实例,使用指定模型 (MODEL)、API 密钥 (OPENAI_API_KEY) 和基础 URL (BASE_URL)

import os
from typing import Optional, Listfrom dotenv import load_dotenv
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI
from pydantic.v1 import BaseModel, Field# 加载 .env 配置
load_dotenv()llm = ChatOpenAI(model=os.getenv("MODEL"),api_key=os.getenv("OPENAI_API_KEY"),base_url=os.getenv("BASE_URL")
)


2.定义结构化数据模型:使用 Pydantic 定义 Person 和 ManyPerson 类。

定义单个人的信息模型、多个人的信息模型

Person 是一个人的数据模型,包含姓名、发色和身高三个可选字段。
使用 Optional 表示这些属性可能为空,未提供时默认为 None。
Field 提供字段描述和默认值

ManyPerson 表示多个人的集合,其 people 属性是一个由 Person 对象组成的列表

class Person(BaseModel):"""关于一个人的数据模型"""name: Optional[str] = Field(default=None, description='表示人的名字')hair_color: Optional[str] = Field(default=None, description="
http://www.xdnf.cn/news/10496.html

相关文章:

  • bismark OT CTOT OB CTOB 以及mapping后的bam文件中的XG,XR列的含义
  • 用go从零构建写一个RPC(4)--gonet网络框架重构+聚集发包
  • 【知识点】第3章:基本数据类型
  • Linux之进程间通信
  • 600+纯CSS加载动画一键获取指南
  • NLP学习路线图(十九):GloVe
  • Windows不关防火墙,安全开放端口方法
  • 【图论 拓扑排序 贪心 临项交换】P5603 小 C 与桌游 题解|普及+
  • ubuntu 添加应用到启动菜单
  • Unity中应对高速运动的物体,碰撞组件失效的问题?
  • Android高级开发第四篇 - JNI性能优化技巧和高级调试方法
  • 小团队如何落地 Scrum 模型:从 0 到 1 的实战指南
  • Mysql水平分表(基于Mycat)及常用分片规则
  • 【黑马程序员uniapp】项目配置、请求函数封装
  • win32相关(虚拟内存和物理内存)
  • 模块二:C++核心能力进阶(5篇)篇二:《多线程编程:C++线程池与原子操作实战》(14万字深度指南)
  • PolyGen:一个用于 3D 网格的自回归生成模型 论文阅读
  • 计算机网络 : 应用层自定义协议与序列化
  • 【iOS安全】使用LLDB调试iOS App | LLDB基本架构 | LLDB安装和配置
  • Hadoop 大数据启蒙:初识 HDFS
  • 【基于阿里云搭建数据仓库(离线)】Data Studio创建资源与函数
  • sqlite-vec:谁说SQLite不是向量数据库?
  • 【C#】Quartz.NET怎么动态调用方法,并且根据指定时间周期执行,动态配置类何方法以及Cron表达式,有请DeepSeek
  • 【Linux】pthread多线程基础
  • 借助 Python 实现 AIOps 高级日志分析:实践者行动指南
  • leetcode0513. 找树左下角的值-meidum
  • 深入了解linux系统—— 进程间通信之管道
  • Java中Integer类常用静态方法详解
  • 吴恩达机器学习笔记(1)—引言
  • 大楼智能化建设设计方案(Word)