File size: 1,759 Bytes
47e9340
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import utils
import os

import openai
from llama_index import SimpleDirectoryReader
from llama_index import Document
from llama_index import VectorStoreIndex
from llama_index import ServiceContext
from llama_index.llms import OpenAI

from llama_index.embeddings import HuggingFaceEmbedding
from trulens_eval import Tru
from llama_index.memory import ChatMemoryBuffer

from utils import get_prebuilt_trulens_recorder
import time

openai.api_key = utils.get_openai_api_key()

documents = SimpleDirectoryReader(
    input_files=["./raw_documents/HI_Knowledge_Base.pdf"]
).load_data()

document = Document(text="\n\n".join([doc.text for doc in documents]))

### gpt-4-1106-preview
### gpt-3.5-turbo-1106 / gpt-3.5-turbo
print("Initializing GPT 3.5 ..")
llm = OpenAI(model="gpt-3.5-turbo-1106", temperature=0.1)

print("Initializing bge-small-en-v1.5 embedding model ..")
embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")

print("Creating vector store ..")
service_context = ServiceContext.from_defaults(llm=llm, embed_model=embed_model)
index = VectorStoreIndex.from_documents([document], service_context=service_context)

if False:
    query_engine = index.as_query_engine(streaming=True)
else:
    memory = ChatMemoryBuffer.from_defaults(token_limit=15000)

    # chat_engine = index.as_query_engine(streaming=True)
    chat_engine = index.as_chat_engine(
        chat_mode="context",
        memory=memory
    )

while True:
    input_str = input("[User]: ")
    if input_str == "END":
        break
    
    # res = chat_engine.query(input_str)
    res = chat_engine.stream_chat(input_str)

    bot_response = ""
    print("[Bot]: ", end="")
    for s in res.response_gen:
        bot_response += s
        print(s, end="")
    print("")