Black Lives Matter · Supporting the cause ·
- Python (3.8.13)
- Poetry
- Docker
- Docker-compose
Use make commands to check_environment, install_requirements, lint, test, migrate, start, migrations and collectstatic.
| Command | Description | 
|---|---|
| make help | Show make commands help | 
| make check_environment | Check if all dependencies was installed | 
| make install_requirements | Install pip dependencies | 
| make lint | Show lint warnings and errors | 
| make test | Run unit tests and show coverage report | 
| make migrate | Update DB shema, apply migrations | 
| make search_index | (Re)create and (re)populate the indices in Elasticsearch | 
| make start | Start development web server | 
| make start_celery | Start celery service | 
| make migrations | Create DB migrations files | 
| make collectstatic | Collects the static files into STATIC_ROOT | 
Run poetry run python ./manage.py fill_db_using_fake_data to fill database using fake data. This can help you to test Bothub Webapp.
Run poetry run python ./manage.py transfer_train_aws Migrate all trainings to an aws bucket defined in project settings.
Run poetry run python ./manage.py enable_all_train
Run poetry run python ./manage.py start_all_repository_train
| nickname | password | is superuser | |
|---|---|---|---|
| admin | [email protected] | admin | yes | 
| user | [email protected] | user | no | 
A step by step guide on how to run the project locally. This guide expects that you to:
- Have installed and activated pyenv with the correct Python version for the project;
- Installed poetry in that environment;
- Installed redis database and it is running;
- Installed and configured docker;
- Installed make if you are on Windows.
All the commands must be executed at the project root.
- 
Set up your .envfile. You can find the expected and default values below or ask a collaborator for the development file in case you don't have one.
- 
Create the bothub network inside docker: docker network create bothub
- 
Run the project's database with docker: docker compose up database
- 
Run redis locally: sudo service redis-server restart
- 
Run engine locally: poetry run python manage.py runserver
- 
Run migrations and populate script: poetry run python manage.py migratepoetry run python manage.py fill_db_using_fake_data
- 
Run celery locally: make start_celery
- 
Run elasticsearch with docker: docker compose up es
- 
Run elasticsearch indexing: make search_index
Docker images available in Bothub's Docker Hub repository.
Host your own Bothub Engine with [One-Click Deploy] (https://heroku.com/deploy).
You can set environment variables in your OS, write on .env file or pass via Docker config.
| Variable | Type | Default | Description | 
|---|---|---|---|
| SECRET_KEY | string | None | A secret key for a particular Django installation. This is used to provide cryptographic signing, and should be set to a unique, unpredictable value. | 
| DEBUG | boolean | False | A boolean that turns on/off debug mode. | 
| BASE_URL | string | http://api.bothub.it | URL Base Bothub Engine Backend. | 
| ALLOWED_HOSTS | string | * | A list of strings representing the host/domain names that this Django site can serve. | 
| DEFAULT_DATABASE | string | sqlite:///db.sqlite3 | Read dj-database-url to configure the database connection. | 
| LANGUAGE_CODE | string | en-us | A string representing the language code for this installation.This should be in standard language ID format. | 
| TIME_ZONE | string | UTC | A string representing the time zone for this installation. See the list of time zones. | 
| STATIC_URL | string | /static/ | URL to use when referring to static files located in STATIC_ROOT. | 
| EMAIL_HOST | string | None | The host to use for sending email. When setted to Noneor empty string, theEMAIL_BACKENDsetting is setted todjango.core.mail.backends.console.EmailBackend | 
| EMAIL_PORT | int | 25 | Port to use for the SMTP server defined in EMAIL_HOST. | 
| DEFAULT_FROM_EMAIL | string | webmaster@localhost | Default email address to use for various automated correspondence from the site manager(s). | 
| SERVER_EMAIL | string | root@localhost | The email address that error messages come from, such as those sent to ADMINSandMANAGERS. | 
| EMAIL_HOST_USER | string | '' | Username to use for the SMTP server defined in EMAIL_HOST. | 
| EMAIL_HOST_PASSWORD | string | '' | Password to use for the SMTP server defined in EMAIL_HOST. | 
| EMAIL_USE_SSL | boolean | False | Whether to use an implicit TLS (secure) connection when talking to the SMTP server. | 
| EMAIL_USE_TLS | boolean | False | Whether to use a TLS (secure) connection when talking to the SMTP server. | 
| ADMINS | string | '' | A list of all the people who get code error notifications. Follow the pattern: [email protected]|Admin 1,[email protected]|Admin 2 | 
| CSRF_COOKIE_DOMAIN | string | None | The domain to be used when setting the CSRF cookie. | 
| CSRF_COOKIE_SECURE | boolean | False | Whether to use a secure cookie for the CSRF cookie. | 
| BOTHUB_WEBAPP_BASE_URL | string | http://localhost:8080/ | The bothub-webapp production application URL. Used to refer and redirect user correctly. | 
| SUPPORTED_LANGUAGES | string | ```en | pt``` | 
| BOTHUB_NLP_BASE_URL | string | http://localhost:2657/ | The bothub-blp production application URL. Used to proxy requests. | 
| CHECK_ACCESSIBLE_API_URL | string | http://localhost/api/repositories/ | URL used by bothub.health.check.check_accessible_apito make a HTTP request. The response status code must be 200. | 
| SEND_EMAILS | boolean | True | Send emails flag. | 
| BOTHUB_ENGINE_AWS_S3_BUCKET_NAME | string | None | Specify the bucket name to send to s3 | 
| BOTHUB_ENGINE_AWS_ACCESS_KEY_ID | string | None | Specify the access key to send to s3 | 
| BOTHUB_ENGINE_AWS_SECRET_ACCESS_KEY | string | None | Specify the secret access key to send to s3 | 
| BOTHUB_ENGINE_AWS_REGION_NAME | string | None | Specify the region to send to s3 | 
| BOTHUB_ENGINE_AWS_ENDPOINT_URL | string | None | Specify the endpoint to send to s3, if sending to amazon s3, there is no need to specify a value | 
| BOTHUB_ENGINE_AWS_SEND | bool | False | Authorize sending to s3 | 
| BOTHUB_BOT_EMAIL | string | [email protected] | Email that the system will automatically create for existing repositories that the owner deleted the account | 
| BOTHUB_BOT_NAME | string | Bot Repository | Name that the system will use to create the account | 
| BOTHUB_BOT_NICKNAME | string | bot_repository | Nickname that the system will use to create the account | 
| BOTHUB_ENGINE_USE_SENTRY | bool | False | Enable Support Sentry | 
| BOTHUB_ENGINE_SENTRY | string | None | URL Sentry | 
| BOTHUB_NLP_RASA_VERSION | string | 1.4.3 | Specify the version of rasa used in the nlp worker | 
| TOKEN_SEARCH_REPOSITORIES | string | None | Specify the token to be used in the search_repositories_examples route, if not specified, the route is available without authentication | 
| GOOGLE_API_TRANSLATION_KEY | string | None | Specify the Google Translation API passkey, used in machine translation | 
| APM_DISABLE_SEND | bool | False | Disable sending Elastic APM | 
| APM_SERVICE_DEBUG | bool | False | Enable APM debug mode | 
| APM_SERVICE_NAME | string | '' | APM Service Name | 
| APM_SECRET_TOKEN | string | '' | APM Secret Token | 
| APM_SERVER_URL | string | '' | APM URL | 
| APM_SERVICE_ENVIRONMENT | string | '' | Environment that APM is running on | 
| ENVIRONMENT | string | production | Specify the environment you are going to run, it is also used for sentry | 
| SUGGESTION_LANGUAGES | string | ```en | pt_br``` | 
| N_WORDS_TO_GENERATE | int | 4 | Specify the number of suggestions that will be returned for word suggestions | 
| N_SENTENCES_TO_GENERATE | int | 10 | Specify the number of suggestions that will be returned for intent suggestions | 
| REDIS_TIMEOUT | int | 3600 | Specify a systemwide Redis keys life time | 
| SECRET_KEY_CHECK_LEGACY_USER | string | None | Enables and specifies the token to use for the legacy user endpoint. | 
| OIDC_ENABLED | bool | False | Enable using OIDC. | 
| OIDC_RP_CLIENT_ID | string | None | OpenID Connect client ID provided by your OP. | 
| OIDC_RP_CLIENT_SECRET | string | None | OpenID Connect client secret provided by your OP. | 
| OIDC_OP_AUTHORIZATION_ENDPOINT | string | None | URL of your OpenID Connect provider authorization endpoint. | 
| OIDC_OP_TOKEN_ENDPOINT | string | None | URL of your OpenID Connect provider token endpoint. | 
| OIDC_OP_USER_ENDPOINT | string | None | URL of your OpenID Connect provider userinfo endpoint. | 
| OIDC_OP_JWKS_ENDPOINT | string | None | URL of your OpenID Connect provider JWKS endpoint. | 
| OIDC_RP_SIGN_ALGO | string | RS256 | Sets the algorithm the IdP uses to sign ID tokens. | 
| OIDC_DRF_AUTH_BACKEND | string | bothub.authentication.authorization.WeniOIDCAuthenticationBackend | Define the authentication middleware for the django rest framework. | 
| OIDC_RP_SCOPES | string | openid email | The OpenID Connect scopes to request during login. | 
| CONNECT_GRPC_SERVER_URL | string | localhost:8002 | Define grpc connect server url | 
| CONNECT_CERTIFICATE_GRPC_CRT | string | None | Absolute certificate path for secure grpc communication | 
| CONNECT_API_URL | string | None | Connect module api url | 
| USE_GRPC | bool | False | Use connect gRPC clients | 
| RECAPTCHA_SECRET_KEY | string | '' | Token of the recaptcha used in the validation of a user's registration. | 
| REPOSITORY_NLP_LOG_LIMIT | int | 10000 | Limit of query size to repository log. | 
| REPOSITORY_RESTRICT_ACCESS_NLP_LOGS | list | [] | Restricts log access to a particular or multiple intelligences | 
| REPOSITORY_KNOWLEDGE_BASE_DESCRIPTION_LIMIT | int | 450 | Limit of characters in the knowledge base description | 
| REPOSITORY_EXAMPLE_TEXT_WORDS_LIMIT | int | 200 | Limit of words for the example sentence text | 
| ELASTICSEARCH_DSL | string | es:9200 | URL Elasticsearch. | 
| ELASTICSEARCH_NUMBER_OF_SHARDS | int | 1 | Specify the number of shards for the indexes. | 
| ELASTICSEARCH_NUMBER_OF_REPLICAS | int | 1 | Specify the number of replicas for the indexes. | 
| ELASTICSEARCH_REPOSITORYNLPLOG_INDEX | string | ai_repositorynlplog | Specify the index title for the RepositoryNLPLog document. | 
| ELASTICSEARCH_REPOSITORYQANLPLOG_INDEX | string | ai_repositoryqanlplog | Specify the index title for the RepositoryQANLPLog document. | 
| ELASTICSEARCH_REPOSITORYBASICEXAMPLE_INDEX | string | ai_repositorybasicexample | Specify the index title for the RepositoryBasicExample document. | 
| ELASTICSEARCH_SIGNAL_PROCESSOR | string | celery | Specify the signal processor responsible for updating the Elasticsearch data. | 
| ELASTICSEARCH_DELETE_ILM_NAME | string | delete_nlp_logs | Specify the name of the ILM responsible to delete the logs. | 
| ELASTICSEARCH_TIMESTAMP_PIPELINE_NAME | string | set_timestamp | Specify the pipeline name that will be responsible to create the @timestamp field. | 
| ES_TIMESTAMP_PIPELINE_FIELD | string | created_at | Specify the field that will be used to populate the @timestamp field. | 
| ELASTICSEARCH_LOGS_ROLLOVER_AGE | string | 1d | Specify the ILM rollover age, when a new index will be created. | 
| ELASTICSEARCH_LOGS_DELETE_AGE | string | 90d | Specify the ILM delete age, when the index will be deleted. | 
| GUNICORN_WORKERS | int | multiprocessing.cpu_count() * 2 + 1 | Gunicorn number of workers. | 
| USE_ELASTICSEARCH | boolean | true | Change the logic in requirements_to_train to use either elasticsearch or postgres. | 
| ELASTICSEARCH_CUSTOM_QUEUE | string | celery | Set a custom celery queue to run "es_handle_save" task. When a non-default value is set, this celery instance must be started separately or the task will not be executed. | 
| REPOSITORY_BLOCK_USER_LOGS | list | [] | List of repository authorization(api bearer) that won't save logs | 
| RUN_AS_DEVELOPMENT_MODE | boolean | false | Specifies how to run the server, in production or development mode. | 
| TEST_REPOSITORY_ID | string | None | The repository from which the RepositoryTokenByUserViewSet will retrieve the logged user's access token. | 
See the open issues for a list of proposed features (and known issues).
Distributed under the GPL-3.0 License. See LICENSE for more information.
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (git checkout -b feature/AmazingFeature)
- Commit your Changes (git commit -m 'Add some AmazingFeature')
- Push to the Branch (git push origin feature/AmazingFeature)
- Open a Pull Request

