Highthoughts commited on
Commit
df5d87b
·
1 Parent(s): b9a6a8b

Initial commit

Browse files
Files changed (1) hide show
  1. app.py +57 -47
app.py CHANGED
@@ -1,83 +1,93 @@
1
  import streamlit as st
2
- from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
3
  from llama_index.embeddings.huggingface import HuggingFaceEmbedding
4
  from llama_index.legacy.callbacks import CallbackManager
5
  from llama_index.llms.openai_like import OpenAILike
6
 
7
- # Create an instance of CallbackManager
8
  callback_manager = CallbackManager()
9
 
10
- api_base_url = "https://internlm-chat.intern-ai.org.cn/puyu/api/v1/"
 
11
  model = "internlm2.5-latest"
12
- api_key = "eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiI4MDAwNzM0OCIsInJvbCI6IlJPTEVfUkVHSVNURVIiLCJpc3MiOiJPcGVuWExhYiIsImlhdCI6MTczNzczMjUwMCwiY2xpZW50SWQiOiJlYm1ydm9kNnlvMG5semFlazF5cCIsInBob25lIjoiMTk4MjEyMTUyNzEiLCJ1dWlkIjoiZjc2MDM3NTctMTU2Yy00MTM3LWE1YmEtNTk3MDljODRiNDRkIiwiZW1haWwiOiIiLCJleHAiOjE3NTMyODQ1MDB9.4zD9ixAv1JdP_AJLQhNW3tCgzCGquW6eFcbV0XNqmqCZ0pL5A4hIPVA0zeFleg-n04O1IsyIZZ0rmkATZ1V6_A"
13
 
14
- # api_base_url = "https://api.siliconflow.cn/v1"
15
- # model = "internlm/internlm2_5-7b-chat"
16
- # api_key = "请填写 API Key"
 
 
 
 
 
17
 
18
- llm =OpenAILike(model=model, api_base=api_base_url, api_key=api_key, is_chat_model=True,callback_manager=callback_manager)
19
-
20
-
21
-
22
- st.set_page_config(page_title="llama_index_demo", page_icon="🦜🔗")
23
- st.title("llama_index_demo")
24
 
25
  # 初始化模型
26
  @st.cache_resource
27
  def init_models():
28
- embed_model = HuggingFaceEmbedding(
29
- model_name="/root/model/sentence-transformer"
30
- )
31
- Settings.embed_model = embed_model
32
 
33
- #用初始化llm
34
- Settings.llm = llm
35
 
36
- documents = SimpleDirectoryReader("/root/llamaindex_demo/data").load_data()
37
- index = VectorStoreIndex.from_documents(documents)
38
- query_engine = index.as_query_engine()
39
 
40
- return query_engine
 
 
 
 
 
41
 
42
  # 检查是否需要初始化模型
43
  if 'query_engine' not in st.session_state:
44
  st.session_state['query_engine'] = init_models()
45
 
 
46
  def greet2(question):
47
- response = st.session_state['query_engine'].query(question)
48
- return response
 
 
 
 
 
 
 
 
49
 
50
-
51
- # Store LLM generated responses
52
- if "messages" not in st.session_state.keys():
53
- st.session_state.messages = [{"role": "assistant", "content": "你好,我是你的助手,有什么我可以帮助你的吗?"}]
54
 
55
- # Display or clear chat messages
56
  for message in st.session_state.messages:
57
  with st.chat_message(message["role"]):
58
  st.write(message["content"])
59
 
60
- def clear_chat_history():
61
- st.session_state.messages = [{"role": "assistant", "content": "你好,我是你的助手,有什么我可以帮助你的吗?"}]
62
-
63
  st.sidebar.button('Clear Chat History', on_click=clear_chat_history)
64
 
65
- # Function for generating LLaMA2 response
66
- def generate_llama_index_response(prompt_input):
67
- return greet2(prompt_input)
68
-
69
- # User-provided prompt
70
- if prompt := st.chat_input():
71
  st.session_state.messages.append({"role": "user", "content": prompt})
72
  with st.chat_message("user"):
73
  st.write(prompt)
74
 
75
- # Gegenerate_llama_index_response last message is not from assistant
76
- if st.session_state.messages[-1]["role"] != "assistant":
77
  with st.chat_message("assistant"):
78
- with st.spinner("Thinking..."):
79
- response = generate_llama_index_response(prompt)
80
- placeholder = st.empty()
81
- placeholder.markdown(response)
82
- message = {"role": "assistant", "content": response}
83
- st.session_state.messages.append(message)
 
 
1
  import streamlit as st
