当前位置: 首页 > news >正文

深圳企业网站建设维护摄影网站app

深圳企业网站建设维护,摄影网站app,wordpress 内链,网站管理助手4.0接下来#xff0c;我们开始在web框架上整合 LangChain、OpenAI、FAISS等。 一、PDF库 因为项目是基于PDF文档的#xff0c;所以需要一些操作PDF的库#xff0c;我们这边使用的是PyPDF2 from PyPDF2 import PdfReader# 获取pdf文件内容 def get_pdf_text(pdf):text … 接下来我们开始在web框架上整合 LangChain、OpenAI、FAISS等。 一、PDF库 因为项目是基于PDF文档的所以需要一些操作PDF的库我们这边使用的是PyPDF2 from PyPDF2 import PdfReader# 获取pdf文件内容 def get_pdf_text(pdf):text pdf_reader PdfReader(pdf)for page in pdf_reader.pages:text page.extract_text()return text 传入 pdf 文件路径返回 pdf 文档的文本内容。 二、LangChain库 1、文本拆分器 首先我们需要将第一步拿到的本文内容拆分我们使用的是 RecursiveCharacterTextSplitter 默认使用 [\n\n,\n, ] 来分割文本。 from langchain.text_splitter import RecursiveCharacterTextSplitter# 拆分文本 def get_text_chunks(text):text_splitter RecursiveCharacterTextSplitter(chunk_size1000,# chunk_size768,chunk_overlap200,length_functionlen)chunks text_splitter.split_text(text)return chunks 其中这里 chunk_size 参数要注意这里是指文本块的最大尺寸如果用chatgpt3.5会在问答的时候容易出现token长度超过4096的异常这个后面会说如何调整只需要换一下模型就好了。 这个参数对于向量化来说比较重要因为到时候喂给OpenAI去分析的时候携带的上下文内容就会比较多这样准备性和语义分析上也有不少的帮助。 2、向量库 项目使用 FAISS就是将 pdf 读取到的文本向量化以后通过 FAISS 保存到本地后续就不需要再执行向量化就可以读取之前的备份。 from langchain.vectorstores import FAISS from langchain.embeddings import OpenAIEmbeddings# 保存 def save_vector_store(textChunks):db FAISS.from_texts(textChunks, OpenAIEmbeddings())db.save_local(faiss)# 加载 def load_vector_store():return FAISS.load_local(faiss, OpenAIEmbeddings()) 其中 faiss 参数为保存的目录名称默认在项目同级目录下生成。 这里使用 OpenAI 的方法 OpenAIEmbeddings 来进行向量化。 3、检索型问答链 from langchain.chains import RetrievalQA from langchain.chat_models import ChatOpenAI from langchain.prompts import PromptTemplate# 获取检索型问答链 def get_qa_chain(vector_store):prompt_template 基于以下已知内容简洁和专业的来回答用户的问题。如果无法从中得到答案清说根据已知内容无法回答该问题答案请使用中文。已知内容:{context}问题:{question}prompt PromptTemplate(templateprompt_template,input_variables[context, question])return RetrievalQA.from_llm(llmChatOpenAI(model_namegpt-3.5-turbo-16k), retrievervector_store.as_retriever(), promptprompt) 1RetrievalQA 检索行问答链 这里使用 RetrievalQA这种链的缺点是一问一答是没有history的是单轮问答。 2自定义提示 PromptTemplate 这里还是使用到自定义提示 PromptTemplate主要作用是使 OpenAI 能根据我们传入的向量文本为蓝本限制它的回答范围并要求使用中文回答。这样的好处在于如果我们问一些非 pdf 涉及的内容OpenAI 会返回无法作答而不是根据自己的大模型数据来回答问题。 3llm 模型 我们还是用 Chat 模型作为 llm 的输入模型这里可以看到我们使用的 model 为 gpt-3.5-turbo-16k它可以支持 16384 个tokens而 gpt-3.5-turbo 只支持 4096 个tokens 所以这里就回答了上面文本拆分器 chunk_size 参数如果使用 gpt-3.5-turbo 模型笔者尝试过最大可能就是只能到 768不过这个具体要看向量化以后携带的文本的大小tokens而定。 不过使用 gpt-3.5-turbo-16k 也是有代价的就是它比  gpt-3.5-turbo 要贵大概是2倍的价格。 三、路由整合 我们将上面实现的三个工具方法整合到路由主要实现 pdf 文件的本地向量初始化还有基于向量化的 pdf 文档内容进行问答。 from fastapi import APIRouter, Body from ..util import pdf, langchain, fassrouter APIRouter(prefix/chat )# 初始化pdf文件 router.get(/init_pdf) async def init_pdf():# pfd文件路径pdf_doc xxx.pdf# get pdf textraw_text pdf.get_pdf_text(pdf_doc)# get the text chunkstext_chunks openai.get_text_chunks(raw_text)# savefass.save_vector_store(text_chunks)return {success: True}# 问答 router.post(/question) async def question(text: str Body(embedTrue) ):vector_store fass.load_vector_store()chain langchain.get_qa_chain(vector_store)response chain({query: text})return {success: True, code: 0, reply: response} 1初始化 pdf 文件 执行接口不报错的话会看到项目同级目录下会多了一个 faiss 目录里面包括两个索引文件。 2配置 OpenAI  因为项目使用到 OpenAI 的接口所以我们这边需要全局配置 api-key还有我们云函数上的代理地址。 from fastapi import FastAPI from app.routers import chat import sys import os from dotenv import load_dotenv, find_dotenv import openaiload_dotenv(find_dotenv()) openai.api_key os.getenv(OPENAI_API_KEY) openai.api_base os.getenv(OPENAI_API_BASE)# 防止相对路径导入出错 sys.path.append(os.path.join(os.path.dirname(__file__)))app FastAPI()# 将其余单独模块进行整合 app.include_router(chat.router) 调整后的 main.py 文件如上图项目中需要加入 .env 文件 OPENAI_API_KEY OPENAI_API_BASEhttps://xxxxxx/v1 要注意api_base的地址后面一般云函数地址的后面要加上 /v1  四、运行和测试 至此一个简单的基于 LangChain 库的 PDF文档问答就完成了我们随便拿一份网上能找到保险pdf做个实验看看效果如何 我们就来问 pdf 中的这段内容问题是 风险的特征有哪些 我们来看看回复几个大的要点也基本答上来了效果也算可以了。 {success: true,code: 0,reply: {query: 风险的特征有哪些,result: 风险的特征包括以下几个方面\n1. 风险的客观性风险是一种客观存在与人的意志无关独立于人的意识之外的客观存在。\n2. 风险的普遍性在社会经济生活中人们面临各种各样的风险从个人、企业到国家和政府机关都无处不在。\n3. 风险的损害性风险与人们的经济利益密切相关会给人们的经济造成损失以及对人的生命造成伤害。\n4. 某一风险发生的不确定性虽然风险是客观存在的但对某一具体风险而言其发生是偶然的是一种随机现象。\n5. 总体风险发生的可测性虽然个别风险事故的发生是偶然的但大量风险事故往往呈现出明显的规律性可以通过统计方法进行准确测量。} } 我们再尝试问一些不在 pdf 里的问题如何评价中国足球 {success: true,code: 0,reply: {query: 如何评价中国足球,result: 根据已知内容无法回答该问题。} } 这跟我们上面 自定义提示 PromptTemplate 的内容是一致的。 最后附上 仓库地址
http://www.hkea.cn/news/14567939/

