• Stars
    star
    295
  • Rank 140,902 (Top 3 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created almost 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Genie As A Service and Thingpedia

Genie for Cloud Environments

Build Status Coverage Status Dependency Status Language grade: JavaScript Discord Discourse status

This repository is the cloud-native version of Genie, the open virtual-assistant. It includes the web frontend, the Genie backend, the embedded skill library, and the NLP model servers.

Genie is a research project led by prof. Monica Lam, from Stanford University. You can find more information at https://oval.cs.stanford.edu.

Development

  1. You need Git.

    Mac:

    1. Install Homebrew

    2. Install Git:

      brew install git
      
  2. Clone this repository.

    You can clone it wherever you want, but if you don't know where to put it I recommend:

    mkdir -p "${HOME}/src/github.com/stanford-oval" && cd "${HOME}/src/github.com/stanford-oval"
    

    to create a directory and change into it.

    Then

    git clone --branch wip/nrser/k8s-dev-setup https://github.com/stanford-oval/almond-cloud.git
    

    and change into the cloned repository with

    cd almond-cloud
    
  3. You need Kubernetes running locally. For Windows and Mac we recommend Docker Desktop. After installation, follow the instructions to enabled Kubernetes.

    On Linux, there are (of course) several options. Minikube, MicroK8s and Kind are the ones I've heard of. These instructions will follow a Docker Desktop installation, so adjust as needed.

  4. Build the Almond Cloud Docker image

    docker build -f docker/Dockerfile -t localhost/almond-cloud .
    
  5. Install the latest kustomize.

    Mac:

    brew install kustomize
    

    Windows and Linux: Follow their installation instructions.

    If you're on the Mac, I recommend the Homebrew option.

    NOTE

    Kustomize does come bundled with the kubectl utility that Kubernetes installations ship with, but some or all will be too out-of-date for our needs.

  6. Deploy the Kubernetes Dashboard

    kustomize build k8s/dashboard/dev | kubectl apply -f -
    

    In a separate terminal, run

    kubectl proxy
    

    and keep that terminal open.

    Visit

    http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

    and use the Skip button to login and view the dashboard (there shouldn't be much there yet!).

  7. Deploy the Nginx Ingress Controller

    kustomize build k8s/ingress-nginx/dev | kubectl apply -f -
    
  8. Create a Mailgun account (if you don't already have one) and get the SMTP username and password for the domain you want to use to send emails.

    If you use the "sandbox" domain, make sure you add your email address to the Authorized Recipients and click the confirmation link they mail to you.

  9. Create a local dev environment file

    1. Create a text file in the dev directory named .env

    2. Add these lines to the file, replacing the stuff between the ' quotes with the SMTP credentials from the last step and your email address.

      MAILGUN_SMTP_USERNAME='[email protected]'
      MAILGUN_SMTP_PASSWORD='your-smtp-password'
      DEVELOPER_EMAIL='[email protected]'
      
    3. Save the file.

  10. Generate your kustomize secret file

    ./dev/bin/almond-dev.configure.bash
    

    The secret file is written to k8s/config/dev/secret.yaml.

  11. Check your config files build successfully with kustomize

    kustomize build ./k8s/dev
    

    You should see a big dump of YAML to the screen. If there is an error, try to figure it out or ask for help.

  12. Deploy Genie

    kustomize build ./k8s/dev | kubectl apply -f -
    
  13. Go back to the dashboard and switch to the almond-dev namespace.

    You should see the Genie components booting up. It can take a few minutes for everything to "go green", but after that you can use Almond Cloud at

    http://localhost:8080

More Repositories

1

storm

An LLM-powered knowledge curation system that researches a topic and generates a full-length report with citations.
Python
11,955
star
2

WikiChat

WikiChat stops the hallucination of large language models by retrieving data from Wikipedia.
Python
965
star
3

genie-server

The home server version of Almond
JavaScript
268
star
4

suql

SUQL: Conversational Search over Structured and Unstructured Data with LLMs
Python
193
star
5

genie-toolkit

The Genie open source kit for voice assistant (formerly known as Almond)
TypeScript
193
star
6

almond-gnome

The Almond Virtual Assistant, Linux desktop version
JavaScript
86
star
7

genienlp

GenieNLP: A versatile codebase for any NLP task
Python
84
star
8

thingtalk

The Programming Language of Virtual Assistants
TypeScript
84
star
9

wikidata-emnlp23

WikiSP, a semantic parser for Wikidata. WikiWebQuestions, a SPARQL-annotated dataset on Wikidata
Python
77
star
10

almond-dialog-agent

The Open Virtual Assistant
JavaScript
56
star
11

thingengine-core

A Modular, Powerful Virtual Assistant Engine
JavaScript
38
star
12

thingpedia-common-devices

Thingpedia interface code for commonly used devices
JavaScript
38
star
13

ovalchat

OVALChat is a customizable Web app aimed at conducting user studies with chatbots
TypeScript
27
star
14

almond-cmdline

Full-featured command-line version of Almond & ThingEngine
JavaScript
26
star
15

zero-shot-multiwoz-acl2020

Artifact associated with the paper "Zero-Shot Transfer Learning with Synthesized Data for Multi-Domain Dialogue State Tracking"
Makefile
24
star
16

schema2qa

Schema2QA Question Answering Dataset
Makefile
18
star
17

chainlite

LangChain + LiteLLM that works
Python
18
star
18

genie-parser

Neural Network Semantic Parser for Almond
Python
16
star
19

noora-v1

[ARCHIVED] A platform utilizing conversational AI to improve the social skills of individuals with ASD.
TypeScript
15
star
20

dialogues

A unified versatile interface for dialogue datasets
Python
15
star
21

node-pulseaudio

A fork of https://bitbucket.org/kayo/node-pulseaudio, which was unmantained. Home of pulseaudio2 npm module
C++
15
star
22

almond-android

The Almond Android App
C
12
star
23

almond-hassio-repository

Dockerfile
10
star
24

node-smtlib

Node.js wrappers for SMT-Lib 2.0
TypeScript
10
star
25

genie-client

C++
10
star
26

SPL

Semantic Parser Localizer (SPL) code repository
Python
9
star
27

thingpedia-api

Shared code for Thingpedia interfaces
TypeScript
8
star
28

noora

Using conversational AI to improve the social conversation of individuals with ASD.
TypeScript
7
star
29

genie-k8s

Kubernetes scripts to train models with Genie
Python
7
star
30

trade-dst

Jupyter Notebook
6
star
31

cs224v-fall2021

Makefile
6
star
32

pyGenieScript

A packaged GenieScript in Python
Python
5
star
33

diya

Make an API for things that don't have an API
JavaScript
5
star
34

almond-voice

A prototype voice interface for Almond, an open-source virtual assistant developed at Stanford.
TypeScript
5
star
35

ThingEngine

An open source platform for IoT rules that you can execute anywhere you want
5
star
36

almond-tokenizer

The tokenizer and preprocessor part of the Almond parser
Java
5
star
37

spinach

SPINACH: SPARQL-Based Information Navigation for Challenging Real-World Questions
5
star
38

genie-sdk

Genie skill development kit
Shell
4
star
39

pyalmond

Python client for the Almond API
Python
4
star
40

almond-bot

The Almond Bot Service.
TypeScript
4
star
41

consumer-queue

JavaScript
3
star
42

genie_open_text

Python
3
star
43

transparent-rpc

Automatic Proxy-based RPC for Node.js
TypeScript
3
star
44

CSP-DST

Code implementation for the paper "Contextual Semantic Parsing for Multilingual Task-Oriented Dialogues"
Python
3
star
45

cs294-homework-workdir

The workdir for cs294s/w homeworks
Makefile
3
star
46

oval-website

The new OVAL website
Astro
3
star
47

medxchange

Medical Data Exchange (MedXchange) platform
JavaScript
2
star
48

almond-enterprise

On-premise multi-user, single-profile Almond
JavaScript
2
star
49

thingpedia-discovery

Device discovery components for ThingPedia
JavaScript
2
star
50

query-validation

Server-side validation of query and body parameters for Express
TypeScript
2
star
51

project-cardiology

A virtual assistant, based on Almond, that helps doctors remind patients to track their blood pressure regularly.
JavaScript
1
star
52

thingpedia-demos

Demo, testing and mock devices for ThingPedia
JavaScript
1
star
53

node-libcanberra

Node.js bindings for libcanberra (event sound playing)
C++
1
star
54

thingpedia-cli

Command-line tools to interact with Thingpedia
JavaScript
1
star
55

gpt3-example

A simple example on how to use GPT-3 via the OpenAI API
Python
1
star
56

GenieScript-Python

Python
1
star
57

thingtalk-units

Unit conversion library from ThingTalk
TypeScript
1
star
58

slackmond

Almond-Slack bridge with multi-user support
JavaScript
1
star
59

cs224v-fall2022

Makefile
1
star
60

web-questions-wikidata

TypeScript
1
star
61

wikidata-scripts

Wikidata Scripts
JavaScript
1
star
62

thingpedia-client

Thingpedia client side libraries
JavaScript
1
star