Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
import chainlit as cl
|
|
|
2 |
from langchain.embeddings.openai import OpenAIEmbeddings
|
3 |
from langchain.document_loaders.csv_loader import CSVLoader
|
4 |
from langchain.embeddings import CacheBackedEmbeddings, OpenAIEmbeddings
|
@@ -24,20 +25,53 @@ import openai
|
|
24 |
# openai.api_key = os.getenv("OPENAI_API_KEY")
|
25 |
openai.api_base = 'https://api.openai.com/v1' # default
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import chainlit as cl
|
2 |
+
from langchain.agents.agent_toolkits import create_conversational_retrieval_agent, create_retriever_tool
|
3 |
from langchain.embeddings.openai import OpenAIEmbeddings
|
4 |
from langchain.document_loaders.csv_loader import CSVLoader
|
5 |
from langchain.embeddings import CacheBackedEmbeddings, OpenAIEmbeddings
|
|
|
25 |
# openai.api_key = os.getenv("OPENAI_API_KEY")
|
26 |
openai.api_base = 'https://api.openai.com/v1' # default
|
27 |
|
28 |
+
@cl.on_chat_start
|
29 |
+
async def init():
|
30 |
+
|
31 |
+
msg = cl.Message(content="Building Index...")
|
32 |
+
await msg.send()
|
33 |
+
|
34 |
+
docs_url = "https://docs.pulze.ai/"
|
35 |
+
embedding_model_name = "text-embedding-ada-002"
|
36 |
+
langchain_documents = load_gitbook_docs(docs_url)
|
37 |
+
chunked_langchain_documents = chunk_docs(
|
38 |
+
langchain_documents,
|
39 |
+
tokenizer=encoding_for_model(embedding_model_name),
|
40 |
+
chunk_size=200,
|
41 |
+
)
|
42 |
+
|
43 |
+
embedding_model = OpenAIEmbeddings(model=embedding_model_name)
|
44 |
+
vector_store = Chroma.from_documents(
|
45 |
+
chunked_langchain_documents, embedding=embedding_model, persist_directory="langchain-chroma-pulze-docs"
|
46 |
+
)
|
47 |
+
read_vector_store = Chroma(
|
48 |
+
persist_directory="langchain-chroma-pulze-docs", embedding_function=embedding_model
|
49 |
+
)
|
50 |
+
|
51 |
+
msg.content = "Index built!"
|
52 |
+
await msg.send()
|
53 |
+
|
54 |
+
# set up search pulze docs retriever tool
|
55 |
+
tool = create_retriever_tool(
|
56 |
+
read_vector_store.as_retriever(),
|
57 |
+
"search_pulze_docs",
|
58 |
+
"Searches and returns documents regarding Pulze."
|
59 |
+
)
|
60 |
+
tools = [tool]
|
61 |
|
62 |
+
#set llm and agent
|
63 |
+
llm = ChatOpenAI(temperature = 0)
|
64 |
+
agent_executor = create_conversational_retrieval_agent(llm, tools, verbose=True)
|
65 |
+
|
66 |
+
cl.user_session.set("agent_executor", agent_executor)
|
67 |
+
|
68 |
+
@cl.on_message
|
69 |
+
async def main(message):
|
70 |
+
chain: Chain = cl.user_session.get("agent_executor")
|
71 |
+
cb = cl.AsyncLangchainCallbackHandler(
|
72 |
+
stream_final_answer=False, answer_prefix_tokens=["FINAL", "ANSWER"]
|
73 |
+
)
|
74 |
+
cb.answer_reached = True
|
75 |
+
answer = chain.run({"input": message})
|
76 |
+
|
77 |
+
await cl.Message(content=answer).send()
|