LangChain学习笔记之ChatPromptTemplate

张开发
2026/4/20 21:13:50 15 分钟阅读

分享文章

LangChain学习笔记之ChatPromptTemplate
之前老版本引用的包from langchain_core.documents import Document from langchain_core.prompts import ChatPromptTemplate from langchain.chains.combine_documents import create_stuff_documents_chain from langchain.chains import create_extraction_chain新版引用from langchain_core.prompts import ChatPromptTemplate通过内容提取指定的模版需要的信息格式化输出import os from typing import List, Optional from pydantic import BaseModel, Field from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate OPENAI_API_KEY os.environ.get(API_KEY) class Person(BaseModel): 人物信息 name: str Field(description人的姓名) height: int Field(description身高单位厘米) clothing_color: Optional[str] Field(description衣服颜色) class PeopleExtraction(BaseModel): 从文本中提取的所有人的信息 people: List[Person] Field(description所有人的信息列表) llm ChatOpenAI( api_keyOPENAI_API_KEY, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, modelqwen3-max, temperature0 ) structured_llm llm.with_structured_output(PeopleExtraction) prompt ChatPromptTemplate.from_template( 请从以下文本中提取所有人的信息 {text} 请提取每个人的姓名、身高和衣服颜色。 ) chain prompt | structured_llm inp 小美身高165cm。小丽比小美高 10cm并且比她胖5斤。小丽喜欢穿蓝色外套小美喜欢穿绿色上衣小兰说她去年150cm但是今年就穿不了去年的衣服了大一号就会长5cm买了大一号的紫色裙子才能穿。 result chain.invoke({text: inp}) print(提取结果:) print( * 50) for i, person in enumerate(result.people, 1): print(f\n人物 {i}:) print(f 姓名: {person.name}) print(f 身高: {person.height} 厘米) print(f 衣服颜色: {person.clothing_color}) print(\n * 50) print(原始 JSON 结构:) print(result.model_dump_json(indent2, ensure_asciiFalse))输出结果如下C:\Windows\python12\python.exe E:\project\py\alipy\src\语义提取.py 提取结果: 人物 1: 姓名: 小美 身高: 165 厘米 衣服颜色: 绿色 人物 2: 姓名: 小丽 身高: 175 厘米 衣服颜色: 蓝色 人物 3: 姓名: 小兰 身高: 155 厘米 衣服颜色: 紫色 原始 JSON 结构: { people: [ { name: 小美, height: 165, clothing_color: 绿色 }, { name: 小丽, height: 175, clothing_color: 蓝色 }, { name: 小兰, height: 155, clothing_color: 紫色 } ] } Process finished with exit code 0

更多文章