import os
from dotenv import load_dotenv
import streamlit as st
import openai
from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Pinecone
from langchain.chat_models import ChatOpenAI
from langchain.memory import ChatMessageHistory
import pinecone
# Load environment variables
load_dotenv()
openai_api_key = os.getenv("OPENAI_API_KEY")
pinecone_api_key = os.getenv("PINECONE_API_KEY")
pinecone_index = os.getenv("PINECONE_INDEX")
pinecone_env = os.getenv("PINECONE_ENV")
# Initialize Pinecone
pinecone.init(api_key=pinecone_api_key, environment=pinecone_env)
# Initialize OpenAI Embeddings
embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)
# Connect to the existing Pinecone index
index = pinecone.Index(index_name=pinecone_index)
docsearch = Pinecone(index, embeddings.embed_query, "text")
# Streamlit UI
st.title("PDF Document Chatbot")
# Initialize the chat model
chat = ChatOpenAI(temperature=0, openai_api_key=openai_api_key)
# Set up chat message history
history = ChatMessageHistory()
# Chat input
user_input = st.text_input("Ask your question:")
if st.button("Send"):
# Retrieve top 5 relevant chunks
top_results = docsearch.similarity_search(query=user_input, k=5)
# Concatenate the relevant chunks
context = " ".join([result.data for result in top_results])
# Generate response using OpenAI Chat Completion
history.add_user_message(user_input)
ai_response = chat(context=context, message=user_input)
history.add_ai_message(ai_response.content)
# Display chat history
st.write("Chat History:")
for message in history.messages:
st.write(message.sender + ": " + message.content)
I’m getting this error log when submitting a question on the UI:
% streamlit run chat.py
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8501
Network URL: http://10.2.0.2:8501
For better performance, install the Watchdog module:
$ xcode-select --install
$ pip install watchdog
2023-04-02 14:05:32.559 Uncaught app exception
Traceback (most recent call last):
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/connectionpool.py", line 703, in urlopen
httplib_response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/connectionpool.py", line 386, in _make_request
self._validate_conn(conn)
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/connectionpool.py", line 1042, in _validate_conn
conn.connect()
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/connection.py", line 414, in connect
self.sock = ssl_wrap_socket(
^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/util/ssl_.py", line 449, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(
^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/util/ssl_.py", line 493, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/ssl.py", line 517, in wrap_socket
return self.sslsocket_class._create(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/ssl.py", line 1075, in _create
self.do_handshake()
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/ssl.py", line 1346, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [Errno 54] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pinecone/core/utils/error_handling.py", line 17, in inner_func
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pinecone/index.py", line 449, in query
response = self._vector_api.query(
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pinecone/core/client/api_client.py", line 776, in __call__
return self.callable(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pinecone/core/client/api/vector_operations_api.py", line 716, in __query
return self.call_with_http_info(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pinecone/core/client/api_client.py", line 838, in call_with_http_info
return self.api_client.call_api(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pinecone/core/client/api_client.py", line 413, in call_api
return self.__call_api(resource_path, method,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pinecone/core/client/api_client.py", line 200, in __call_api
response_data = self.request(
^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pinecone/core/client/api_client.py", line 459, in request
return self.rest_client.POST(url,
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pinecone/core/client/rest.py", line 271, in POST
return self.request("POST", url,
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pinecone/core/client/rest.py", line 157, in request
r = self.pool_manager.request(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/request.py", line 78, in request
return self.request_encode_body(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/request.py", line 170, in request_encode_body
return self.urlopen(method, url, **extra_kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/poolmanager.py", line 376, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/connectionpool.py", line 787, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/util/retry.py", line 550, in increment
raise six.reraise(type(error), error, _stacktrace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/packages/six.py", line 769, in reraise
raise value.with_traceback(tb)
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/connectionpool.py", line 703, in urlopen
httplib_response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/connectionpool.py", line 386, in _make_request
self._validate_conn(conn)
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/connectionpool.py", line 1042, in _validate_conn
conn.connect()
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/connection.py", line 414, in connect
self.sock = ssl_wrap_socket(
^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/util/ssl_.py", line 449, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(
^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/urllib3/util/ssl_.py", line 493, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/ssl.py", line 517, in wrap_socket
return self.sslsocket_class._create(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/ssl.py", line 1075, in _create
self.do_handshake()
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/ssl.py", line 1346, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 565, in _run_script
exec(code, module.__dict__)
File "/Users/black/gpt/b2/chat.py", line 43, in <module>
top_results = docsearch.similarity_search(query=user_input, k=5)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain/vectorstores/pinecone.py", line 148, in similarity_search
results = self._index.query(
^^^^^^^^^^^^^^^^^^
File "/Users/black/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pinecone/core/utils/error_handling.py", line 25, in inner_func
raise PineconeProtocolError(f'Failed to connect; did you specify the correct index name?') from e
pinecone.core.exceptions.PineconeProtocolError: Failed to connect; did you specify the correct index name?
Any ideas what’s wrong?
It seems to connect fine to Pinecone.