File size: 2,370 Bytes
08c2c64
 
 
c51674d
 
 
 
 
08c2c64
 
c51674d
08c2c64
 
c51674d
 
 
 
 
08c2c64
 
c51674d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
08c2c64
c51674d
 
b220457
 
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
# En variant av gamla app.py där jag inte bygger om indexed varje gång utan använder det som redan är byggt.
# För tillfället tror jag indexet är Nordiska Kliniken.

from llama_index import GPTVectorStoreIndex, SimpleDirectoryReader, LLMPredictor, ServiceContext, StorageContext, load_index_from_storage
from langchain import OpenAI
from langchain.prompts import ChatMessagePromptTemplate
import gradio
import os
import openai


api_key = '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'
os.environ["OPENAI_API_KEY"] = api_key

def construct_index(directory_path):
    # set number of output tokens
    num_outputs = 256

    system_prompt = "Du är chattboten Nora som arbetar för Nordiska Kliniken. Du ska vara hjälpsam och svara på användares frågor om Nordiska Kliniken och dess tjänster. Var alltid otroligt trevlig mot användaren. Börja ditt första meddelande till användaren med att hälsa välkommen till Nordiska Kliniken."

    _llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.5, model_name="gpt-3.5-turbo", max_tokens=num_outputs))

    service_context = ServiceContext.from_defaults(llm_predictor=_llm_predictor)

    docs = SimpleDirectoryReader(directory_path).load_data()

    index = GPTVectorStoreIndex.from_documents(docs, service_context=service_context)
    
    #Directory in which the indexes will be stored
    index.storage_context.persist(persist_dir="indexes")

    return index

def chatbot(input_text):
    
    # rebuild storage context
    storage_context = StorageContext.from_defaults(persist_dir="indexes")
    
    #load indexes from directory using storage_context 
    query_engne = load_index_from_storage(storage_context).as_query_engine()
    
    
    response = query_engne.query(input_text)
    
    #returning the response
    return response.response

#Creating the web UIusing gradio
iface = gradio.Interface(fn=chatbot,
                     inputs=gradio.inputs.Textbox(lines=5, label="Skriv din fråga"),
                     outputs="text",
                     title="NK-bot")

#Constructing indexes based on the documents in traininData folder
#This can be skipped if you have already trained your app and need to re-run it
#index = construct_index("trainingData")

#launching the web UI using gradio
#iface.launch(share=True) FUNKAR INTE NÄR JAG PUSHAR TILL SPACES
iface.launch(share=False)