Spaces:
Runtime error
Runtime error
completed first tutorial
Browse files- .chainlit/config.toml +3 -3
- app.py +31 -20
.chainlit/config.toml
CHANGED
|
@@ -29,13 +29,13 @@ multi_modal = true
|
|
| 29 |
|
| 30 |
# Allows user to use speech to text
|
| 31 |
[features.speech_to_text]
|
| 32 |
-
enabled =
|
| 33 |
# See all languages here https://github.com/JamesBrill/react-speech-recognition/blob/HEAD/docs/API.md#language-string
|
| 34 |
-
|
| 35 |
|
| 36 |
[UI]
|
| 37 |
# Name of the app and chatbot.
|
| 38 |
-
name = "
|
| 39 |
|
| 40 |
# Show the readme while the conversation is empty.
|
| 41 |
show_readme_as_default = true
|
|
|
|
| 29 |
|
| 30 |
# Allows user to use speech to text
|
| 31 |
[features.speech_to_text]
|
| 32 |
+
enabled = true
|
| 33 |
# See all languages here https://github.com/JamesBrill/react-speech-recognition/blob/HEAD/docs/API.md#language-string
|
| 34 |
+
language = "en-US"
|
| 35 |
|
| 36 |
[UI]
|
| 37 |
# Name of the app and chatbot.
|
| 38 |
+
name = "Chainlit TutorialChatbot"
|
| 39 |
|
| 40 |
# Show the readme while the conversation is empty.
|
| 41 |
show_readme_as_default = true
|
app.py
CHANGED
|
@@ -5,18 +5,27 @@ from langchain_core.prompts import ChatPromptTemplate
|
|
| 5 |
from langchain_core.runnables.config import RunnableConfig
|
| 6 |
from langchain_openai import ChatOpenAI
|
| 7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
load_dotenv()
|
| 9 |
openai_api_key = os.getenv("OPENAI_API_KEY")
|
| 10 |
|
| 11 |
-
|
|
|
|
|
|
|
| 12 |
async def on_action(action):
|
| 13 |
await cl.Message(content=f"Hiding the button").send()
|
| 14 |
await action.remove()
|
| 15 |
|
| 16 |
-
@cl.action_callback("
|
| 17 |
async def on_action(action):
|
| 18 |
-
|
| 19 |
-
await cl.Message(content="
|
|
|
|
|
|
|
| 20 |
|
| 21 |
@cl.action_callback("english")
|
| 22 |
async def on_action(action):
|
|
@@ -28,6 +37,8 @@ async def on_action(action):
|
|
| 28 |
cl.user_session.set("language", "icelandic")
|
| 29 |
await cl.Message(content="Responses from the Chatbot will be in Icelandic").send()
|
| 30 |
|
|
|
|
|
|
|
| 31 |
user_template = """
|
| 32 |
Question:
|
| 33 |
{question}
|
|
@@ -43,9 +54,10 @@ system_template = """
|
|
| 43 |
Respond in the language provided below. If no language is provided, use Italian.
|
| 44 |
"""
|
| 45 |
|
| 46 |
-
|
| 47 |
-
### On Chat Start (Session Start) Section
|
| 48 |
-
|
|
|
|
| 49 |
@cl.on_chat_start
|
| 50 |
async def on_chat_start():
|
| 51 |
# create a chain
|
|
@@ -58,16 +70,17 @@ async def on_chat_start():
|
|
| 58 |
cl.user_session.set("chain", simple_chain)
|
| 59 |
|
| 60 |
response = await cl.AskActionMessage(
|
| 61 |
-
content="Do you want to
|
| 62 |
actions=[
|
| 63 |
cl.Action(name="yes", value="yes", label="β
Yes"),
|
| 64 |
cl.Action(name="no", value="no", label="β No"),
|
|
|
|
| 65 |
],
|
| 66 |
).send()
|
| 67 |
if response and response.get("value") == "yes":
|
| 68 |
actions = [
|
| 69 |
-
cl.Action(name="
|
| 70 |
-
cl.Action(name="
|
| 71 |
]
|
| 72 |
|
| 73 |
await cl.Message(content="Different actions", actions=actions).send()
|
|
@@ -85,19 +98,17 @@ async def on_chat_start():
|
|
| 85 |
|
| 86 |
await cl.Message(content="Ask the chatbot a question. Then click the Icelandic button and ask again.").send()
|
| 87 |
|
| 88 |
-
|
|
|
|
|
|
|
|
|
|
| 89 |
@cl.on_message
|
| 90 |
async def main(message: cl.Message):
|
|
|
|
| 91 |
chain = cl.user_session.get("chain")
|
| 92 |
language = cl.user_session.get("language", "english")
|
| 93 |
question = message.content
|
| 94 |
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
{"question": question, "language": language},
|
| 99 |
-
config=RunnableConfig(callbacks=[cl.LangchainCallbackHandler()]),
|
| 100 |
-
):
|
| 101 |
-
await msg.stream_token(chunk.content)
|
| 102 |
-
|
| 103 |
-
await msg.send()
|
|
|
|
| 5 |
from langchain_core.runnables.config import RunnableConfig
|
| 6 |
from langchain_openai import ChatOpenAI
|
| 7 |
|
| 8 |
+
# general code area
|
| 9 |
+
# - use for functions that are used in multiple places
|
| 10 |
+
# - use for variables that are used in multiple places
|
| 11 |
+
# - use for running code for all sessions
|
| 12 |
+
|
| 13 |
load_dotenv()
|
| 14 |
openai_api_key = os.getenv("OPENAI_API_KEY")
|
| 15 |
|
| 16 |
+
# Demonstrate how to handle actions
|
| 17 |
+
|
| 18 |
+
@cl.action_callback("Hide button")
|
| 19 |
async def on_action(action):
|
| 20 |
await cl.Message(content=f"Hiding the button").send()
|
| 21 |
await action.remove()
|
| 22 |
|
| 23 |
+
@cl.action_callback("Show text")
|
| 24 |
async def on_action(action):
|
| 25 |
+
# any processing can be done here
|
| 26 |
+
await cl.Message(content=f"Button clicked has this value: {action.value}").send()
|
| 27 |
+
|
| 28 |
+
# demonstrate how to change parameters of the LLM through actions
|
| 29 |
|
| 30 |
@cl.action_callback("english")
|
| 31 |
async def on_action(action):
|
|
|
|
| 37 |
cl.user_session.set("language", "icelandic")
|
| 38 |
await cl.Message(content="Responses from the Chatbot will be in Icelandic").send()
|
| 39 |
|
| 40 |
+
# templates for the LLM
|
| 41 |
+
|
| 42 |
user_template = """
|
| 43 |
Question:
|
| 44 |
{question}
|
|
|
|
| 54 |
Respond in the language provided below. If no language is provided, use Italian.
|
| 55 |
"""
|
| 56 |
|
| 57 |
+
#################################################
|
| 58 |
+
### On Chat Start (Session Start) Section ###
|
| 59 |
+
### Use this for pre-session setup processing ###
|
| 60 |
+
#################################################
|
| 61 |
@cl.on_chat_start
|
| 62 |
async def on_chat_start():
|
| 63 |
# create a chain
|
|
|
|
| 70 |
cl.user_session.set("chain", simple_chain)
|
| 71 |
|
| 72 |
response = await cl.AskActionMessage(
|
| 73 |
+
content="Do you want to experiment with buttons?",
|
| 74 |
actions=[
|
| 75 |
cl.Action(name="yes", value="yes", label="β
Yes"),
|
| 76 |
cl.Action(name="no", value="no", label="β No"),
|
| 77 |
+
cl.Action(name="maybe", value="maybe", label="β Maybe"),
|
| 78 |
],
|
| 79 |
).send()
|
| 80 |
if response and response.get("value") == "yes":
|
| 81 |
actions = [
|
| 82 |
+
cl.Action(name="Hide button", value="hide_button", description="Hide this button"),
|
| 83 |
+
cl.Action(name="Show text", value="show_text", description="Show thetext")
|
| 84 |
]
|
| 85 |
|
| 86 |
await cl.Message(content="Different actions", actions=actions).send()
|
|
|
|
| 98 |
|
| 99 |
await cl.Message(content="Ask the chatbot a question. Then click the Icelandic button and ask again.").send()
|
| 100 |
|
| 101 |
+
#################################################
|
| 102 |
+
### On Message Section ###
|
| 103 |
+
### Use this for processing each user message ###
|
| 104 |
+
#################################################
|
| 105 |
@cl.on_message
|
| 106 |
async def main(message: cl.Message):
|
| 107 |
+
# get the session variables
|
| 108 |
chain = cl.user_session.get("chain")
|
| 109 |
language = cl.user_session.get("language", "english")
|
| 110 |
question = message.content
|
| 111 |
|
| 112 |
+
response = chain.invoke({"question": question, "language": language})
|
| 113 |
+
print(response.content)
|
| 114 |
+
await cl.Message(content=response.content).send()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|