场景:从自然语言中提取固定结构信息返回
例如:根据一段文字,提取文字中人的具体特征
马路上走来一个1米7的女生,她一头乌黑的长发披在肩上随风飘动,在她旁边的是她的男朋友,叫:刘山;比她高10厘米
如果想要提取上面这句话中人的身高及头发的颜色,并以固定的格式返回,该如何做呢?
下面用三个示例来阐述自定义提示词模板的使用方法
示例1
以下,主要功能是从一段非结构化文本中提取人物信息,并将其转换为结构化数据。
具体流程如下:
1.加载配置:从 .env 文件中读取模型和 API 相关的配置。
先从 .env 文件加载环境变量,该文件通常用于配置敏感信息(如 API 密钥)
创建一个 ChatOpenAI 实例,使用指定模型 (MODEL)、API 密钥 (OPENAI_API_KEY) 和基础 URL (BASE_URL)
import os
from typing import Optional, List
from 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="