From 6a5671d3a01782d61d89156a87f060400942a329 Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Sat, 19 Nov 2022 09:42:25 -0800 Subject: [PATCH 01/12] action build files --- .gitignore | 14 ++++++++++++++ Dockerfile | 11 +++++++++++ actions/requirements.txt | 1 + build.sh | 8 ++++++++ 4 files changed, 34 insertions(+) create mode 100644 Dockerfile create mode 100644 actions/requirements.txt create mode 100755 build.sh diff --git a/.gitignore b/.gitignore index b6e4761..d911c97 100644 --- a/.gitignore +++ b/.gitignore @@ -127,3 +127,17 @@ dmypy.json # Pyre type checker .pyre/ + +# VSCode +.vscode/ +.history/ +*.DS_Store +*.wpr +*.wpu + +# Rasa stuff +models/ +*.db* +*.dot +terms/ +results/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..03385d7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM rasa/rasa-sdk:2.8.10 +ENV TZ=Americas/Los_Angeles + +COPY actions /app/actions + +USER root +RUN /opt/venv/bin/python -m pip install --upgrade pip +RUN pip install --no-cache-dir -r /app/actions/requirements.txt + +USER 1001 +CMD ["start", "--actions", "actions"] \ No newline at end of file diff --git a/actions/requirements.txt b/actions/requirements.txt new file mode 100644 index 0000000..663bd1f --- /dev/null +++ b/actions/requirements.txt @@ -0,0 +1 @@ +requests \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..62f897d --- /dev/null +++ b/build.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# Build action server image +VERS=1.0.0 +REGISTRY=stephens +IMAGE=haystack-action + +time docker buildx build --platform linux/amd64,linux/arm64 --output=type=registry --tag ${REGISTRY}/${IMAGE}:${VERS} --tag ${REGISTRY}/${IMAGE}:latest . +docker push ${REGISTRY}/${IMAGE} --all-tags From c78cd7988b74bc6a22791f7095c626aa9045912a Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Sat, 19 Nov 2022 21:42:19 -0800 Subject: [PATCH 02/12] 3.0 update, action code --- .gitignore | 1 + Dockerfile | 4 ++-- actions/actions.py | 20 ++++++++++++++++++-- build.sh | 2 +- data/nlu.yml | 3 +-- data/rules.yml | 2 +- data/stories.yml | 2 +- domain.yml | 4 ++-- 8 files changed, 27 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index d911c97..b214b25 100644 --- a/.gitignore +++ b/.gitignore @@ -141,3 +141,4 @@ models/ *.dot terms/ results/ +.rasa/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 03385d7..12697ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rasa/rasa-sdk:2.8.10 +FROM rasa/rasa-sdk:3.3.0 ENV TZ=Americas/Los_Angeles COPY actions /app/actions @@ -8,4 +8,4 @@ RUN /opt/venv/bin/python -m pip install --upgrade pip RUN pip install --no-cache-dir -r /app/actions/requirements.txt USER 1001 -CMD ["start", "--actions", "actions"] \ No newline at end of file +CMD ["start", "--actions", "actions"] \ No newline at end of file diff --git a/actions/actions.py b/actions/actions.py index 6ab76f6..d0c0be4 100644 --- a/actions/actions.py +++ b/actions/actions.py @@ -10,7 +10,10 @@ from rasa_sdk import Action, Tracker from rasa_sdk.executor import CollectingDispatcher import requests +import json +import logging +logger = logging.getLogger(__name__) class ActionHaystack(Action): @@ -22,14 +25,27 @@ def run(self, dispatcher: CollectingDispatcher, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: url = "http://localhost:8000/query" - payload = {"query": str(tracker.latest_message["text"])} + # params={'filters': {}, 'Retriever': {'top_k': 3}, 'Reader': {'top_k': 3}, 'Query': {'debug': False}} + payload = { + "query": str(tracker.latest_message["text"]), + "params":{"filters": {}, "Retriever": {"top_k": 3}, "Reader": {"top_k": 3}, "Query": {"debug": False}} + } headers = { 'Content-Type': 'application/json' } - response = requests.request("POST", url, headers=headers, json=payload).json() + + logger.debug(f"Calling {url}, ask: {str(tracker.latest_message['text'])}") + try: + response = requests.request("POST", url, headers=headers, json=payload).json() + except requests.exceptions.RequestException as e: + response = {"answers":[{"answer":"Haystack service not responding"}]} if response["answers"]: + logger.debug(f"answers {response}") answer = response["answers"][0]["answer"] + if not answer: + answer = response["answers"][1]["answer"] + logger.debug(f"selected answer: {answer}") else: answer = "No Answer Found!" diff --git a/build.sh b/build.sh index 62f897d..d3b079a 100755 --- a/build.sh +++ b/build.sh @@ -1,6 +1,6 @@ #!/bin/sh # Build action server image -VERS=1.0.0 +VERS=3.3.0 REGISTRY=stephens IMAGE=haystack-action diff --git a/data/nlu.yml b/data/nlu.yml index 08e8262..7a86361 100644 --- a/data/nlu.yml +++ b/data/nlu.yml @@ -1,4 +1,4 @@ -version: "2.0" +version: "3.1" nlu: - intent: knowledge_question @@ -30,7 +30,6 @@ nlu: - intent: goodbye examples: | - - good afternoon - cu - good by - cee you later diff --git a/data/rules.yml b/data/rules.yml index 6681c24..1577649 100644 --- a/data/rules.yml +++ b/data/rules.yml @@ -1,4 +1,4 @@ -version: "2.0" +version: "3.1" rules: diff --git a/data/stories.yml b/data/stories.yml index 077651b..6ff78ee 100644 --- a/data/stories.yml +++ b/data/stories.yml @@ -1,4 +1,4 @@ -version: "2.0" +version: "3.1" stories: diff --git a/domain.yml b/domain.yml index 348a01f..1b5d48f 100644 --- a/domain.yml +++ b/domain.yml @@ -1,4 +1,4 @@ -version: '2.0' +version: "3.1" config: store_entities_as_slots: true session_config: @@ -27,7 +27,7 @@ entities: [] slots: {} responses: utter_greet: - - text: Hey! How are you? + - text: Hey! Ask me for the capital of a country. utter_cheer_up: - image: https://i.imgur.com/nGF1K8f.jpg text: 'Here is something to cheer you up:' From 1d04af33d4e57004a98c16431c421c0fb97a6646 Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Thu, 8 Dec 2022 09:59:03 -0800 Subject: [PATCH 03/12] Update domain.yml Co-authored-by: Tobias Wochinger --- domain.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domain.yml b/domain.yml index 1b5d48f..8f02a7e 100644 --- a/domain.yml +++ b/domain.yml @@ -27,7 +27,7 @@ entities: [] slots: {} responses: utter_greet: - - text: Hey! Ask me for the capital of a country. + - text: Hey! How are you? utter_cheer_up: - image: https://i.imgur.com/nGF1K8f.jpg text: 'Here is something to cheer you up:' From 9dd459b8568d265dd84d6691e761e5a87a002892 Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Thu, 8 Dec 2022 10:24:44 -0800 Subject: [PATCH 04/12] action fixes --- actions/actions.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/actions/actions.py b/actions/actions.py index d0c0be4..ecabed0 100644 --- a/actions/actions.py +++ b/actions/actions.py @@ -9,7 +9,8 @@ from rasa_sdk import Action, Tracker from rasa_sdk.executor import CollectingDispatcher -import requests +import aiohttp +import asyncio import json import logging @@ -20,7 +21,7 @@ class ActionHaystack(Action): def name(self) -> Text: return "call_haystack" - def run(self, dispatcher: CollectingDispatcher, + async def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: @@ -36,9 +37,12 @@ def run(self, dispatcher: CollectingDispatcher, logger.debug(f"Calling {url}, ask: {str(tracker.latest_message['text'])}") try: - response = requests.request("POST", url, headers=headers, json=payload).json() - except requests.exceptions.RequestException as e: - response = {"answers":[{"answer":"Haystack service not responding"}]} + async with aiohttp.ClientSession() as session: + async with session.post(url, headers=headers, json=payload) as response: + response = response.json() + except aiohttp.ClientConnectorError as e: + logger.error(f"Haystack service not responding: {str(e)}") + response = {"answers":[{"answer":f"Haystack service not responding: {str(e)}"}]} if response["answers"]: logger.debug(f"answers {response}") From e8f1d672529be948e3e0d32b657984560fb47070 Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Thu, 8 Dec 2022 10:26:14 -0800 Subject: [PATCH 05/12] update requirements.txt --- actions/actions.py | 1 - actions/requirements.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/actions/actions.py b/actions/actions.py index ecabed0..63bc31f 100644 --- a/actions/actions.py +++ b/actions/actions.py @@ -10,7 +10,6 @@ from rasa_sdk import Action, Tracker from rasa_sdk.executor import CollectingDispatcher import aiohttp -import asyncio import json import logging diff --git a/actions/requirements.txt b/actions/requirements.txt index 663bd1f..ee4ba4f 100644 --- a/actions/requirements.txt +++ b/actions/requirements.txt @@ -1 +1 @@ -requests \ No newline at end of file +aiohttp From 2df69169a65ef853c5b052b216fe53a5636e435f Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Thu, 30 Mar 2023 13:50:39 -0700 Subject: [PATCH 06/12] Update build.sh Co-authored-by: Tobias Wochinger --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index d3b079a..ffdf6cb 100755 --- a/build.sh +++ b/build.sh @@ -1,7 +1,7 @@ #!/bin/sh # Build action server image VERS=3.3.0 -REGISTRY=stephens +REGISTRY= IMAGE=haystack-action time docker buildx build --platform linux/amd64,linux/arm64 --output=type=registry --tag ${REGISTRY}/${IMAGE}:${VERS} --tag ${REGISTRY}/${IMAGE}:latest . From 9312a282091af4c17fd2b1eca61af12396dcbccb Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Thu, 30 Mar 2023 13:50:59 -0700 Subject: [PATCH 07/12] Update actions/actions.py Co-authored-by: Tobias Wochinger --- actions/actions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/actions.py b/actions/actions.py index 63bc31f..dd4b76c 100644 --- a/actions/actions.py +++ b/actions/actions.py @@ -44,7 +44,7 @@ async def run(self, dispatcher: CollectingDispatcher, response = {"answers":[{"answer":f"Haystack service not responding: {str(e)}"}]} if response["answers"]: - logger.debug(f"answers {response}") + logger.debug(f"Answers returned by haystack:\n{response}") answer = response["answers"][0]["answer"] if not answer: answer = response["answers"][1]["answer"] From 6217343b5ae074d55b8357a6b7e439526c0aceb0 Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Thu, 30 Mar 2023 13:52:55 -0700 Subject: [PATCH 08/12] Update Dockerfile --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 12697ec..56c1bc8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM rasa/rasa-sdk:3.3.0 -ENV TZ=Americas/Los_Angeles +ENV TZ=Etc/UTC COPY actions /app/actions @@ -8,4 +8,4 @@ RUN /opt/venv/bin/python -m pip install --upgrade pip RUN pip install --no-cache-dir -r /app/actions/requirements.txt USER 1001 -CMD ["start", "--actions", "actions"] \ No newline at end of file +CMD ["start", "--actions", "actions"] From 8ffad22862303efc66ea6e991c8073025939dc09 Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Thu, 30 Mar 2023 13:58:15 -0700 Subject: [PATCH 09/12] Update requirements.txt --- actions/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/requirements.txt b/actions/requirements.txt index ee4ba4f..7c05f0b 100644 --- a/actions/requirements.txt +++ b/actions/requirements.txt @@ -1 +1 @@ -aiohttp +aiohttp==3.8.1 From 5145cf2e75d24373541186db3d77a069f6c3f0b2 Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Thu, 30 Mar 2023 13:58:52 -0700 Subject: [PATCH 10/12] Update actions/actions.py Co-authored-by: Tobias Wochinger --- actions/actions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/actions.py b/actions/actions.py index dd4b76c..edc1e1f 100644 --- a/actions/actions.py +++ b/actions/actions.py @@ -38,7 +38,7 @@ async def run(self, dispatcher: CollectingDispatcher, try: async with aiohttp.ClientSession() as session: async with session.post(url, headers=headers, json=payload) as response: - response = response.json() + response = await response.json() except aiohttp.ClientConnectorError as e: logger.error(f"Haystack service not responding: {str(e)}") response = {"answers":[{"answer":f"Haystack service not responding: {str(e)}"}]} From 384d9c9f2a94410f0ef8b96072e7e13eecc7ad97 Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Thu, 30 Mar 2023 13:59:00 -0700 Subject: [PATCH 11/12] Update actions/actions.py Co-authored-by: Tobias Wochinger --- actions/actions.py | 1 - 1 file changed, 1 deletion(-) diff --git a/actions/actions.py b/actions/actions.py index edc1e1f..99e93d4 100644 --- a/actions/actions.py +++ b/actions/actions.py @@ -25,7 +25,6 @@ async def run(self, dispatcher: CollectingDispatcher, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: url = "http://localhost:8000/query" - # params={'filters': {}, 'Retriever': {'top_k': 3}, 'Reader': {'top_k': 3}, 'Query': {'debug': False}} payload = { "query": str(tracker.latest_message["text"]), "params":{"filters": {}, "Retriever": {"top_k": 3}, "Reader": {"top_k": 3}, "Query": {"debug": False}} From c96d139beb4f5d3112699da51c2235b168eddeec Mon Sep 17 00:00:00 2001 From: Greg Stephens Date: Thu, 30 Mar 2023 13:59:13 -0700 Subject: [PATCH 12/12] Update .gitignore Co-authored-by: Tobias Wochinger --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b214b25..f053927 100644 --- a/.gitignore +++ b/.gitignore @@ -141,4 +141,4 @@ models/ *.dot terms/ results/ -.rasa/ \ No newline at end of file +.rasa/