Update app.py
Browse files
app.py
CHANGED
@@ -1,12 +1,15 @@
|
|
1 |
import os
|
2 |
-
from getpass import getpass
|
3 |
import streamlit as st
|
4 |
from dotenv import load_dotenv
|
|
|
5 |
from llama_index.embeddings import OpenAIEmbedding
|
6 |
from llama_index.ingestion import IngestionPipeline
|
7 |
from llama_index.query_engine import RetrieverQueryEngine
|
8 |
-
from llama_index.
|
|
|
9 |
from llama_index.chains import ConversationalRetrievalChain
|
|
|
|
|
10 |
from llama_index.prompts import user_template, bot_template, css
|
11 |
|
12 |
# Load environment variables
|
@@ -15,14 +18,15 @@ pinecone_api_key = os.getenv("PINECONE_API_KEY")
|
|
15 |
openai_api_key = os.getenv("OPENAI_API_KEY")
|
16 |
index_name = os.getenv("INDEX_NAME")
|
17 |
|
18 |
-
# Initialize OpenAI
|
19 |
-
|
|
|
|
|
20 |
pinecone_client = PineconeClient(api_key=pinecone_api_key)
|
21 |
pinecone_index = pinecone_client.Index(index_name)
|
22 |
-
vector_store =
|
23 |
|
24 |
-
#
|
25 |
-
embed_model = OpenAIEmbedding(api_key=openai_api_key)
|
26 |
pipeline = IngestionPipeline(
|
27 |
transformations=[
|
28 |
SemanticSplitterNodeParser(
|
@@ -33,12 +37,13 @@ pipeline = IngestionPipeline(
|
|
33 |
embed_model,
|
34 |
],
|
35 |
)
|
|
|
|
|
36 |
vector_index = VectorStoreIndex.from_vector_store(vector_store=vector_store)
|
37 |
retriever = VectorIndexRetriever(index=vector_index, similarity_top_k=5)
|
38 |
query_engine = RetrieverQueryEngine(retriever=retriever)
|
39 |
|
40 |
-
|
41 |
-
|
42 |
def handle_userinput(user_question):
|
43 |
response = st.session_state.conversation({'question': user_question})
|
44 |
st.session_state.chat_history = response['chat_history']
|
@@ -49,6 +54,7 @@ def handle_userinput(user_question):
|
|
49 |
else:
|
50 |
st.write(bot_template.replace("{{MSG}}", message.content), unsafe_allow_html=True)
|
51 |
|
|
|
52 |
def main():
|
53 |
load_dotenv()
|
54 |
st.set_page_config(page_title="Chat with Annual Reports", page_icon=":books:")
|
|
|
1 |
import os
|
|
|
2 |
import streamlit as st
|
3 |
from dotenv import load_dotenv
|
4 |
+
from pinecone import PineconeClient
|
5 |
from llama_index.embeddings import OpenAIEmbedding
|
6 |
from llama_index.ingestion import IngestionPipeline
|
7 |
from llama_index.query_engine import RetrieverQueryEngine
|
8 |
+
from llama_index.vector_stores import PineconeVectorStore
|
9 |
+
from llama_index.memory import ConversationBufferMemory
|
10 |
from llama_index.chains import ConversationalRetrievalChain
|
11 |
+
from llama_index.node_parser import SemanticSplitterNodeParser
|
12 |
+
from llama_index.retrievers import VectorIndexRetriever
|
13 |
from llama_index.prompts import user_template, bot_template, css
|
14 |
|
15 |
# Load environment variables
|
|
|
18 |
openai_api_key = os.getenv("OPENAI_API_KEY")
|
19 |
index_name = os.getenv("INDEX_NAME")
|
20 |
|
21 |
+
# Initialize OpenAI embedding model
|
22 |
+
embed_model = OpenAIEmbedding(api_key=openai_api_key)
|
23 |
+
|
24 |
+
# Initialize connection to Pinecone
|
25 |
pinecone_client = PineconeClient(api_key=pinecone_api_key)
|
26 |
pinecone_index = pinecone_client.Index(index_name)
|
27 |
+
vector_store = PineconeVectorStore(pinecone_index=pinecone_index)
|
28 |
|
29 |
+
# Define the initial pipeline
|
|
|
30 |
pipeline = IngestionPipeline(
|
31 |
transformations=[
|
32 |
SemanticSplitterNodeParser(
|
|
|
37 |
embed_model,
|
38 |
],
|
39 |
)
|
40 |
+
|
41 |
+
# Initialize LlamaIndex components
|
42 |
vector_index = VectorStoreIndex.from_vector_store(vector_store=vector_store)
|
43 |
retriever = VectorIndexRetriever(index=vector_index, similarity_top_k=5)
|
44 |
query_engine = RetrieverQueryEngine(retriever=retriever)
|
45 |
|
46 |
+
# Function to handle user input and return the query response
|
|
|
47 |
def handle_userinput(user_question):
|
48 |
response = st.session_state.conversation({'question': user_question})
|
49 |
st.session_state.chat_history = response['chat_history']
|
|
|
54 |
else:
|
55 |
st.write(bot_template.replace("{{MSG}}", message.content), unsafe_allow_html=True)
|
56 |
|
57 |
+
# Main function to run the Streamlit app
|
58 |
def main():
|
59 |
load_dotenv()
|
60 |
st.set_page_config(page_title="Chat with Annual Reports", page_icon=":books:")
|