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