文档

使用IDP+LLM完成文档总结

更新时间:

通过结合IDP输出的内容信息,配合大模型和用户的prompt,可以完成从文档内抽取、总结信息,或以特定格式输出,本文以llamaindex框架为例说明如何使用IDP+LLM完成文档总结能力。

方案说明

通过结合IDP输出的内容信息,配合大模型和用户的prompt,可以完成从文档内抽取、总结信息,或以特定格式输出,本文以llamaindex框架为例说明如何使用IDP+LLM完成文档总结能力。

环境准备

IDP接入llamaindex有两种方式可以调用:

  • 通过百炼DashScopeParser调用,您需要开通Docmind服务,获取AK、SK或通过dashscope开通dashscopeParse服务,获取API_KEY。

  • 通过Docmind文档智能解析服务调用,获取AK、SK。

环境使用前需要安装llamaindex依赖,以及dashscopeParser和IDP-SDK python安装包。

pip install llama-index
pip install llama-index-readers-dashscope
pip install llama-index-llms-dashscope
pip install https://doc-mind-pro.oss-cn-hangzhou.aliyuncs.com/doc_json_sdk-1.0.0-py3-none-any.whl

方案实现示例

方案可以通过百炼dashscopeParse进行调用,也可以通过阿里云Docmind文档智能服务进行调用。

重要

dashscopeParse和docmind文档解析为独立计费

通过DashScopeParser调用+Qwen完成文档总结

使用dashscopeParse进行解析,DashScopeParse,进行服务开通,获取API-KEY,设置环境变量:

export DASHSCOPE_API_KEY=YOUR_DASHSCOPE_API_KEY

调用服务并处理文档为documents,这里展示使用dashscope 中的qwen_max对文档内容documnets进行总结,需开通dashscope qwen服务。

import logging
import sys
import io
import os
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))

from llama_index.readers.dashscope.base import DashScopeParse
from llama_index.readers.dashscope.utils import ResultType
from llama_index.core import SummaryIndex
from doc_json_sdk.loader.document_model_loader import DocumentModelLoader
from doc_json_sdk.render.document_model_render import DocumentModelRender

# 文档列表
file_list = [
    # your files (accept doc, docx, pdf)
]
parse = DashScopeParse(result_type=ResultType.DASHCOPE_DOCMIND)
documents = parse.load_data(file_path=file_list)
# 处理json内容为markdown内容
for document in documents:
    loader = DocumentModelLoader()
    docmind_document = loader.load(doc_json_fp=io.StringIO(document["text"]))
    render = DocumentModelRender(document_model=docmind_document)
    docmind_markdown_result = render.render_markdown_result()
    document.update("text",docmind_markdown_result)

# 实用qwen_max作为llm
from llama_index.llms.dashscope import DashScope, DashScopeGenerationModels
dashscope_llm = DashScope(model_name=DashScopeGenerationModels.QWEN_MAX)
# 处理上面好的documents对象, 以prompt+document 拼接完成对文档处理任务
response = dashscope_llm.complete("总结文档内容,以markdown结果表示 \n: "+document.get_text())

# 输出大模型输出信息
print(response.text)

通过Docmind调用+Qwen完成文档总结

使用docmind文档智能解析,新手指引,进行开通,获取AccessKey ID、AccessKey Secret,设置环境变量。

export  ALIBABA_CLOUD_ACCESS_KEY_SECRET=YOUR_ALIBABA_CLOUD_ACCESS_KEY_SECRET 
export  ALIBABA_CLOUD_ACCESS_KEY_ID=YOUR_ALIBABA_CLOUD_ACCESS_KEY_ID 

调用服务并处理文档

from doc_json_sdk.loader.document_model_loader import DocumentModelLoader
from doc_json_sdk.handler.document_handler import DocumentExtractHandler, DocumentDigitalExtractHandler
from doc_json_sdk.render.document_model_render import DocumentModelRender
from llama_index.core.schema import Document

# your files (accept doc, docx, pdf) 
file_path = "" 
# loader file
loader = DocumentModelLoader(handler=DocumentExtractHandler())
# use file_path or file_url
docmind_document = loader.load(file_path=file_path)
# render as markdown
render = DocumentModelRender(document_model=docmind_document)
docmind_markdown_result = render.render_markdown_result()
document = Document(text=docmind_markdown_result,metadata= {})
documents = [document]

# 实用qwen_max作为llm
from llama_index.llms.dashscope import DashScope, DashScopeGenerationModels
dashscope_llm = DashScope(model_name=DashScopeGenerationModels.QWEN_MAX)
# 处理上面好的documents对象, 以prompt+document 拼接完成对文档处理任务
response = dashscope_llm.complete("总结文档内容,以markdown结果表示 \n: "+document.get_text())

# 输出大模型输出信息
print(response.text)