LangChain 实战:构建文档分析工具

本教程将带你使用 LangChain 构建一个智能文档分析工具,能够自动总结、提取信息和分析文档。

## 项目概述
构建一个文档分析工具,它能够:加载多种格式的文档(PDF、Word、TXT)、自动生成摘要、提取关键信息、分析情感和主题、生成结构化报告。

## 准备工作
“`bash
pip install langchain langchain-openai langchain-community python-docx PyPDF2 spacy
python -m spacy download zh_core_web_sm
“`

## 第一步:文档加载器
支持 PDF、Word(.docx)、TXT/MD 格式:

“`python
from langchain_core.documents import Document
from pathlib import Path

def load_pdf(file_path: str):
import PyPDF2
with open(file_path, ‘rb’) as file:
pdf_reader = PyPDF2.PdfReader(file)
text = “”
for page in pdf_reader.pages:
text += page.extract_text() + “n”
return [Document(page_content=text.strip(), metadata={“source”: file_path})]

def load_docx(file_path: str):
import docx
doc = docx.Document(file_path)
text = “n”.join([para.text for para in doc.paragraphs])
return [Document(page_content=text.strip(), metadata={“source”: file_path})]

def load_txt(file_path: str):
with open(file_path, ‘r’, encoding=’utf-8′) as f:
text = f.read()
return [Document(page_content=text.strip(), metadata={“source”: file_path})]
“`

## 第二步:文档摘要器
“`python
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

def summarize_document(document, model_name=”gpt-4o-mini”, summary_type=”detailed”):
llm = ChatOpenAI(model=model_name, temperature=0)

if summary_type == “detailed”:
template = “请详细总结以下文档内容。nn文档内容:n{content}”
elif summary_type == “brief”:
template = “用 3-5 句话简要总结以下文档。nn{content}”
elif summary_type == “bullet_points”:
template = “用要点列表总结以下文档。nn{content}”

prompt = ChatPromptTemplate.from_template(template)
chain = prompt | llm | StrOutputParser()
return chain.invoke({“content”: document.page_content})
“`

## 第三步:信息提取器
“`python
from langchain_core.output_parsers import JsonOutputParser

def extract_entities(document):
“””提取实体(人物、地点、组织等)”””
llm = ChatOpenAI(model=”gpt-4o-mini”, temperature=0)
prompt = ChatPromptTemplate.from_template(“””
从以下文档中提取实体信息,用 JSON 格式返回:
{{
“人物”: […],
“地点”: […],
“组织”: […],
“日期”: […],
“金额”: […]
}}

文档内容:
{content}
“””)
chain = prompt | llm | JsonOutputParser()
return chain.invoke({“content”: document.page_content})

def extract_key_information(document):
“””提取关键信息”””
llm = ChatOpenAI(model=”gpt-4o-mini”, temperature=0)
prompt = ChatPromptTemplate.from_template(“””
从以下文档中提取关键信息(主要结论、重要数据、行动项、风险、机遇),用 JSON 格式返回。

文档内容:
{content}
“””)
chain = prompt | llm | JsonOutputParser()
return chain.invoke({“content”: document.page_content})
“`

## 第四步:情感分析
“`python
def analyze_sentiment(document):
llm = ChatOpenAI(model=”gpt-4o-mini”, temperature=0)
prompt = ChatPromptTemplate.from_template(“””
分析以下文档的情感倾向(整体情感、情感强度、主要情绪、关键情感词语),用 JSON 格式返回。

文档内容:
{content}
“””)
chain = prompt | llm | JsonOutputParser()
return chain.invoke({“content”: document.page_content})
“`

## 第五步:主程序集成
整合所有分析功能到一个完整的文档分析流程中,支持命令行和批处理模式。

LangChain 实战:构建文档分析工具

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top
Copyright © 2026 Claude Code实战记录. 粤ICP备19017554号