Spaces:
Sleeping
Sleeping
File size: 4,265 Bytes
dad524c 5c10ac7 c905140 5c10ac7 8f86d92 909fe22 8f86d92 4b0c535 6ef0313 dad524c 8f86d92 70e9bf5 dad524c 5dd1424 dad524c 80b8b23 dad524c e8d0db3 dad524c e8d0db3 dad524c cf4b8d0 909fe22 dad524c 5dd1424 dad524c 5c10ac7 0c49a35 5c10ac7 dad524c 1bda721 dad524c 5dd1424 dad524c 5c10ac7 dad524c 909fe22 dad524c |
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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
import os
import streamlit as st
from llama_index import GPTSimpleVectorIndex, SimpleDirectoryReader, ServiceContext,LLMPredictor
from langchain.chat_models import ChatOpenAI
from llama_index.llm_predictor.chatgpt import ChatGPTLLMPredictor
import huggingface_hub
from huggingface_hub import Repository
from datetime import datetime
import csv
DATASET_REPO_URL = "https://huggingface.co/datasets/diazcalvi/kionlinde"#"https://huggingface.co/datasets/julien-c/persistent-space-dataset"
DATA_FILENAME = "kion.json"
DATA_FILE = os.path.join("data", DATA_FILENAME)
HF_TOKEN = os.environ.get("HF_TOKEN")
print("is none?", HF_TOKEN is None)
print("hfh", huggingface_hub.__version__)
#os.system("git config --global user.name \"Carlos Diaz\"")
#os.system("git config --global user.email \"[email protected]\"")
##repo = Repository(
# local_dir="data", clone_from=DATASET_REPO_URL, use_auth_token=HF_TOKEN
#)
index_name = "./data/kion.json"
documents_folder = "./documents"
#@st.experimental_memo
#@st.cache_resource
def initialize_index(index_name, documents_folder):
#llm_predictor = ChatGPTLLMPredictor()
llm_predictor = LLMPredictor(llm=ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo")) # text-davinci-003"))"gpt-3.5-turbo"
service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor)
if os.path.exists(index_name):
index = GPTSimpleVectorIndex.load_from_disk(index_name)
else:
documents = SimpleDirectoryReader(documents_folder).load_data()
index = GPTSimpleVectorIndex.from_documents(documents)
index.save_to_disk(index_name)
print(DATA_FILE)
index.save_to_disk(DATA_FILE)
return index
#@st.experimental_memo
#@st.cache_data(max_entries=200, persist=True)
def query_index(_index, query_text):
response = _index.query(query_text)
return str(response)
def generate_html() -> str:
with open(DATA_FILE) as csvfile:
reader = csv.DictReader(csvfile)
rows = []
for row in reader:
rows.append(row)
rows.reverse()
if len(rows) == 0:
return "no messages yet"
else:
html = "<div class='chatbot'>"
for row in rows:
html += "<div>"
html += f"<span>{row['name']}</span>"
html += f"<span class='message'>{row['message']}</span>"
html += "</div>"
html += "</div>"
return html
def store_message(name: str, message: str):
if name and message:
print(DATA_FILE)
print(DATA_FILENAME)
print(DATASET_REPO_URL)
with open(DATA_FILE, "a") as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=["name", "message", "time"])
writer.writerow(
{"name": name, "message": message, "time": str(datetime.now())}
)
commit_url = repo.push_to_hub()
print(commit_url)
return commit_url #generate_html()
st.title("KION-Linde AI")
st.header("Welcome to KION-Linde's Artificial Intelligence Knowledge Base")
st.write("Enter a query about any KION/Linde products. The AI knows all the details, loads, sizes, manuals and procedures to support hundreds of parts and equipment. You can check out also our repository [here](https://www.linde-mh.com/en/About-us/Media/)")
index = None
api_key = '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'#st.text_input("Enter your OpenAI API key here:", type="password")
if api_key:
os.environ['OPENAI_API_KEY'] = api_key
index = initialize_index(index_name, documents_folder)
if index is None:
st.warning("Please enter your api key first.")
text = st.text_input("Query text:", value="What type of tires sizes, front, rear the R20 uses?")
if st.button("Run Query") and text is not None:
response = query_index(index, "Act as a KION equipment expert:" + text)
#myhtml = store_message(text, response)
st.markdown(response)
llm_col, embed_col = st.columns(2)
with llm_col:
st.markdown(f"LLM Tokens Used: {index.service_context.llm_predictor._last_token_usage}")
with embed_col:
st.markdown(f"Embedding Tokens Used: {index.service_context.embed_model._last_token_usage}")
|