Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danielgolabek/rasahost
ui and host for Rasa Nlu and Rasa Core
https://github.com/danielgolabek/rasahost
chatbot flask nlu python3 rasa rasa-chat rasa-conversations rasa-core rasa-logs rasa-nlu rasa-ui vuejs
Last synced: 1 day ago
JSON representation
ui and host for Rasa Nlu and Rasa Core
- Host: GitHub
- URL: https://github.com/danielgolabek/rasahost
- Owner: danielgolabek
- Created: 2018-10-06T12:59:52.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2022-12-27T15:34:53.000Z (almost 2 years ago)
- Last Synced: 2024-11-12T15:03:57.892Z (1 day ago)
- Topics: chatbot, flask, nlu, python3, rasa, rasa-chat, rasa-conversations, rasa-core, rasa-logs, rasa-nlu, rasa-ui, vuejs
- Language: JavaScript
- Homepage:
- Size: 35.3 MB
- Stars: 58
- Watchers: 7
- Forks: 28
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# RasaHost
A user interfaces for Rasa NLU and Rasa Core, that simplify bot development.
### Features
- Editor for MD files (intents, stories, domain) in Rasa format
- Getting started is beyond easy, you just have to specify paths to your MD files.
- No migration is needed. The tool uses standard Rasa format.
- It does not have a dependency on the Rasa version.
- Logs conversations
- All logs and conversations are saved in SQLite.
- You just have to create an agent and bind it to the host.
- The logging can be mixed with standard logging to files and console-like Rasa does by default.
- It does not have a dependency on the Rasa version.
- Testing
- Chat control
- Memoization Policy visualization### Tech
- python
- flask
- vuejs### Installation
[https://pypi.org/project/rasa-host](https://pypi.org/project/rasa-host/)
```python
pip install rasa-host
```### Running
Rasa-Host does not have a dependency on Rasa(in fact does not have Rasa packages dependency) and will work with all versions.
```python
from rasa_core.interpreter import RasaNLUInterpreter
from rasa_core.agent import Agent
interpreter = RasaNLUInterpreter('models/current/nlu')
agent = Agent.load("models/current/dialogue", interpreter=interpreter)from RasaHost import host
host.nlu_path = os.path.join(current_dir, "data/nlu/")
host.stories_path = os.path.join(current_dir, "data/stories/")
host.domain_path = os.path.join(current_dir, "data/domain.yml")
host.agent = agent
if __name__ == '__main__':
host.run()
# werkzeug - * Running on http://0.0.0.0:5005/ (Press CTRL+C to quit)
# GET http://localhost:5005/conversations/daniel/respond?q={{message}}
```## NLU - md files
```python
from RasaHost import host
host.nlu_path = os.path.join(current_dir, "data/nlu/")
if __name__ == '__main__':
host.run()
```
![NLU - md files](doc/nlu-md_files.PNG "NLU - md files")## Core - stories files
```python
from RasaHost import host
host.stories_path = os.path.join(current_dir, "data/stories/")
if __name__ == '__main__':
host.run()
```
![Core - md stories](doc/core-stories_files.PNG "Core - stories files")## Core - domain file
```python
from RasaHost import host
host.domain_path = os.path.join(current_dir, "data/domain.yml")
if __name__ == '__main__':
host.run()
```
![Core - domain file](doc/core-domain_file.PNG "Core - domain file")## Core - chat
Chat interface for testing Rasa. By default, does GET http://{{host}}/conversations/{{sender_id}}/respond?q={{message}}
```python
from RasaHost import host
host.agent = agent
if __name__ == '__main__':
host.run()
```
![Core - chat](doc/core-chat.PNG "Core - chat")## Core - conversations
Conversations are saved in SQLite.
```python
from RasaHost import host
host.agent = agent
if __name__ == '__main__':
host.run()
```
![Core - conversations](doc/core-conversations.PNG "Core - conversations")## Core - logs
Logs are saved in SQLite.
```python
from RasaHost import host
host.agent = agent
if __name__ == '__main__':
host.run()
```
![Core - logs](doc/core-logs.PNG "Core - logs")## Core - analyze
Analyze intents, stories, and domains. Shows warnings and suggestions.
```python
from RasaHost import host
host.nlu_path = os.path.join(current_dir, "data/nlu/")
host.stories_path = os.path.join(current_dir, "data/stories/")
host.domain_path = os.path.join(current_dir, "data/domain.yml")
if __name__ == '__main__':
host.run()
```
![Core - analyze](doc/core-analyze.PNG "Core - analyze")## Core - memoization policy
Decode memoization policy data.
```python
from RasaHost import host
host.memoization_policy_path = os.path.join(current_dir, "models\current\dialogue\policy_1_MemoizationPolicy")
if __name__ == '__main__':
host.run()
```
![Core - memoization policy](doc/core-memoization_policy.PNG "Core - memoization policy")## Actions
You can also host actions, with or without the agent.
```python
from rasa_core_sdk.executor import ActionExecutor
actionExecutor = ActionExecutor()
actionExecutor.register_package('actions')from RasaHost import host
host.actionExecutor = actionExecutor
if __name__ == '__main__':
host.run()
# werkzeug - * Running on http://0.0.0.0:5005/ (Press CTRL+C to quit)
# POST http://localhost:5005/actions
```## Agent with actions
Example of running the app with agent and custom actions.
```python
from rasa_core.interpreter import RasaNLUInterpreter
from rasa_core.agent import Agent
from rasa_core import utils, server
from rasa_core_sdk.executor import ActionExecutor
# #rasa-host.endpoints.yml
# action_endpoint:
# url: "http://localhost:5005/actions"
action_endpoint_conf = utils.read_endpoint_config("rasa-host.endpoints.yml", endpoint_type="action_endpoint")
interpreter = RasaNLUInterpreter('models/current/nlu')
agent = Agent.load("models/current/dialogue", interpreter=interpreter, action_endpoint=action_endpoint_conf)actionExecutor = ActionExecutor()
actionExecutor.register_package('actions')from RasaHost import host
host.nlu_path = os.path.join(current_dir, "data/nlu/")
host.stories_path = os.path.join(current_dir, "data/stories/")
host.domain_path = os.path.join(current_dir, "data/domain.yml")
host.agent = agent
host.actionExecutor = actionExecutor
if __name__ == '__main__':
host.run()
# werkzeug - * Running on http://0.0.0.0:5005/ (Press CTRL+C to quit)
# GET http://localhost:5005/conversations/daniel/respond?q={{message}}
# POST http://localhost:5005/actions
```## Channels
Supports channels. All the conversations will be logged.
```python
from rasa_core.channels.botframework import BotFrameworkInput
input_channel = BotFrameworkInput(
app_id="",
app_password=""
)from RasaHost import host
host.agent = agent
host.channels = [input_channel]
if __name__ == '__main__':
host.run()
```