foobar
Browse files- README.md +4 -2
- app/app.py +1 -29
README.md
CHANGED
@@ -2,8 +2,10 @@
|
|
2 |
This is the repository for the LinkedIn Learning course `Hands-On AI: Building and Deploying LLM-Powered Apps`. The full course is available from [LinkedIn Learning][lil-course-url].
|
3 |
|
4 |
_See the readme file in the main branch for updated instructions and information._
|
5 |
-
##
|
6 |
-
|
|
|
|
|
7 |
|
8 |
In this lab, we will be adding an Chat LLM to our Chainlit app using Langchain.
|
9 |
|
|
|
2 |
This is the repository for the LinkedIn Learning course `Hands-On AI: Building and Deploying LLM-Powered Apps`. The full course is available from [LinkedIn Learning][lil-course-url].
|
3 |
|
4 |
_See the readme file in the main branch for updated instructions and information._
|
5 |
+
## Lab3: Enabling Load PDF to Chainlit App
|
6 |
+
Building on top of the current simplified version of ChatGPT using Chainlit, we now going to add loading PDF capabilities into the application.
|
7 |
+
|
8 |
+
NowNow we have a web interface working, we will now add an LLM to our Chainlit app to have our simplified version of ChatGPT. We will be using [Langchain](https://python.langchain.com/docs/get_started/introduction) as the framework for this course. It provides easy abstractions and a wide varieties of data connectors and interfaces for everything LLM app development.
|
9 |
|
10 |
In this lab, we will be adding an Chat LLM to our Chainlit app using Langchain.
|
11 |
|
app/app.py
CHANGED
@@ -4,30 +4,14 @@ from langchain.prompts import ChatPromptTemplate
|
|
4 |
from langchain.schema import StrOutputParser
|
5 |
from langchain.chains import LLMChain
|
6 |
|
|
|
7 |
@cl.on_chat_start
|
8 |
async def on_chat_start():
|
9 |
-
##########################################################################
|
10 |
-
# Exercise 1a:
|
11 |
-
# Our Chainlit app should initialize the LLM chat via Langchain at the
|
12 |
-
# start of a chat session.
|
13 |
-
#
|
14 |
-
# First, we need to choose an LLM from OpenAI's list of models. Remember
|
15 |
-
# to set streaming=True for streaming tokens
|
16 |
-
##########################################################################
|
17 |
model = ChatOpenAI(
|
18 |
model="gpt-3.5-turbo-1106",
|
19 |
streaming=True
|
20 |
)
|
21 |
|
22 |
-
##########################################################################
|
23 |
-
# Exercise 1b:
|
24 |
-
# Next, we will need to set the prompt template for chat. Prompt templates
|
25 |
-
# is how we set prompts and then inject informations into the prompt.
|
26 |
-
#
|
27 |
-
# Please create the prompt template using ChatPromptTemplate. Use variable
|
28 |
-
# name "question" as the variable in the template.
|
29 |
-
# Refer to the documentation listed in the README.md file for reference.
|
30 |
-
##########################################################################
|
31 |
prompt = ChatPromptTemplate.from_messages(
|
32 |
[
|
33 |
(
|
@@ -40,12 +24,6 @@ async def on_chat_start():
|
|
40 |
),
|
41 |
]
|
42 |
)
|
43 |
-
##########################################################################
|
44 |
-
# Exercise 1c:
|
45 |
-
# Now we have model and prompt, let's build our Chain. A Chain is one or a
|
46 |
-
# series of LLM calls.We will use the default StrOutputParser to parse the
|
47 |
-
# LLM outputs.
|
48 |
-
##########################################################################
|
49 |
chain = LLMChain(llm=model, prompt=prompt, output_parser=StrOutputParser())
|
50 |
|
51 |
# We are saving the chain in user_session, so we do not have to rebuild
|
@@ -59,12 +37,6 @@ async def main(message: cl.Message):
|
|
59 |
# Let's load the chain from user_session
|
60 |
chain = cl.user_session.get("chain") # type: LLMChain
|
61 |
|
62 |
-
##########################################################################
|
63 |
-
# Exercise 1d:
|
64 |
-
# Everytime we receive a new user message, we will get the chain from
|
65 |
-
# user_session. We will run the chain with user's question and return LLM
|
66 |
-
# response to the user.
|
67 |
-
##########################################################################
|
68 |
response = await chain.arun(
|
69 |
question=message.content, callbacks=[cl.LangchainCallbackHandler()]
|
70 |
)
|
|
|
4 |
from langchain.schema import StrOutputParser
|
5 |
from langchain.chains import LLMChain
|
6 |
|
7 |
+
|
8 |
@cl.on_chat_start
|
9 |
async def on_chat_start():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
model = ChatOpenAI(
|
11 |
model="gpt-3.5-turbo-1106",
|
12 |
streaming=True
|
13 |
)
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
prompt = ChatPromptTemplate.from_messages(
|
16 |
[
|
17 |
(
|
|
|
24 |
),
|
25 |
]
|
26 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
chain = LLMChain(llm=model, prompt=prompt, output_parser=StrOutputParser())
|
28 |
|
29 |
# We are saving the chain in user_session, so we do not have to rebuild
|
|
|
37 |
# Let's load the chain from user_session
|
38 |
chain = cl.user_session.get("chain") # type: LLMChain
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
response = await chain.arun(
|
41 |
question=message.content, callbacks=[cl.LangchainCallbackHandler()]
|
42 |
)
|