💁‍♀️Your new best friend powered by an artificial neural network


Olivia's character

💁‍♀️ Your new best friend

GoDoc

Twitter Follow

WebsiteDocumentationGetting startedIntroductionTranslationsContributorsLicense

⚠️ Please check the Call for contributors

Introduction

introduction

Description

Olivia is an open-source chatbot built in Golang using Machine Learning technologies. Its goal is to provide a free and open-source alternative to big services like DialogFlow.

You can chat with her by speaking (STT) or writing, she replies with a text message but you can enable her voice (TTS).

You can clone the project and customize it as you want using GitHub Try it on her website!

Why Olivia?

  • The only chatbot project in Go that could be modulable and customizable.
  • Using daily a privacy-friendly chatbot is great.
  • The Website is a Progressive Web Application, which means you can add it to your phone and it seems like a native app!

Getting started

Installation

Docker

docker installation

Pull the image from GitHub Packages

$ docker pull docker.pkg.github.com/olivia-ai/olivia/olivia:latest

Then start it

$ docker run -d -p 8080:8080 docker.pkg.github.com/olivia-ai/olivia/olivia:latest

You can just use the websocket of Olivia now.

To stop it, get the container id:

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
311b3abb963a        olivia              "./main"            7 minutes ago       Up 7 minutes        0.0.0.0:8080->8080/tcp   quizzical_mayer

and stop it

$ docker container stop 311b3abb963a 

The app will automatically check for res/datasets/training.json file which contains the save of the neural network. By default when you clone the repository from Github you have a stable save. If you want to train a new model just delete this file and rerun the app.

GitHub

Clone the project via GitHub:

$ git clone [email protected]:olivia-ai/olivia.git

Then download the dependencies

$ go mod download

And run it

$ go run main.go

Frontend and Backend

To install the frontend and the backend together, please use the docker-compose.yml file:

$ docker-compose up

And all done!

Architecture

architecture

Translations

introduction

Languages supported

  • English
  • Spanish
  • Catalan
  • French
  • German
  • Italian
  • Brazilian portuguese - not completed

Coverage

The coverage of the translations is given here. To add a language please read the documentation for that.

Contributors

docker installation

Contributing

Please refer to the contributing file

Code Contributors

Thanks to the people who contribute to Olivia.

Contribute

Financial Contributors

Become a financial contributor and help Olivia growth.

Contribute on the GitHub page of hugolgst ❤️

License

FOSSA Status

Made with ❤️ by Hugo Lageneste

Olivia's wave

