Spaces:
Runtime error
Runtime error
File size: 2,984 Bytes
8c59a5d 4887f73 9261c91 4887f73 fd6bc5d 9261c91 4887f73 2405f3d 4887f73 51e904b 4887f73 9261c91 4887f73 145b949 4887f73 9261c91 5af6486 6854d51 a58bda5 db22817 95b8421 db22817 a58bda5 9261c91 96528a7 9261c91 5af6486 9261c91 ebde746 |
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 |
# https://towardsai.net/p/machine-learning/deploying-a-langchain-large-language-model-llm-with-streamlit-pinecone?amp=1
import os
import pinecone
import streamlit as st
from streamlit_chat import message
from langchain.llms import OpenAI
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Pinecone
from langchain.chains import ConversationChain
from langchain.retrievers.self_query.base import SelfQueryRetriever
from langchain.chains import RetrievalQA
from langchain.chains.query_constructor.base import AttributeInfo
pinecone.init(
api_key=str(os.environ['PINECONE_API_KEY']),
environment=str(os.environ['PINECONE_ENV']))
llm = OpenAI(temperature=0)
embeddings = OpenAIEmbeddings()
vectorstore = Pinecone.from_existing_index("impromptu", embeddings)
document_content_description = ("Excerpts from the book Impromptu, "
"jointly authored by Reid Hoffman, "
"GPT-3, and GPT 4.")
metadata_field_info=[
AttributeInfo(
name="author",
description="The author of the excerpt",
type="string or list[string]",
),
AttributeInfo(
name="chapter_number",
description="The chapter number of excerpt",
type="integer",
),
AttributeInfo(
name="chapter_name",
description="The chapter name of the excerpt",
type="string",
),
]
def load_chain():
retriever = SelfQueryRetriever.from_llm(
llm,
vectorstore,
document_content_description,
metadata_field_info,
verbose=True)
qa = RetrievalQA.from_chain_type(
llm=OpenAI(),
chain_type="stuff",
retriever=retriever,
return_source_documents=False)
return qa
chain = load_chain()
# From here down is all the StreamLit UI.
st.set_page_config(page_title="Impromptu GPT", page_icon=":robot:")
st.header("Impromptu GPT")
'''
```
A secondary UI testing LangChain's Python-only ```SelfQueryRetriever```
interface, which uses an LLM to structure vectorstore queries.
In this case, conversational requests for specific chapters and
speakers will filter on the relevant metadata.
```
'''
if "generated" not in st.session_state:
st.session_state["generated"] = []
if "past" not in st.session_state:
st.session_state["past"] = []
def get_text():
input_text = st.text_input("You: ", "What are some of the risks mentioned in chapter one?", key="input")
return input_text
user_input = get_text()
if user_input:
output = chain.run(user_input)
st.session_state.past.append(user_input)
st.session_state.generated.append(output)
if st.session_state["generated"]:
for i in range(len(st.session_state["generated"]) - 1, -1, -1):
message(st.session_state["generated"][i], key=str(i), avatar_style="bottts")
message(st.session_state["past"][i], is_user=True, key=str(i) + "_user", avatar_style="shapes") |