Charles87 commited on
Commit
242f786
·
1 Parent(s): 2e35090

Add application file

Browse files
Files changed (3) hide show
  1. README.md +15 -1
  2. app.py +86 -0
  3. data/.gitkeep +0 -0
README.md CHANGED
@@ -10,4 +10,18 @@ pinned: false
10
  short_description: Streamlit+LlamaIndex+浦语API
11
  ---
12
 
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  short_description: Streamlit+LlamaIndex+浦语API
11
  ---
12
 
13
+ ## 使用前准备
14
+ 1. 克隆项目后,需要准备以下数据文件:
15
+ - 在 `data/` 目录下放入您的知识库文件夹
16
+ - 在 `nltk_data/` 目录下放入 NLTK 数据文件
17
+
18
+ 2. 数据文件获取方式:
19
+ - data/: [说明如何获取或准备知识库文件]
20
+ - nltk_data/: 运行以下命令下载
21
+ git clone https://gitee.com/yzy0612/nltk_data.git --branch gh-pages
22
+ cd nltk_data
23
+ mv packages/* ./
24
+ cd tokenizers
25
+ unzip punkt.zip
26
+ cd ../taggers
27
+ unzip averaged_perceptron_tagger.zip
app.py ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+
3
+ os.environ['NLTK_DATA'] = './nltk_data'
4
+
5
+ import streamlit as st
6
+ from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
7
+ from llama_index.embeddings.huggingface import HuggingFaceEmbedding
8
+ from llama_index.legacy.callbacks import CallbackManager
9
+ from llama_index.llms.openai_like import OpenAILike
10
+
11
+ # Create an instance of CallbackManager
12
+
13
+ callback_manager = CallbackManager()
14
+
15
+ api_base_url = "https://internlm-chat.intern-ai.org.cn/puyu/api/v1/"
16
+ model = "internlm2.5-latest"
17
+ api_key = "eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiI1MDE3MzQyMiIsInJvbCI6IlJPTEVfUkVHSVNURVIiLCJpc3MiOiJPcGVuWExhYiIsImlhdCI6MTczMTkxNjc5NiwiY2xpZW50SWQiOiJlYm1ydm9kNnlvMG5semFlazF5cCIsInBob25lIjoiMTM2MjA2MTQyMTAiLCJ1dWlkIjoiNGJkYzBjMTktMmU3YS00ODdiLWE3MTYtY2I3YzJlYmIwZjIzIiwiZW1haWwiOiIiLCJleHAiOjE3NDc0Njg3OTZ9.XzwqEiksNVBHmaLpHV5jk-gC8Iwl-itTUvslIxGWJ-sPSdgJhQSsusGH_EeocQiEeEjvsCLgO7IM4yNfq_f9Vg"
18
+
19
+
20
+
21
+ llm =OpenAILike(model=model, api_base=api_base_url, api_key=api_key, is_chat_model=True,callback_manager=callback_manager)
22
+
23
+
24
+
25
+ st.set_page_config(page_title="llama_index_demo", page_icon="🦜🔗")
26
+ st.title("llama_index_demo")
27
+
28
+ # 初始化模型
29
+ @st.cache_resource
30
+ def init_models():
31
+ embed_model = HuggingFaceEmbedding(
32
+ model_name="/root/model/sentence-transformer"
33
+ )
34
+ Settings.embed_model = embed_model
35
+
36
+ #用初始化llm
37
+ Settings.llm = llm
38
+
39
+ documents = SimpleDirectoryReader("./data").load_data()
40
+ index = VectorStoreIndex.from_documents(documents)
41
+ query_engine = index.as_query_engine()
42
+
43
+ return query_engine
44
+
45
+ # 检查是否需要初始化模型
46
+ if 'query_engine' not in st.session_state:
47
+ st.session_state['query_engine'] = init_models()
48
+
49
+ def greet2(question):
50
+ response = st.session_state['query_engine'].query(question)
51
+ return response
52
+
53
+
54
+ # Store LLM generated responses
55
+ if "messages" not in st.session_state.keys():
56
+ st.session_state.messages = [{"role": "assistant", "content": "你好,我是你的助手,有什么我可以帮助你的吗?"}]
57
+
58
+ # Display or clear chat messages
59
+ for message in st.session_state.messages:
60
+ with st.chat_message(message["role"]):
61
+ st.write(message["content"])
62
+
63
+ def clear_chat_history():
64
+ st.session_state.messages = [{"role": "assistant", "content": "你好,我是你的助手,有什么我可以帮助你的吗?"}]
65
+
66
+ st.sidebar.button('Clear Chat History', on_click=clear_chat_history)
67
+
68
+ # Function for generating LLaMA2 response
69
+ def generate_llama_index_response(prompt_input):
70
+ return greet2(prompt_input)
71
+
72
+ # User-provided prompt
73
+ if prompt := st.chat_input():
74
+ st.session_state.messages.append({"role": "user", "content": prompt})
75
+ with st.chat_message("user"):
76
+ st.write(prompt)
77
+
78
+ # Gegenerate_llama_index_response last message is not from assistant
79
+ if st.session_state.messages[-1]["role"] != "assistant":
80
+ with st.chat_message("assistant"):
81
+ with st.spinner("Thinking..."):
82
+ response = generate_llama_index_response(prompt)
83
+ placeholder = st.empty()
84
+ placeholder.markdown(response)
85
+ message = {"role": "assistant", "content": response}
86
+ st.session_state.messages.append(message)
data/.gitkeep ADDED
File without changes