Owner
Olivia
💁‍♀️Your new best friend
Olivia
Comments
  • Feature comparison with LeonAI

    Feature comparison with LeonAI

    It would be nice to do a feature comparison with LeonAI of which inspired this project. A Roadmap of where you want to take this would be nice too for contributors to have some kind of "grand vision".

  • own module not recogniced

    own module not recogniced

    I've followed the tutorial to create a own simple module:

    package modules
    
    import (
    	"fmt"
    )
    
    func init() {
    	RegisterModule(Module{
    		Tag: "gismo",
    		Patterns: []string{
    			"Who is gismo",
    		},
    		Responses: []string{
    			"Gismo is my %s",
    		},
    		Replacer: MyModuleReplacer,
    	})
    }
    
    func MyModuleReplacer(entry, response string) string {
        return fmt.Sprintf(response, "cat")
    }
    

    But the module is never triggerd. Is there any additional step required?

  • Song recommendation

    Song recommendation

    Describe what the module or intent should do and if this should be a module or an intent Please specify if you will implement this module or not.

    Allow Olivia to recommend songs for users. If you can explain the work of Olivia like, where to add the module and all, I would love to implement this module.

  • Installation/setup Front issues

    Installation/setup Front issues

    Hi, @hugolgst Please check to help me the following errors: First specify on which part this is related in the title with: I tried to install the front in here: https://github.com/olivia-ai/olivia-ai.org

    Describe the bug

    I got an error starting front in olivia-ai.org with the docker : ➜ docker build -t front . [+] Building 101.7s (9/11) => [internal] load build definition from Dockerfile 0.1s => => transferring dockerfile: 261B 0.0s => [internal] load .dockerignore 0.1s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/node:lts-alpine 3.2s => [1/7] FROM docker.io/library/node:lts-alpine@sha256:0a6a21d28509f56155007444075ef4fdd36eef0a97924623cb641d3766e3b8d3 0.0s => => resolve docker.io/library/node:lts-alpine@sha256:0a6a21d28509f56155007444075ef4fdd36eef0a97924623cb641d3766e3b8d3 0.0s => [internal] load build context 50.0s => => transferring context: 263.34MB 49.7s => CACHED [2/7] RUN npm install -g http-server 0.0s => CACHED [3/7] WORKDIR /app 0.0s => CACHED [4/7] COPY package*.json ./ 0.0s => ERROR [5/7] RUN npm ci 48.1s

    [5/7] RUN npm ci: #9 43.12 #9 43.12 > [email protected] install /app/node_modules/fsevents #9 43.12 > node install #9 43.12 #9 43.57 #9 43.57 > [email protected] postinstall /app/node_modules/core-js #9 43.57 > node scripts/postinstall || echo "ignore" #9 43.57 #9 43.63 Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library! #9 43.63 #9 43.63 The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: #9 43.63 > https://opencollective.com/core-js #9 43.63 > https://www.patreon.com/zloirock #9 43.63 #9 43.63 Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -) #9 43.63 #9 44.13 #9 44.13 > [email protected] install /app/node_modules/node-sass #9 44.13 > node scripts/install.js #9 44.13 #9 45.08 Downloading binary from https://github.com/sass/node-sass/releases/download/v4.13.1/linux_musl-x64-83_binding.node #9 45.70 Cannot download "https://github.com/sass/node-sass/releases/download/v4.13.1/linux_musl-x64-83_binding.node": #9 45.70 #9 45.70 HTTP error 404 Not Found #9 45.70 #9 45.70 Hint: If github.com is not accessible in your location #9 45.70 try setting a proxy via HTTP_PROXY, e.g. #9 45.70 #9 45.70 export HTTP_PROXY=http://example.com:1234 #9 45.70 #9 45.70 or configure npm proxy via #9 45.70 #9 45.70 npm config set proxy http://example.com:8080 #9 45.71 #9 45.71 > [email protected] postinstall /app/node_modules/node-sass #9 45.71 > node scripts/build.js #9 45.71 #9 45.82 Building: /usr/local/bin/node /app/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library= #9 45.93 gyp info it worked if it ends with ok #9 45.93 gyp verb cli [ #9 45.93 gyp verb cli '/usr/local/bin/node', #9 45.93 gyp verb cli '/app/node_modules/node-gyp/bin/node-gyp.js', #9 45.93 gyp verb cli 'rebuild', #9 45.93 gyp verb cli '--verbose', #9 45.93 gyp verb cli '--libsass_ext=', #9 45.93 gyp verb cli '--libsass_cflags=', #9 45.94 gyp verb cli '--libsass_ldflags=', #9 45.94 gyp verb cli '--libsass_library=' #9 45.94 gyp verb cli ] #9 45.94 gyp info using [email protected] #9 45.94 gyp info using [email protected] | linux | x64 #9 45.94 gyp verb command rebuild [] #9 45.94 gyp verb command clean [] #9 45.95 gyp verb clean removing "build" directory #9 45.96 gyp verb command configure [] #9 45.97 gyp verb check python checking for Python executable "python2" in the PATH #9 45.98 gyp verb which failed Error: not found: python2 #9 45.98 gyp verb which failed at getNotFoundError (/app/node_modules/which/which.js:13:12) #9 45.98 gyp verb which failed at F (/app/node_modules/which/which.js:68:19) #9 45.98 gyp verb which failed at E (/app/node_modules/which/which.js:80:29) #9 45.98 gyp verb which failed at /app/node_modules/which/which.js:89:16 #9 45.98 gyp verb which failed at /app/node_modules/isexe/index.js:42:5 #9 45.98 gyp verb which failed at /app/node_modules/isexe/mode.js:8:5 #9 45.98 gyp verb which failed at FSReqCallback.oncomplete (fs.js:183:21) #9 45.98 gyp verb which failed python2 Error: not found: python2 #9 45.98 gyp verb which failed at getNotFoundError (/app/node_modules/which/which.js:13:12) #9 45.98 gyp verb which failed at F (/app/node_modules/which/which.js:68:19) #9 45.98 gyp verb which failed at E (/app/node_modules/which/which.js:80:29) #9 45.98 gyp verb which failed at /app/node_modules/which/which.js:89:16 #9 45.98 gyp verb which failed at /app/node_modules/isexe/index.js:42:5 #9 45.98 gyp verb which failed at /app/node_modules/isexe/mode.js:8:5 #9 45.98 gyp verb which failed at FSReqCallback.oncomplete (fs.js:183:21) { #9 45.98 gyp verb which failed code: 'ENOENT' #9 45.98 gyp verb which failed } #9 45.98 gyp verb check python checking for Python executable "python" in the PATH #9 45.98 gyp verb which failed Error: not found: python #9 45.98 gyp verb which failed at getNotFoundError (/app/node_modules/which/which.js:13:12) #9 45.98 gyp verb which failed at F (/app/node_modules/which/which.js:68:19) #9 45.99 gyp verb which failed at E (/app/node_modules/which/which.js:80:29) #9 45.99 gyp verb which failed at /app/node_modules/which/which.js:89:16 #9 45.99 gyp verb which failed at /app/node_modules/isexe/index.js:42:5 #9 45.99 gyp verb which failed at /app/node_modules/isexe/mode.js:8:5 #9 45.99 gyp verb which failed at FSReqCallback.oncomplete (fs.js:183:21) #9 45.99 gyp verb which failed python Error: not found: python #9 45.99 gyp verb which failed at getNotFoundError (/app/node_modules/which/which.js:13:12) #9 45.99 gyp verb which failed at F (/app/node_modules/which/which.js:68:19) #9 45.99 gyp verb which failed at E (/app/node_modules/which/which.js:80:29) #9 45.99 gyp verb which failed at /app/node_modules/which/which.js:89:16 #9 45.99 gyp verb which failed at /app/node_modules/isexe/index.js:42:5 #9 45.99 gyp verb which failed at /app/node_modules/isexe/mode.js:8:5 #9 45.99 gyp verb which failed at FSReqCallback.oncomplete (fs.js:183:21) { #9 45.99 gyp verb which failed code: 'ENOENT' #9 45.99 gyp verb which failed } #9 45.99 gyp ERR! configure error #9 45.99 gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable. #9 45.99 gyp ERR! stack at PythonFinder.failNoPython (/app/node_modules/node-gyp/lib/configure.js:484:19) #9 45.99 gyp ERR! stack at PythonFinder. (/app/node_modules/node-gyp/lib/configure.js:406:16) #9 45.99 gyp ERR! stack at F (/app/node_modules/which/which.js:68:16) #9 45.99 gyp ERR! stack at E (/app/node_modules/which/which.js:80:29) #9 45.99 gyp ERR! stack at /app/node_modules/which/which.js:89:16 #9 45.99 gyp ERR! stack at /app/node_modules/isexe/index.js:42:5 #9 45.99 gyp ERR! stack at /app/node_modules/isexe/mode.js:8:5 #9 45.99 gyp ERR! stack at FSReqCallback.oncomplete (fs.js:183:21) #9 45.99 gyp ERR! System Linux 4.19.128-microsoft-standard #9 45.99 gyp ERR! command "/usr/local/bin/node" "/app/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_ library=" #9 45.99 gyp ERR! cwd /app/node_modules/node-sass #9 45.99 gyp ERR! node -v v14.16.0 #9 46.00 gyp ERR! node-gyp -v v3.8.0 #9 46.00 gyp ERR! not ok #9 46.00 Build failed with error code: 1 #9 46.01 npm ERR! code ELIFECYCLE #9 46.01 npm ERR! errno 1 #9 46.02 npm ERR! [email protected] postinstall: node scripts/build.js #9 46.02 npm ERR! Exit status 1 #9 46.02 npm ERR! #9 46.02 npm ERR! Failed at the [email protected] postinstall script. #9 46.03 npm ERR! This is probably not a problem with npm. There is likely additional logging output above. #9 46.11 #9 46.11 npm ERR! A complete log of this run can be found in: #9 46.11 npm ERR! /root/.npm/_logs/2021-04-02T05_52_24_775Z-debug.log


    executor failed running [/bin/sh -c npm ci]: exit code: 1

    To Reproduce Follow the installation instructions in the readme.

    1. docker build -t front .
    2. docker run -p 8080:8080 front

    Expected behavior For it to start the frontend as https://github.com/olivia-ai/olivia-ai.org.

    Desktop (please complete the following information):

    • Goland IDE Tool

    Additional context Console print below. ➜ docker build -t front . [+] Building 101.7s (9/11) => [internal] load build definition from Dockerfile 0.1s => => transferring dockerfile: 261B 0.0s => [internal] load .dockerignore 0.1s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/node:lts-alpine 3.2s => [1/7] FROM docker.io/library/node:lts-alpine@sha256:0a6a21d28509f56155007444075ef4fdd36eef0a97924623cb641d3766e3b8d3 0.0s => => resolve docker.io/library/node:lts-alpine@sha256:0a6a21d28509f56155007444075ef4fdd36eef0a97924623cb641d3766e3b8d3 0.0s => [internal] load build context 50.0s => => transferring context: 263.34MB 49.7s => CACHED [2/7] RUN npm install -g http-server 0.0s => CACHED [3/7] WORKDIR /app 0.0s => CACHED [4/7] COPY package*.json ./ 0.0s => ERROR [5/7] RUN npm ci 48.1s

    [5/7] RUN npm ci: #9 43.12 #9 43.12 > [email protected] install /app/node_modules/fsevents #9 43.12 > node install #9 43.12 #9 43.57 #9 43.57 > [email protected] postinstall /app/node_modules/core-js #9 43.57 > node scripts/postinstall || echo "ignore" #9 43.57 #9 43.63 Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library! #9 43.63 #9 43.63 The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: #9 43.63 > https://opencollective.com/core-js #9 43.63 > https://www.patreon.com/zloirock #9 43.63 #9 43.63 Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -) #9 43.63 #9 44.13 #9 44.13 > [email protected] install /app/node_modules/node-sass #9 44.13 > node scripts/install.js #9 44.13 #9 45.08 Downloading binary from https://github.com/sass/node-sass/releases/download/v4.13.1/linux_musl-x64-83_binding.node #9 45.70 Cannot download "https://github.com/sass/node-sass/releases/download/v4.13.1/linux_musl-x64-83_binding.node": #9 45.70 #9 45.70 HTTP error 404 Not Found #9 45.70 #9 45.70 Hint: If github.com is not accessible in your location #9 45.70 try setting a proxy via HTTP_PROXY, e.g. #9 45.70 #9 45.70 export HTTP_PROXY=http://example.com:1234 #9 45.70 #9 45.70 or configure npm proxy via #9 45.70 #9 45.70 npm config set proxy http://example.com:8080 #9 45.71 #9 45.71 > [email protected] postinstall /app/node_modules/node-sass #9 45.71 > node scripts/build.js #9 45.71 #9 45.82 Building: /usr/local/bin/node /app/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library= #9 45.93 gyp info it worked if it ends with ok #9 45.93 gyp verb cli [ #9 45.93 gyp verb cli '/usr/local/bin/node', #9 45.93 gyp verb cli '/app/node_modules/node-gyp/bin/node-gyp.js', #9 45.93 gyp verb cli 'rebuild', #9 45.93 gyp verb cli '--verbose', #9 45.93 gyp verb cli '--libsass_ext=', #9 45.93 gyp verb cli '--libsass_cflags=', #9 45.94 gyp verb cli '--libsass_ldflags=', #9 45.94 gyp verb cli '--libsass_library=' #9 45.94 gyp verb cli ] #9 45.94 gyp info using [email protected] #9 45.94 gyp info using [email protected] | linux | x64 #9 45.94 gyp verb command rebuild [] #9 45.94 gyp verb command clean [] #9 45.95 gyp verb clean removing "build" directory #9 45.96 gyp verb command configure [] #9 45.97 gyp verb check python checking for Python executable "python2" in the PATH #9 45.98 gyp verb which failed Error: not found: python2 #9 45.98 gyp verb which failed at getNotFoundError (/app/node_modules/which/which.js:13:12) #9 45.98 gyp verb which failed at F (/app/node_modules/which/which.js:68:19) #9 45.98 gyp verb which failed at E (/app/node_modules/which/which.js:80:29) #9 45.98 gyp verb which failed at /app/node_modules/which/which.js:89:16 #9 45.98 gyp verb which failed at /app/node_modules/isexe/index.js:42:5 #9 45.98 gyp verb which failed at /app/node_modules/isexe/mode.js:8:5 #9 45.98 gyp verb which failed at FSReqCallback.oncomplete (fs.js:183:21) #9 45.98 gyp verb which failed python2 Error: not found: python2 #9 45.98 gyp verb which failed at getNotFoundError (/app/node_modules/which/which.js:13:12) #9 45.98 gyp verb which failed at F (/app/node_modules/which/which.js:68:19) #9 45.98 gyp verb which failed at E (/app/node_modules/which/which.js:80:29) #9 45.98 gyp verb which failed at /app/node_modules/which/which.js:89:16 #9 45.98 gyp verb which failed at /app/node_modules/isexe/index.js:42:5 #9 45.98 gyp verb which failed at /app/node_modules/isexe/mode.js:8:5 #9 45.98 gyp verb which failed at FSReqCallback.oncomplete (fs.js:183:21) { #9 45.98 gyp verb which failed code: 'ENOENT' #9 45.98 gyp verb which failed } #9 45.98 gyp verb check python checking for Python executable "python" in the PATH #9 45.98 gyp verb which failed Error: not found: python #9 45.98 gyp verb which failed at getNotFoundError (/app/node_modules/which/which.js:13:12) #9 45.98 gyp verb which failed at F (/app/node_modules/which/which.js:68:19) #9 45.99 gyp verb which failed at E (/app/node_modules/which/which.js:80:29) #9 45.99 gyp verb which failed at /app/node_modules/which/which.js:89:16 #9 45.99 gyp verb which failed at /app/node_modules/isexe/index.js:42:5 #9 45.99 gyp verb which failed at /app/node_modules/isexe/mode.js:8:5 #9 45.99 gyp verb which failed at FSReqCallback.oncomplete (fs.js:183:21) #9 45.99 gyp verb which failed python Error: not found: python #9 45.99 gyp verb which failed at getNotFoundError (/app/node_modules/which/which.js:13:12) #9 45.99 gyp verb which failed at F (/app/node_modules/which/which.js:68:19) #9 45.99 gyp verb which failed at E (/app/node_modules/which/which.js:80:29) #9 45.99 gyp verb which failed at /app/node_modules/which/which.js:89:16 #9 45.99 gyp verb which failed at /app/node_modules/isexe/index.js:42:5 #9 45.99 gyp verb which failed at /app/node_modules/isexe/mode.js:8:5 #9 45.99 gyp verb which failed at FSReqCallback.oncomplete (fs.js:183:21) { #9 45.99 gyp verb which failed code: 'ENOENT' #9 45.99 gyp verb which failed } #9 45.99 gyp ERR! configure error #9 45.99 gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable. #9 45.99 gyp ERR! stack at PythonFinder.failNoPython (/app/node_modules/node-gyp/lib/configure.js:484:19) #9 45.99 gyp ERR! stack at PythonFinder. (/app/node_modules/node-gyp/lib/configure.js:406:16) #9 45.99 gyp ERR! stack at F (/app/node_modules/which/which.js:68:16) #9 45.99 gyp ERR! stack at E (/app/node_modules/which/which.js:80:29) #9 45.99 gyp ERR! stack at /app/node_modules/which/which.js:89:16 #9 45.99 gyp ERR! stack at /app/node_modules/isexe/index.js:42:5 #9 45.99 gyp ERR! stack at /app/node_modules/isexe/mode.js:8:5 #9 45.99 gyp ERR! stack at FSReqCallback.oncomplete (fs.js:183:21) #9 45.99 gyp ERR! System Linux 4.19.128-microsoft-standard #9 45.99 gyp ERR! command "/usr/local/bin/node" "/app/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_ library=" #9 45.99 gyp ERR! cwd /app/node_modules/node-sass #9 45.99 gyp ERR! node -v v14.16.0 #9 46.00 gyp ERR! node-gyp -v v3.8.0 #9 46.00 gyp ERR! not ok #9 46.00 Build failed with error code: 1 #9 46.01 npm ERR! code ELIFECYCLE #9 46.01 npm ERR! errno 1 #9 46.02 npm ERR! [email protected] postinstall: node scripts/build.js #9 46.02 npm ERR! Exit status 1 #9 46.02 npm ERR! #9 46.02 npm ERR! Failed at the [email protected] postinstall script. #9 46.03 npm ERR! This is probably not a problem with npm. There is likely additional logging output above. #9 46.11 #9 46.11 npm ERR! A complete log of this run can be found in: #9 46.11 npm ERR! /root/.npm/_logs/2021-04-02T05_52_24_775Z-debug.log


    executor failed running [/bin/sh -c npm ci]: exit code: 1

    Thank you.

  • Implementation in a Telegram bot

    Implementation in a Telegram bot

    Hi guys,

    Hope you are all well !

    I was looking for some implementation of AI chatbot golang and found your project olivia.

    And, I am developing a multibot for telegram based on go plugins: https://github.com/paper2code/telegram-multibot

    So I was wondering how can I integrate olivia as a plugin.

    Do you have any insights or advices for such integration ?

    Thanks in advance.

    Cheers, X

  • After docker-compose up the localhost/chat not work

    After docker-compose up the localhost/chat not work

    Describe the bug A clear and concise description of what the bug is.

    To Reproduce Steps to reproduce the behavior:

    1. On master branch, run 'docker-compose up'
    2. The front is accessible on URL HTTP://localhost:80'
    3. I click on the chat button and \loading icon` still turn
    4. If I refresh the page, I have a 404 not found

    Expected behavior The chat is available

    Desktop (please complete the following information):

    • OS: Ubuntu
    • Browser chrome
  • doesn't remember my name 🤷‍♂️

    doesn't remember my name 🤷‍♂️

    If i go to https://olivia-ai.org/chat and say something like: my name is Avi and then ask it: what is my name? it replies "I'm Olivia"

    even really old bots like ALICE get this simple thing right, https://pandorabots.com/pandora/talk?botid=b8d616e35e36e881

    Is a fix possible?

  • Issue with pulling docker images and building from source

    Issue with pulling docker images and building from source

    I can't seem to be able to build the project both with the docker nor the git way

    Describe the bug

    • Docker method

    Whenever I type the command docker pull docker.pkg.github.com/olivia-ai/olivia/olivia:latest I get Error response from daemon: Get https://docker.pkg.github.com/v2/olivia-ai/olivia/olivia/manifests/latest: no basic auth credentials

    • GitHub Method

    If I clone the repo as mentioned in the README, install the go dependencies, the run it and navigate to localhost:8080 I get a 404 page not found error.

    P.S using docker-compose up results to the same error as the one in the Docker method

    To Reproduce Steps to reproduce the behavior:

    1. Follow Docker installation instructions
    2. Follow GitHub installation instructions
    3. Poof

    Expected behavior An expected behavior would be to either build the project successfully using docker and/or with executing the bootstrap main.go file

    Desktop (please complete the following information):

    • OS: Linux Mint, MacOS, Ubuntu Server
    • Browser: Chrome
    • Version 83.0.4103.106 (Official Build) (64-bit)

    Additional Context

    By the way what do I need the authentication token for and how am I supposed to use it? Does it somehow has to do with the aforementioned no basic auth credentials ?

  • Installation/setup issues

    Installation/setup issues

    Hi! Would really appreciate some help with setting up the project. I have got it running on my machine with docker, but I just get a 404 on localhost:8080

    Describe the bug I get a 404 Page not found error starting Olivia with the yml file using docker-compose up

    image

    To Reproduce Follow the installation instructions in the readme

    Expected behavior For it to start the frontend. It seems it starts but gives a 404. Not sure how to fix.

    Desktop (please complete the following information):

    • OS: Mac High Sierra 10.13.6
    • Browser: Brave, Chrome, Safari
    • Version: 3

    Additional context Console print below. It mentions a warning about VUE_APP_URL, however I haven't been able to reproduce it again. Might have something to do with it..

    ➜  docker-compose up
    Creating network "olivia_default" with the default driver
    Building olivia-ai.org
    Step 1/10 : FROM golang:latest
    latest: Pulling from library/golang
    376057ac6fa1: Already exists
    5a63a0a859d8: Already exists
    496548a8c952: Already exists
    2adae3950d4d: Already exists
    039b991354af: Already exists
    6b823afb12d9: Already exists
    30b9d62bd869: Already exists
    Digest: sha256:4d58164df51901679307e547ffed19837e63a1d1b9ed80453b8d88749b6033f4
    Status: Downloaded newer image for golang:latest
     ---> 05feda542433
    Step 2/10 : LABEL maintainer="Hugo Lageneste <[email protected]>"
     ---> Running in 2e2ee458d257
    Removing intermediate container 2e2ee458d257
     ---> f453eb20bc61
    Step 3/10 : WORKDIR /app
     ---> Running in 4038ef62e966
    Removing intermediate container 4038ef62e966
     ---> db2b5a8b7e8e
    Step 4/10 : COPY go.mod go.sum ./
     ---> 46da89293ac4
    Step 5/10 : RUN go mod download
     ---> Running in 79996758c044
    Removing intermediate container 79996758c044
     ---> 3b978032a205
    Step 6/10 : COPY . .
     ---> c84e79163408
    Step 7/10 : RUN go test
     ---> Running in c1e6c7d0f115
    ?   	github.com/olivia-ai/olivia	[no test files]
    Removing intermediate container c1e6c7d0f115
     ---> 48ca46a5915c
    Step 8/10 : RUN go build -o main .
     ---> Running in 0ce9a4d78ed8
    Removing intermediate container 0ce9a4d78ed8
     ---> 76445f475d26
    Step 9/10 : EXPOSE $PORT
     ---> Running in 52a368becb2c
    Removing intermediate container 52a368becb2c
     ---> 46d43046d8ae
    Step 10/10 : CMD ["./main", "-port=$PORT"]
     ---> Running in 56630341e00f
    Removing intermediate container 56630341e00f
     ---> fe6e19a1d981
    [Warning] One or more build-args [VUE_APP_URL] were not consumed
    Successfully built fe6e19a1d981
    Successfully tagged docker.pkg.github.com/olivia-ai/olivia-ai.org/olivia-ai.org:latest
    WARNING: Image for service olivia-ai.org was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
    Creating olivia_olivia_1        ... done
    Creating olivia_olivia-ai.org_1 ... done
    Attaching to olivia_olivia_1, olivia_olivia-ai.org_1
    olivia_1         |        _ _       _
    olivia_1         |   ___ | (_)_   _(_) __ _
    olivia_1         |  / _ \| | \ \ / / |/ _` |
    olivia_1         | | (_) | | |\ V /| | (_| |
    olivia_1         |  \___/|_|_| \_/ |_|\__,_|
    olivia_1         |
    olivia_1         | hey
    olivia_1         | Your authentication token is: 29568e57b2cf0fa02478ac22e93de87a783744d2b3ab0b54a6d3db62cbf7
    olivia_1         | Save it, you won't be able to get it again unless you generate a new one.
    olivia_1         |
    olivia-ai.org_1  |        _ _       _
    olivia-ai.org_1  |   ___ | (_)_   _(_) __ _
    olivia-ai.org_1  |  / _ \| | \ \ / / |/ _` |
    olivia-ai.org_1  | | (_) | | |\ V /| | (_| |
    olivia-ai.org_1  |  \___/|_|_| \_/ |_|\__,_|
    olivia-ai.org_1  |
    olivia-ai.org_1  | Loading the neural network from res/locales/en/training.json
    olivia-ai.org_1  | Loading the neural network from res/locales/de/training.json
    olivia-ai.org_1  | Loading the neural network from res/locales/fr/training.json
    olivia-ai.org_1  | Loading the neural network from res/locales/es/training.json
    olivia-ai.org_1  | Loading the neural network from res/locales/ca/training.json
    olivia-ai.org_1  | Loading the neural network from res/locales/it/training.json
    olivia-ai.org_1  | Loading the neural network from res/locales/tr/training.json
    29568e57b2cf0fa02478ac22e93de87a783744d2b3ab0b54a6d3db62cbf7
    olivia-ai.org_1  | Loading the neural network from res/locales/nl/training.json
    olivia-ai.org_1  |
    olivia-ai.org_1  | Server listening on the port 80...
    olivia_1         | Loading the neural network from res/locales/en/training.json
    olivia_1         | Loading the neural network from res/locales/de/training.json
    olivia_1         | Loading the neural network from res/locales/fr/training.json
    olivia_1         | Loading the neural network from res/locales/es/training.json
    olivia_1         | Loading the neural network from res/locales/ca/training.json
    olivia_1         | Loading the neural network from res/locales/it/training.json
    olivia_1         | Loading the neural network from res/locales/tr/training.json
    olivia_1         | Loading the neural network from res/locales/nl/training.json
    olivia_1         |
    olivia_1         | Server listening on the port 8080...
    
  • modules: created a jokes module, fixes #80

    modules: created a jokes module, fixes #80

    I have created a jokes module to fetch a random joke from https://official-joke-api.appspot.com/random_joke.

    This can be used by asking something line tell me a joke or make me laugh.

    Currently the url is set as a constant in the module (jokes.go) itself. Probably adding it as an env would be the best idea but I couldn't find a way with the given project structure. I need advice here.

  • doc: how to run on docker

    doc: how to run on docker

    I am new to Docker and trying to run this awesome project on it.

    So I have pulled the image from GitHub Packages: $ docker pull docker.pkg.github.com/olivia-ai/olivia/olivia:latest

    Then start it $ docker run -d -p 8080:8080 docker.pkg.github.com/olivia-ai/olivia/olivia:latest

    But when I try to run $ docker container ls

    I didn't see anything there and not sure how to use the command: $ docker-compose up

  • does not return the correct response

    does not return the correct response

    First specify on which part this is related in the title with: core/language/modules...: title

    Describe the bug I used the following intent files and get mostly random response. I was wondering why?

    [
     {
      "tag": "devop_orchestration",
      "patterns": [
       "What is orchestration"
      ],
      "responses": [
       "Orchestration refers to the integration of multiple services that allows them to automate processes or synchronize information in a timely fashion. Say, for example, you have six or seven microservices for an application to run. If you place them in separate containers, this would inevitably create obstacles for communication. Orchestration would help in such a situation by enabling all services in individual containers to work seamlessly to accomplish a single goal."
      ],
      "context": ""
     },
     {
      "tag": "docker_kubernetes",
      "patterns": [
       "Compare docker to kubernetes",
       "How are Kubernetes and Docker related",
       "What is Kubernetes and Docker"
      ],
      "responses": [
       "Docker is an open-source platform used to handle software development. Its main benefit is that it packages the settings and dependencies that the software/application needs to run into a container, which allows for portability and several other advantages. Kubernetes allows for the manual linking and orchestration of several containers, running on multiple hosts that have been created using Docker."
      ],
      "context": ""
     },
     {
      "tag": "deploy_host_containers",
      "patterns": [
       "What is deploy on host or containers",
       "What is the difference between deploying on host vs containers"
      ],
      "responses": [
       "Deploying Applications consist of an architecture that has an operating system. The operating system will have a kernel that holds various libraries installed on the operating system needed for an application.\nWhereas container host refers to the system that runs the containerized processes. This kind is isolated from the other applications; therefore, the applications must have the necessary libraries. The binaries are separated from the rest of the system and cannot infringe any other application."
      ],
      "context": ""
     },
     {
      "tag": "kube_features",
      "patterns": [
       "what are the features of kubernetes"
      ],
      "responses": [
       "- Kubernetes places control for the user where the server will host the container. It will control how to launch. So, Kubernetes automates various manual processes.\n- Kubernetes manages various clusters at the same time.\n- It provides various additional services like management of containers, security, networking, and storage.\n- Kubernetes self-monitors the health of nodes and containers.\n- With Kubernetes, users can scale resources not only vertically but also horizontally that too easily and quickly."
      ],
      "context": ""
     },
     {
      "tag": "kube_master_node",
      "patterns": [
       "explain the working of a master node",
       "what is a kubernetes master node",
       "what is a master node"
      ],
      "responses": [
       "The master node dignifies the node that controls and manages the set of worker nodes. This kind resembles a cluster in Kubernetes. The nodes are responsible for the cluster management and the API used to configure and manage the resources within the collection. The master nodes of Kubernetes can run with Kubernetes itself, the asset of dedicated pods."
      ],
      "context": ""
     },
     {
      "tag": "kube_api_server",
      "patterns": [
       "what is the kube-api",
       "what is the kube-apiserver",
       "what is the role of the kube api server"
      ],
      "responses": [
       "This kind validates and provides configuration data for the API objects. It includes pods, services, replication controllers. Also, it provides REST operations and also the frontend of the cluster. This frontend cluster state is shared through which all other component interacts."
      ],
      "context": ""
     },
     {
      "tag": "kube_node_status",
      "patterns": [
       "what is the node status",
       "what does the node status contain"
      ],
      "responses": [
       "The main components of a node status are Address, Condition, Capacity, and Info."
      ],
      "context": ""
     },
     {
      "tag": "kube_pod",
      "patterns": [
       "what is a kubernetes pod",
       "what is a pod"
      ],
      "responses": [
       "Pods are high-level structures that wrap one or more containers. This is because containers are not run directly in Kubernetes. Containers in the same pod share a local network and the same resources, allowing them to easily communicate with other containers in the same pod as if they were on the same machine while at the same time maintaining a degree of isolation."
      ],
      "context": ""
     },
     {
      "tag": "kube_scheduler",
      "patterns": [
       "what is the job of the kube scheduler",
       "what does the kube schedule do",
       "what does the kubernetes schedule do"
      ],
      "responses": [
       "The kube-scheduler assigns nodes to newly created pods."
      ],
      "context": ""
     },
     {
      "tag": "kube_daemonset",
      "patterns": [
       "what is a daemonset"
      ],
      "responses": [
       "A Daemon set is a set of pods that runs only once on a host. They are used for host layer attributes like a network or for monitoring a network, which you may not need to run on a host more than once."
      ],
      "context": ""
     },
     {
      "tag": "minikube",
      "patterns": [
       "what is minikube"
      ],
      "responses": [
       "With the help of Minikube, users can Kubernetes locally. This process lets the user run a single-node Kubernetes cluster on your personal computer, including Windows, macOS, and Linus PCs. With this, users can try out Kubernetes also for daily development work."
      ],
      "context": ""
     },
     {
      "tag": "kube_namespace",
      "patterns": [
       "what is a namespace",
       "why use namespace",
       "what is a kubernetes namespace"
      ],
      "responses": [
       "Namespaces are used for dividing cluster resources between multiple users. They are meant for environments where there are many users spread across projects or teams and provide a scope of resources."
      ],
      "context": ""
     },
     {
      "tag": "kube_initial_namespaces",
      "patterns": [
       "what are the initial namespaces",
       "what ar the first namespaces",
       "what are the initial kubernetes namespaces"
      ],
      "responses": [
       "- default\n- kube-system"
      ],
      "context": ""
     },
     {
      "tag": "kube_etcd",
      "patterns": [
       "what is kube etcd",
       "what is kubernetes etcd",
       "what is etcd"
      ],
      "responses": [
       "Kubernetes uses etcd as a distributed key-value store for all of its data, including metadata and configuration data, and allows nodes in Kubernetes clusters to read and write data. Although etcd was purposely built for CoreOS, it also works on a variety of operating systems (e.g., Linux, BSB, and OS X) because it is open-source. Etcd represents the state of a cluster at a specific moment in time and is a canonical hub for state management and cluster coordination of a Kubernetes cluster."
      ],
      "context": ""
     },
     {
      "tag": "kube_clusterip",
      "patterns": [
       "what is clusterip",
       "what is a clusterIP service"
      ],
      "responses": [
       "The ClusterIP is the default Kubernetes service that provides a service inside a cluster (with no external access) that other apps inside your cluster can access."
      ],
      "context": ""
     },
     {
      "tag": "kube_nodeport",
      "patterns": [
       "what is a nodeport",
       "what is a nodeport service"
      ],
      "responses": [
       "The NodePort service is the most fundamental way to get external traffic directly to your service. It opens a specific port on all Nodes and forwards any traffic sent to this port to the service."
      ],
      "context": ""
     },
     {
      "tag": "kube_ingress",
      "patterns": [
       "what is a ingress",
       "what is an ingress network"
      ],
      "responses": [
       "An ingress is an object that allows users to access your Kubernetes services from outside the Kubernetes cluster. Users can configure the access by creating rules that define which inbound connections reach which services.\nHow does it work- This is an API object that provides the routing rules to manage the external users' access to the services in the Kubernetes cluster through HTTPS/ HTTP. With this, users can easily set up the rules for routing traffic without creating a bunch of load balancers or exposing each service to the nodes."
      ],
      "context": ""
     },
     {
      "tag": "kube_headless",
      "patterns": [
       "what is a headless service"
      ],
      "responses": [
       "A headless service is used to interface with service discovery mechanisms without being tied to a ClusterIP, therefore allowing you to directly reach pods without having to access them through a proxy. It is useful when neither load balancing nor a single Service IP is required."
      ],
      "context": ""
     },
     {
      "tag": "kube_kubelet",
      "patterns": [
       "what is a kubelet"
      ],
      "responses": [
       "The kubelet is a service agent that controls and maintains a set of pods by watching for pod specs through the Kubernetes API server. It preserves the pod lifecycle by ensuring that a given set of containers are all running as they should. The kubelet runs on each node and enables the communication between the master and slave nodes."
      ],
      "context": ""
     },
     {
      "tag": "kube_kubectl",
      "patterns": [
       "what is kubectl"
      ],
      "responses": [
       "kubectl is a CLI (command-line interface) that is used to run commands against Kubernetes clusters. As such, it controls the Kubernetes cluster manager through different create and manage commands on the Kubernetes component.  More info at \u003ca target=_win href=\"https://kubernetes.io/docs/reference/kubectl/docker-cli-to-kubectl\"\u003e[ kubectl ]\u003c/a\u003e"
      ],
      "context": ""
     },
     {
      "tag": "kubernetes_features",
      "patterns": [
       "what are the features of kubernetes",
       "what are some kubernetes features"
      ],
      "responses": [
       "- Automated Scheduling\n- Self-Healing Capabilities\n- Automated rollouts \u0026 rollback\n- Horizontal Scaling \u0026 Load Balancing\n- Offers environment consistency for development, testing, and production\n- Infrastructure is loosely coupled to each component can act as a separate unit\n- Provides a higher density of resource utilization\n- Offers enterprise-ready features\n- Application-centric management\n- Auto-scalable infrastructure\n- You can create predictable infrastructure"
      ],
      "context": ""
     },
     {
      "tag": "kube_kubectl_list",
      "patterns": [
       "list important kubectl commands",
       "list kubectl commands"
      ],
      "responses": [
       "- kubectl annotate\n- kubectl cluster-info\n- kubectl attach\n- kubectl apply\n- kubectl config\n- kubectl autoscale\n- kubectl config current-context\n- kubectl config set."
      ],
      "context": ""
     },
     {
      "tag": "kubernetes",
      "patterns": [
       "What is Kubernetes"
      ],
      "responses": [
       "Kubernetes is an open-source container orchestration tool or system that is used to automate tasks such as the management, monitoring, scaling, and deployment of containerized applications."
      ],
      "context": ""
     },
     
     {
      "tag": "zones",
      "patterns": [
       "What are zones",
       "What are colored zones"
      ],
      "responses": [
       "There are four different security zones. In order of least secure to most secure: Blue, Origin, Green, and Black."
      ],
      "context": ""
     }
    ]
    

    To Reproduce Steps to reproduce the behavior:

    1. copy this text ^ in res/locales/en/intents.json
    2. go run . --re-train en

    Expected behavior I was expecting that at least exact question like 'what is kubectl' would work since it's a perfect match.

  • Add Chinese support

    Add Chinese support

    Because the original language/Chinese branch is too old, I changed it on the v3 branch.

    Among them, the music module is not localized in Chinese, because I feel that it needs to spend a lot of time to support the Chinese music platform (as we all know that China has a CFW firewall, which may not be able to access foreign music platforms, and the user experience is not good). I intend to make it support Netease Cloud music, Kuwo music, QQ music, Himalayan FM, etc; But it will take a long time. It is a long-term plan; And more people are needed to help.

    Compared with this, the music module is irrelevant; Now, the recognition accuracy of neural network for Chinese is very poor, and I have tried my best; But I can't fix it; I don't know enough about neural networks.

    I added a word segmentation library GSE (a stutter segmentation library of Go), which is only used for Chinese; No impact on other languages

    I modified some files according to the document. I tried my best. I can't find the reason

    However, it does support Chinese, which is good news. I hope more people will participate in optimizing the neural network

    In fact, it was already done yesterday. I was thinking about how to optimize it. Until today, there was no progress; It will identify errors with high probability, and the returned answer is not what you want. So, give it to the community; Some people can't wait to see that it supports Chinese, and they will participate in optimizing these

  • [Feature Request]: Add Coqui STT for offline Speech-to-Text

    [Feature Request]: Add Coqui STT for offline Speech-to-Text

    Hi there 👋

    Olivia is a great project, very cool design:) I'm not sure if the repo is still maintained, but in any case it would be great to add the offline Speech-to-Text options from @coqui-ai... Olivia is multilingual, and so is Coqui, and there are Golang bindings to make the integration easier:) There's also TTS from Coqui (without Golang bindings atm) which is very high fidelity and also offline.

    https://github.com/coqui-ai/stt

  • Sentence.stem() function: I think it's the

    Sentence.stem() function: I think it's the "GetNameByTag" and not the "GetTagByName"

    • Name your PR with the thing you worked on, example: "modules: creating ...".
    • Explain correctly what you worked on and why.
    • If you fixes an issue with your PR please note fixes #ID on your PR.
  • Docker compose startup problems

    Docker compose startup problems

    ERROR: Docker compose

    Error response from daemon: Head https://docker.pkg.github.com/v2/olivia-ai/olivia/olivia/manifests/latest: no basic auth credentials

    Describe the bug On a fresh install of Ubuntu 20.04 with Docker and Docker-Compose installed I get a "no basic autho credentials" Error

    To Reproduce go into olivia directory docker-compose up

    Desktop (please complete the following information):

    • OS: Ubuntu 20.04 (AMD)

    Any solution to this error would be appreciated as I also tried it with a direct docker pull and get the same error.

Check for new github releases of your Golang application 🎊

whatsnew Check for new github releases of your Golang application ?? whatsnew provides a simple way to check GitHub for new releases of your Go applic

Dec 1, 2021
A bot that greets new members on telegram groups with a cute, personalised gif.
A bot that greets new members on telegram groups with a cute, personalised gif.

Telegram-senko-bot About The Bot This bot greets new members on telegram groups with a cute, personalised gif with Senko-san. In case you're wondering

Nov 5, 2022
CultureBot - A slack bot used to act as a companion to new people in tech

Culture Bot A slack bot used to act as a companion to new people in tech. Helps

Feb 6, 2022
A cowin bot that gives you an update whenever it finds a vacancy in your region

go-cowin-bot A cowin bot that will give you an update on discord whenever it finds a vacancy for the parameters provided Setup: download go-cowin-bot

Mar 29, 2022
send current weather updates from openweathermap api to your slack profile status using github action
send current weather updates from openweathermap api to your slack profile status using github action

go-slack-weather Send current weather updates from OpenWeatherMap API to your Slack profile status using GitHub Action Contents Setup Change Update Pe

Oct 31, 2022
This bot keeps information about your crypto wallet.

Telegram bot @crypto_wallet_gobot This bot writes to database information about your cryptocurrencies. Functions: add currency(example: btc) amount(ex

Jan 12, 2022
Discord bot to check the metas of your OnChainMonkey

ocm-meta-discord-bot Unofficial Discord bot to check the metas of your OnChainMonkey. Permissions Requires the following permissions to work on Discor

Nov 20, 2021
Domo is a Discord bot to help you manage your FOMO (fear of missing out).

domo domo is a Discord bot to help you manage your FOMO (fear of missing out). Development Download and install Go: Instructions To run the bot first

Jan 4, 2022
A telegram bot to help remember tips about cards in your hand while playing Hanabi
A telegram bot to help remember tips about cards in your hand while playing Hanabi

?? Hanabi Assistant Bot ?? Hanabi Assistant is a telegram bot to help remember tips about cards in your hand while playing Hanabi. Before Run: Generat

Oct 12, 2021
Telegram bot check your TrainingPeaks profile workouts and send notification if some workouts added or changed

TrainingPeaks Bot Telegram bot check your TrainingPeaks profile workouts and sen

Dec 29, 2021
Dlercloud-telegram-bot - A Telegram bot for managing your Dler Cloud account

Dler Cloud Telegram Bot A Telegram bot for managing your Dler Cloud account. Usa

Dec 30, 2021
RaspChecker - A Telegram bot that allows you to monitor your Raspberry Pi's temperature and shut it down. Written in Golang.

RaspChecker Remotely monitor your Raspberry Pi's temperature and shut it down if you want. All through Telegram. How to set up In order to run the bot

Jan 2, 2022
Discord-notif - Send notifications to discord in Your pipelines or scripts
Discord-notif - Send notifications to discord in Your pipelines or scripts

discord-notif Send notifications to discord in Your pipelines or scripts install

Dec 15, 2022
RaunchBot brings you the latest Raunchy content straight to your favorite Discord server.

RaunchBot RaunchBot brings you the latest Raunchy content straight to your favorite Discord server. Development: Compile and run the project. TOKEN=ab

Jan 22, 2022
RaunchBot brings you the latest Raunchy content straight to your favorite Discord server.

RedditBot RedditBot brings you the latest Raunchy content straight to your favorite Discord server. Get RedditBot in your discord here. Bot Commands:

Jan 22, 2022
Show when you're out and about on a Boosted board on your Discord RPC

boosted-rpc Show when you're out an about on a Boosted board on your Discord RPC I use this with the Ride app for iOS and the IFTTT integration. Effec

Jul 24, 2022
Slack-emoji-bot - This Slack bot will post the newly created custom Slack emojis to the channel of your choice

Slack Emoji Bot This Slack bot will post the newly created custom Slack emojis t

Oct 21, 2022
This is a program that auctions minecraft names, its self hostable and can be used via your server.

Auction-Bot This is a discord bot made in go, its a wip and will be updated over time. This bot atm can create channels in your discord for users to p

Feb 13, 2022
The real 0xSniper. Open your nitro sniping service easy just need to patch the code.

# ss-sniper Hi my homies, Here was the ss-sniper, the "best" nitro sniper. Average delay -> 100~120ms. The sniper include invite checker (minimal o

Nov 1, 2022