Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/pykong/weatherwiz

A chatbot for conversational weather forecasts, built with Rasa, Python and love ❤️.
https://github.com/pykong/weatherwiz

brightsky chatbot iubh poetry python rasa weather weather-forecast

Last synced: 21 days ago
JSON representation

A chatbot for conversational weather forecasts, built with Rasa, Python and love ❤️.

Awesome Lists containing this project

README

        



WeatherWiz logo




PlaceholderBadge
PlaceholderBadge
PlaceholderBadge
PlaceholderBadge
PlaceholderBadge
PlaceholderBadge

License

PlaceholderBadge
PlaceholderBadge




Example Dialog

# WeatherWiz

WeatherWiz is a chatbot for weather forecasts.
It is built with [Rasa](https://rasa.com/), Python and love ❤️ and proudly **features**:

- a fancy frontend build with [chatroom.js](https://github.com/scalableminds/chatroom)
- using free APIs (_no signup or API key required_):
- **real weather data** from [Bright Sky](https://brightsky.dev/docs/#/) API
- forecasts up to seven days
- historical data from 01.01.2010
- geocoding via [Nominatim](https://nominatim.org/) API
- user IP address as a location fallback via [ipinfo.io](https://ipinfo.io/) API
- slots for place and time for keeping conversation context
- a [dateparser](https://dateparser.readthedocs.io/en/latest/) for date and time extraction
- high test coverage via Pytest and Rasa's tests
- full Dockerization

## Getting started

To start WeatherWiz you will need:

- a working [Docker engine](https://docs.docker.com/engine/install/)
- Internet access (for setup and API access)
- at least 16GB RAM (32GB recommended)

Talking to WeatherWiz is as easy as:

1. Clone the project
2. Open a shell in the project folder
3. In the shell, run `docker compose up`
4. Open [localhost:8000](http://localhost:8000) in your browser
5. Enjoy talking to WeatherWiz... 🙂

## Contributing

WeatherWiz suggests the following development setup:

1. **Docker** to run the application
2. **Poetry** for dependency management
3. **Ruff** for formatting and linting
4. A type checker, preferably [pyright](https://github.com/microsoft/pyright)
5. **Pytest** for unit testing

Configuration is located in the `pyproject.toml`, at the root of the project.

To contribute:

1. Fork this repository
2. Do your changes, including:
- test coverage
- documentation
3. Open a PR

You may also feel free to open any issue.

## Current limitations

- WeatherWiz will only answer questions regarding rain, temperature and wind
- answer format remains generic
- failure of API access is not handled gracefully

## Links

- [dateparser](https://dateparser.readthedocs.io/en/latest/)
- [DateparserEntityExtractor](https://rasahq.github.io/rasa-nlu-examples/docs/extractors/dateparser/)
- [chatroom.js](https://github.com/scalableminds/chatroom)
- [Bright Sky](https://brightsky.dev/docs/#/)
- [Nominatim](https://nominatim.org/)
- [ipinfo.io](https://ipinfo.io/)