赞
踩
只需要看config目录下的config.py,data目录下的txt知识库文件,db向量数据库文件在持久化部署后会自动生成,route下的app.py,scripts目录下的Chroma向量库持久化部署.py这几个就可以,scripts目录下的考勤问答.py和test目录下都是单独的自己测试的小代码,可以不用关注
因为运行需要本地有C++的环境,所以需要安装C++生成工具,
勾选这一个就可以
地址:Microsoft C++ 生成工具 - Visual Studio
config.py
- # openai的key
- openai_api_key = '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'
-
- # 代理地址配置
- http_proxy = "http://127.0.0.1:7890"
-
- # 向量数据库path
- kaoqin_vector_db_path = "D:\PythonProjects\pythonTestProject\AiDemo\data\考勤.db"
- touzi_vector_db_path = "D:\PythonProjects\pythonTestProject\AiDemo\data\投资.db"
- yunying_vector_db_path = "D:\PythonProjects\pythonTestProject\AiDemo\data\产品运营问题反馈.db"
-
- # 问答库path
- kaoqin_qa_txt_path = "D:\PythonProjects\pythonTestProject\AiDemo\data\考勤.txt"
- touzi_qa_txt_path = "D:\PythonProjects\pythonTestProject\AiDemo\data\投资.txt"
- yunying_qa_txt_path = "D:\PythonProjects\pythonTestProject\AiDemo\data\产品运营问题反馈.txt"
'运行
data下的知识库,大家自己用自己的就可以了,知识库不要太长 ,太长的话需要对数据进行mapreduce操作,会比较麻烦,入门级不用考虑这么多,先跑起来再说,这里只展示考勤的txt知识库文件,至于db向量数据库文件,是运行chroma持久化部署之后会生成的
app.py
- import json
-
- from flask import Flask, request
- from langchain.embeddings.openai import OpenAIEmbeddings
- from langchain.vectorstores import Chroma
- from langchain import OpenAI
- from langchain.chains import RetrievalQA
- import os
-
- from AiDemo.config import config
- from AiDemo.config.config import kaoqin_vector_db_path
-
- os.environ["OPENAI_API_KEY"] = config.openai_api_key
- os.environ["http_proxy"] = config.http_proxy
- os.environ["https_proxy"] = config.http_proxy
- app = Flask(__name__)
-
- docsearch = Chroma(
- persist_directory=kaoqin_vector_db_path,
- embedding_function=OpenAIEmbeddings()
- )
-
- qa = RetrievalQA.from_chain_type(
- llm=OpenAI(model_name="text-davinci-003"),
- chain_type="stuff",
- retriever=docsearch.as_retriever(),
- return_source_documents=False,
- )
-
-
- @app.route('/get_single_answer', methods=['GET'])
- def get_single_answer():
- query = request.args.get('query')
- if query:
- if query.endswith("?") or query.endswith("?"):
- query = query
- else:
- query = query + "?"
- result = qa(
- {"query": "请根据你所知道的来回答下面这个问题:" + query + "如果你不知道,请不要乱说,可以让我去咨询相关的客服人员。"})
- result = result.__str__().replace("'", '"')
- final_result = json.loads(result)
- final_result = final_result['result']
- return '{"result": "' + final_result + '"}'
- else:
- return "请输入问题."
-
-
- if __name__ == '__main__':
- app.run(debug=True)
Chroma向量库持久化部署.py
- import os
- from langchain.document_loaders import UnstructuredFileLoader
- from langchain.text_splitter import CharacterTextSplitter
- from langchain.vectorstores import Chroma
- from langchain.embeddings.openai import OpenAIEmbeddings
-
- from AiDemo.config import config
- from AiDemo.config.config import kaoqin_vector_db_path, kaoqin_qa_txt_path
-
- os.environ["OPENAI_API_KEY"] = config.openai_api_key
- os.environ["http_proxy"] = config.http_proxy
- os.environ["https_proxy"] = config.http_proxy
-
- loader = UnstructuredFileLoader(kaoqin_qa_txt_path)
-
- documents = loader.load()
-
- source_chunks = []
-
- text_splitter = CharacterTextSplitter(
- separator=" ",
- chunk_size=100,
- chunk_overlap=20
- )
-
- split_docs = text_splitter.split_documents(documents)
-
- docsearch = Chroma.from_documents(
- documents,
- OpenAIEmbeddings(),
- persist_directory=kaoqin_vector_db_path
- )
- docsearch.persist()
- print("Chroma向量库持久化部署完成!")
-
1、需要导入包
- pip install langchain
- pip install openai
- pip install chromadb
- pip install ydata-profiling
- pip install requests
- pip install unstructured
-
暂时能想起来的就只有这些了,如果提示没有什么什么包,就知道pip就行
2、配置文件里的路径,改成自己本地的路径,openai的key,改成自己的key,我的key已经更新了其他的了,怎么注册申请openai的key,可以自行网上搜索
代理地址配置,也需要配置自己的VPN地址,运行项目,本地是要开启VPN的,这里推荐一个本人使用了快三年的稳定VPN源地址:注册 — 惊叹号cloud
需要先运行Chroma向量库持久化部署.py文件来将知识库加载到向量数据库中,之后再运行app.py中的main
最后就是用postman访问了
本文只是以能运行的demo为目的,中间各种知识的铺垫,如有不懂的话,可以去网上搜查各种资料,后续我可能也会继续发布相关的知识学习,有什么问题欢迎大家指正 。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。