使用 Flask 快速构建 基于langchain 和 chatGPT的 PDF摘要总结

简介

这里不对 langchain 和 chatGPT 进行介绍,仅对实现过程进行整理

环境

Python >=3.8
Flask2.2.3
Jinja2
3.1.2
langchain0.0.143
openai
0.27.4

实现 总结功能

使用 langchain 和 openai 接口实现总结功能
实现逻辑:通过text_splitter 将pdf 分块,送入 langchain 的summarize_chain中进行处理

同样也可以使用 OpenAIEmbeddings 来实现,文档地址:langchain 官方文档

创建文件:summarize.py

from langchain import PromptTemplate
from langchain.callbacks import get_openai_callback
from langchain.chains.summarize import load_summarize_chain
from langchain.text_splitter import RecursiveCharacterTextSplitter

def summarize_docs(docs, doc_url, llm):
    print(f'You have {
     len(docs)} document(s) in your {
     doc_url} data')
    print(f'There are {
     len(docs[0].page_content)} characters in your document')

    text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
    split_docs = text_splitter.split_documents(docs)
    print(f'You have {
     len(split_docs)} split document(s)')

    prompt_template = """Write a concise summary of the following:

    {text}

    CONCISE SUMMARY IN CHINESE:"""
    PROMPT = PromptTemplate(template=prompt_template, input_variables=["text"])
    chain = load_summarize_chain(llm, chain_type="map_reduce", verbose=False, return_intermediate_steps=True,
                                 map_prompt=PROMPT, combine_prompt=PROMPT)

    response = ""
    with get_openai_callback() as cb:
        response = chain({
   "input_documents": split_docs}, return_only_outputs=True)
        print(f"Total Tokens: {
     cb.total_tokens}")
        print(f"Prompt Tokens: {
     cb.prompt_tokens}")
        print(f"Completion Tokens: {
     cb.completion_tokens}")
        print(f"Successful Requests: {
     cb.successful_requests}
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值