You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于LangChain、vLLM/OpenLLM搭建PDF问答LLM并提供API服务遇阻求助

基于LangChain+OpenAI的PDF问答API封装方案(CPU环境适配)

问题背景

已通过LangChain结合OpenAI text-davinci-003 与ChromaDB实现PDF问答功能,但在Azure Jupyter Notebook(仅CPU资源)下尝试vLLM、OpenLLM封装API失败,需适配CPU环境的轻量API方案。

解决方案

放弃依赖GPU的vLLM/OpenLLM,采用FastAPI搭建轻量API服务,无需GPU支持,适配现有CPU环境,步骤如下:

1. 安装依赖

在Notebook中执行以下命令安装必要工具:

!pip install fastapi uvicorn python-multipart nest-asyncio

2. 重构代码实现API封装

整合原有PDF问答逻辑与API接口,避免每次请求重复加载文档和向量库:

from langchain import OpenAI, VectorDBQA
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.document_loaders import PyPDFLoader
from fastapi import FastAPI
from pydantic import BaseModel

# 配置OpenAI密钥
OPENAI_API_KEY = 'XXXXXX'

# 初始化PDF加载与向量库(仅执行一次,减少重复开销)
loader = PyPDFLoader("https://Some_doc.pdf")
pages = loader.load_and_split()
embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY)
docsearch = Chroma.from_documents(pages, embeddings)

# 初始化LLM与问答链
llm = OpenAI(model_name='text-davinci-003', temperature=0, openai_api_key=OPENAI_API_KEY)
qa_chain = VectorDBQA.from_chain_type(llm=llm, chain_type='stuff', vectorstore=docsearch)

# 创建FastAPI实例
app = FastAPI()

# 定义请求数据结构
class QuestionRequest(BaseModel):
    question: str

# 定义问答接口
@app.post("/pdf-qa")
async def pdf_qa(request: QuestionRequest):
    result = qa_chain.run(request.question)
    return {"answer": result}

3. 启动API服务

在Notebook中执行以下代码启动服务:

import uvicorn
import nest_asyncio

# 修复Jupyter Notebook异步事件循环冲突问题
nest_asyncio.apply()

# 启动服务,端口可根据需求调整
uvicorn.run(app, host="0.0.0.0", port=8000)

4. 测试API接口

服务启动后,可通过两种方式测试:

  • 在Notebook中用requests发送请求:
import requests

response = requests.post("http://localhost:8000/pdf-qa", json={"question": "some question…"})
print(response.json())
  • 访问http://localhost:8000/docs查看自动生成的API文档,直接在线测试接口。

注意事项

  • Azure Jupyter Notebook需确保使用的端口(如8000)已在网络规则中开放。
  • 若PDF文档更新,需重新运行向量库初始化代码。

内容的提问来源于stack exchange,提问作者Lars UK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:25:15