相关文章:

  • 手机网站页面设计要求浙江十大外贸公司排名
  • 要如何关闭公司网站 撤销备案上海公司网站建设公司
  • 中国建设银行预约网站无极官网下载
  • 杨园建设社区网站PHP是做网站最好的
  • 公司网站建设工作方案html网站地图
  • 新的网站设计公司网站是用php还是asp 怎么区别
  • 营销型科技网站建设php网站开发软件
  • 昆明网站优化公司浏览器主页被篡改2345
  • 龙岩做网站公司有哪些网络企业
  • 杭州市城乡规划局建设局官方网站html网页框架代码
  • 腾讯云 建网站从域名到网站建设完成的流程
  • 网站域名绑定ipwordpress打包成app
  • wordpress自己新建模板宜昌网站seo收费
  • 高端网站建设一般多少钱天津建设工程信息网查询
  • 瑞安地区建设网站朔州路桥建设有限责任公司网站
  • 做网站需要的服务器教育机构网站开发
  • 用自己的电脑做服务器搭建网站wordpress企业主题制作
  • 网站开发那个好西北电力建设第一工程公司网站
  • 福州做网站的公司有哪些网站建设项目概要设计方案
  • 木兰网站建设wordpress换域名空间
  • 云南省建设厅官方网站不良记录怎样在外管局网站做延期付款
  • 网站制作 电子商城受欢迎的锦州网站建设
  • 如何建个人摄影网站专门做视频的网站吗
  • 在线视频制作网站php网站怎么样
  • 网站名称是什么意思wordpress+360友链
  • 广州市外贸网站建设服务机构手机网站建设文章
  • 网站建设一百万中文网站建设公司
  • 网站建设流程王晴儿301网站重定向怎么做
  • 网站设计需要准备哪些知识wordpress 发布软件
  • 融资融券配资网站建设网站整站下载