FlashCode-Lab commited on
Commit
b994c1e
·
verified ·
1 Parent(s): da656c9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -11
app.py CHANGED
@@ -4,38 +4,46 @@ from langchain_huggingface import HuggingFaceEndpoint, HuggingFaceEmbeddings
4
  from langchain_community.vectorstores import FAISS
5
  from langchain_community.document_loaders import TextLoader
6
  from langchain_text_splitters import CharacterTextSplitter
7
- # 核心修正:使用新的导入路径
8
  from langchain.chains.retrieval_qa.base import RetrievalQA
9
 
10
- # 1. 初始化引擎
11
  llm = HuggingFaceEndpoint(
12
  repo_id="Qwen/Qwen2.5-7B-Instruct",
13
- huggingfacehub_api_token=os.getenv("HF_TOKEN")
 
14
  )
15
 
16
- # 2. 检查并加载知识库
17
  if not os.path.exists("knowledge.txt"):
18
  with open("knowledge.txt", "w", encoding="utf-8") as f:
19
- f.write("私有大脑已上线。")
20
 
21
  loader = TextLoader("knowledge.txt", encoding="utf-8")
22
  docs = CharacterTextSplitter(chunk_size=500, chunk_overlap=50).split_documents(loader.load())
23
- # 使用中文友化的向量模型
24
  embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh-v1.5")
25
  vectorstore = FAISS.from_documents(docs, embeddings)
26
 
27
- # 3. 建问答链
28
  qa_chain = RetrievalQA.from_chain_type(
29
  llm=llm,
30
  retriever=vectorstore.as_retriever(search_kwargs={"k": 3})
31
  )
32
 
33
- # 4. 聊天函数
34
- def chat(message, history):
35
  try:
 
36
  response = qa_chain.invoke({"query": message})
37
  return response["result"]
38
  except Exception as e:
39
- return f"大脑响应异常,请检查 Token。错误原因: {str(e)}"
40
 
41
- gr.ChatInterface(chat, title="全能私有大脑 v2.0").launch()
 
 
 
 
 
 
 
 
 
4
  from langchain_community.vectorstores import FAISS
5
  from langchain_community.document_loaders import TextLoader
6
  from langchain_text_splitters import CharacterTextSplitter
 
7
  from langchain.chains.retrieval_qa.base import RetrievalQA
8
 
9
+ # 1. 初始化大模型 - 切换到更兼容的调用模式
10
  llm = HuggingFaceEndpoint(
11
  repo_id="Qwen/Qwen2.5-7B-Instruct",
12
+ huggingfacehub_api_token=os.getenv("HF_TOKEN"),
13
+ task="text-generation" # 明确指定任务,防止接口混淆
14
  )
15
 
16
+ # 2. 加载私有知识库
17
  if not os.path.exists("knowledge.txt"):
18
  with open("knowledge.txt", "w", encoding="utf-8") as f:
19
+ f.write("私有大脑初始化成功。")
20
 
21
  loader = TextLoader("knowledge.txt", encoding="utf-8")
22
  docs = CharacterTextSplitter(chunk_size=500, chunk_overlap=50).split_documents(loader.load())
 
23
  embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh-v1.5")
24
  vectorstore = FAISS.from_documents(docs, embeddings)
25
 
26
+ # 3. RAG 问答链
27
  qa_chain = RetrievalQA.from_chain_type(
28
  llm=llm,
29
  retriever=vectorstore.as_retriever(search_kwargs={"k": 3})
30
  )
31
 
32
+ # 4. 聊天函数 - 修复调用逻辑
33
+ def chat_response(message, history):
34
  try:
35
+ # 使用 invoke 方法,这是 LangChain 目前推荐的标准调用方式
36
  response = qa_chain.invoke({"query": message})
37
  return response["result"]
38
  except Exception as e:
39
+ return f"大脑响应异常,可能是接口调整或 Token 权限问题。错误详情: {str(e)}"
40
 
41
+ # 5. 启动界面
42
+ demo = gr.ChatInterface(
43
+ chat_response,
44
+ title="全能私有大脑 v2.1",
45
+ description="修复了接口兼容性问题,现在你可以正常提问了。"
46
+ )
47
+
48
+ if __name__ == "__main__":
49
+ demo.launch()