2
+ from llama_index import VectorStoreIndex, SimpleDirectoryReader, Settings
3
  from llama_index.embeddings.huggingface import HuggingFaceEmbedding
4
  from llama_index.legacy.callbacks import CallbackManager
5
  from llama_index.llms.openai_like import OpenAILike
6
 
7
+ # Callback manager
8
  callback_manager = CallbackManager()
9
 
10
+ # API 信息
11
+ api_base_url = "https://internlm-chat.intern-ai.org.cn/puyu/api/v1/"
12
  model = "internlm2.5-latest"
13
+ api_key = "eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiI4MDAwNzM0OCIsInJvbCI6IlJPTEVfUkVHSVNURVIiLCJpc3MiOiJPcGVuWExhYiIsImlhdCI6MTczNzczMjUwMCwiY2xpZW50SWQiOiJlYm1ydm9kNnlvMG5semFlazF5cCIsInBob25lIjoiMTk4MjEyMTUyNzEiLCJ1dWlkIjoiZjc2MDM3NTctMTU2Yy00MTM3LWE1YmEtNTk3MDljODRiNDRkIiwiZW1haWwiOiIiLCJleHAiOjE3NTMyODQ1MDB9.4zD9ixAv1JdP_AJLQhNW3tCgzCGquW6eFcbV0XNqmqCZ0pL5A4hIPVA0zeFleg-n04O1IsyIZZ0rmkATZ1V6_A" # 替换为你的真实 API Key
14
 
15
+ # 初始化 LLM
16
+ llm = OpenAILike(
17
+ model=model,
18
+ api_base=api_base_url,
19
+ api_key=api_key,
20
+ is_chat_model=True,
21
+ callback_manager=callback_manager,
22
+ )
23
 
24
+ # Streamlit 页面配置
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
+ try:
32
+ # 使用 Hugging Face Hub 的公开模型
33
+ embed_model = HuggingFaceEmbedding(model_name="sentence-transformers/all-MiniLM-L6-v2")
34
+ Settings.embed_model = embed_model
35
 
36
+ # 初始化 LLM
37
+ Settings.llm = llm
38
 
39
+ # 加载文档数据(可以替换为你自己的数据路径或逻辑)
40
+ documents = SimpleDirectoryReader("./data").load_data()
41
+ index = VectorStoreIndex.from_documents(documents)
42
 
43
+ # 创建查询引擎
44
+ query_engine = index.as_query_engine()
45
+ return query_engine
46
+ except Exception as e:
47
+ st.error(f"模型初始化失败:{e}")
48
+ return None
49
 
50
  # 检查是否需要初始化模型
51
  if 'query_engine' not in st.session_state:
52
  st.session_state['query_engine'] = init_models()
53
 
54
+ # 模型查询函数
55
  def greet2(question):
56
+ query_engine = st.session_state['query_engine']
57
+ if query_engine:
58
+ response = query_engine.query(question)
59
+ return response.response # 确保返回的内容是字符串
60
+ else:
61
+ return "模型初始化失败,请检查环境配置。"
62
+
63
+ # 清空聊天记录
64
+ def clear_chat_history():
65
+ st.session_state.messages = [{"role": "assistant", "content": "你好,我是你的助手,有什么我可以帮助你的吗?"}]
66
 
67
+ # 初始化聊天记录
68
+ if "messages" not in st.session_state:
69
+ st.session_state.messages = [{"role": "assistant", "content": "你好,我是你的助手,有什么我可以帮助你的吗?"}]
 
70
 
71
+ # 显示聊天记录
72
  for message in st.session_state.messages:
73
  with st.chat_message(message["role"]):
74
  st.write(message["content"])
75
 
76
+ # 清空聊天记录按钮
 
 
77
  st.sidebar.button('Clear Chat History', on_click=clear_chat_history)
78
 
79
+ # 用户输入处理
80
+ if prompt := st.chat_input("请输入您的问题:"):
 
 
 
 
81
  st.session_state.messages.append({"role": "user", "content": prompt})
82
  with st.chat_message("user"):
83
  st.write(prompt)
84
 
85
+ # Assistant 响应
 
86
  with st.chat_message("assistant"):
87
+ with st.spinner("思考中..."):
88
+ response = greet2(prompt) # 调用查询函数
89
+ if response:
90
+ st.write(response)
91
+ st.session_state.messages.append({"role": "assistant", "content": response})
92
+ else:
93
+ st.error("未能生成响应,请检查模型状态。")