cmagganas commited on
Commit
c233cac
1 Parent(s): 0a14372

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -16
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
- docs_url = "https://docs.pulze.ai/"
28
- embedding_model_name = "text-embedding-ada-002"
29
- langchain_documents = load_gitbook_docs(docs_url)
30
- chunked_langchain_documents = chunk_docs(
31
- langchain_documents,
32
- tokenizer=encoding_for_model(embedding_model_name),
33
- chunk_size=200,
34
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
- embedding_model = OpenAIEmbeddings(model=embedding_model_name)
37
- vector_store = Chroma.from_documents(
38
- chunked_langchain_documents, embedding=embedding_model, persist_directory="langchain-chroma-pulze-docs"
39
- )
40
- read_vector_store = Chroma(
41
- persist_directory="langchain-chroma-pulze-docs", embedding_function=embedding_model
42
- )
43
- print(read_vector_store.similarity_search("How do I use Pulze?"))
 
 
 
 
 
 
 
 
 
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()