Agg*_*cel 6 python openai-api chatgpt-api llama-index
我目前正在为我们的网站开发一个聊天机器人,该机器人使用 LlamaIndex 和 chatGPT 提供领域知识。我们的聊天机器人使用大约 50 个文档,每个文档长约 1-2 页,包含来自我们网站的教程和其他信息。虽然我得到的答案很好,但性能很慢。平均而言,检索答案大约需要 15-20 秒,这对于我们的网站来说不切实际。
我已经按照文档中的建议尝试使用优化器,但没有看到太大的改进。目前,我正在使用 GPTSimpleVectorIndex,尚未测试其他索引。我尝试在不同的机器上运行机器人,但没有看到性能的显着改进,所以我不认为这是硬件限制。
我正在寻找有关如何提高机器人性能的建议,以便它可以更快地提供答案。
谢谢你!
代码:
import os
import sys
import streamlit as st
from llama_index import (LLMPredictor, GPTSimpleVectorIndex,
SimpleDirectoryReader, PromptHelper, ServiceContext)
from langchain import OpenAI
os.environ["OPENAI_API_KEY"] = ...
retrain = sys.argv[1]
doc_path = 'docs'
index_file = 'index.json'
st.title("Chatbot")
def ask_ai():
st.session_state.response = index.query(st.session_state.prompt)
if retrain:
documents = SimpleDirectoryReader(doc_path).load_data()
llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="text-davinci-003", max_tokens = 128))
num_output = 256
max_chunk_overlap = 20
max_input_size = 4096
prompt_helper = PromptHelper(max_input_size, num_output, max_chunk_overlap)
service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper)
index = GPTSimpleVectorIndex.from_documents(
documents, service_context=service_context
)
index.save_to_disk(index_file)
if 'response' not in st.session_state:
st.session_state.response = ''
elif os.path.exists(index_file):
index = GPTSimpleVectorIndex.load_from_disk(index_file)
if index != None:
st.text_input("Ask something: ", key='prompt')
st.button("Send", on_click=ask_ai)
if st.session_state.response:
st.subheader("Response: ")
st.success(st.session_state.response)
Run Code Online (Sandbox Code Playgroud)
小智 1
Streamlit 默认情况下是无状态的。这意味着,如果您设置重新训练参数,它将运行整个过程,包括文档加载和索引每个交互。如果您希望它仅在启动时重新索引,则需要将 retrain arg 添加到 st.session_state,然后在 retrain 函数末尾将其设置为 false。
| 归档时间: |
|
| 查看次数: |
3361 次 |
| 最近记录: |