Skip to content

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

License

Notifications You must be signed in to change notification settings

pykong/WeatherWiz

Repository files navigation

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, Python and love ❤️ and proudly features:

  • a fancy frontend build with chatroom.js
  • using free APIs (no signup or API key required):
    • real weather data from Bright Sky API
      • forecasts up to seven days
      • historical data from 01.01.2010
    • geocoding via Nominatim API
    • user IP address as a location fallback via ipinfo.io API
  • slots for place and time for keeping conversation context
  • a dateparser 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
  • 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 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
  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