diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 8b137891..e69de29b 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +0,0 @@ - diff --git a/README.md b/README.md index ab973416..34136e96 100644 --- a/README.md +++ b/README.md @@ -3,15 +3,10 @@ Introduction ============ - -WAFL is a framework for home assistants. -It is designed to combine Large Language Models and rules to create a predictable behavior. -Specifically, instead of organising the work of an LLM into a chain of thoughts, -WAFL intends to organise its behavior into inference trees. - -WAFL is a work in progress. +WAFL is a framework for personal agents. It integrates Large language models, speech recognition and text to speech. +This framework combines Large Language Models and rules to create a predictable behavior. +A set of rules is used to define the behavior of the agent, supporting function calling and a working memory. The current version requires the user to specify the rules to follow. -While it is ready to play with, it might not ready for production depending on your use-case. Installation ============ diff --git a/documentation/build/doctrees/installation.doctree b/documentation/build/doctrees/installation.doctree index 708e1b36..24a41813 100644 Binary files a/documentation/build/doctrees/installation.doctree and b/documentation/build/doctrees/installation.doctree differ diff --git a/documentation/build/html/_images/two-parts.png b/documentation/build/html/_images/two-parts.png index fc62ece2..8d533f84 100644 Binary files a/documentation/build/html/_images/two-parts.png and b/documentation/build/html/_images/two-parts.png differ diff --git a/documentation/build/html/_sources/installation.rst.txt b/documentation/build/html/_sources/installation.rst.txt index b6a794a5..e8ff1cb3 100644 --- a/documentation/build/html/_sources/installation.rst.txt +++ b/documentation/build/html/_sources/installation.rst.txt @@ -31,7 +31,7 @@ The second command starts the audio interface as well as a web server on port 80 Please see the examples in the following chapters. -LLM side (needs a GPU) +LLM side (needs a GPU to be efficient) ---------------------- The second part (LLM side) is a model server for the speech-to-text model, the LLM, the embedding system, and the text-to-speech model. In order to quickly run the LLM side, you can use the following installation commands: @@ -41,7 +41,7 @@ In order to quickly run the LLM side, you can use the following installation com $ pip install wafl-llm $ wafl-llm start - which will use the default models and start the server on port 8080. +which will use the default models and start the server on port 8080. The interface side has a `config.json` file that needs to be filled with the IP address of the LLM side. The default is localhost. diff --git a/documentation/build/html/_static/two-parts.png b/documentation/build/html/_static/two-parts.png index fc62ece2..8d533f84 100644 Binary files a/documentation/build/html/_static/two-parts.png and b/documentation/build/html/_static/two-parts.png differ diff --git a/documentation/build/html/index.html b/documentation/build/html/index.html index c70b63d6..c00775e3 100644 --- a/documentation/build/html/index.html +++ b/documentation/build/html/index.html @@ -91,7 +91,7 @@

Welcome to WAFL’s 0.1.0 documentation!Introduction
  • Installation
  • Initialization
  • diff --git a/documentation/build/html/installation.html b/documentation/build/html/installation.html index 49723e52..b8665b93 100644 --- a/documentation/build/html/installation.html +++ b/documentation/build/html/installation.html @@ -49,7 +49,7 @@
  • Introduction
  • Installation
  • Initialization
  • @@ -110,16 +110,15 @@

    Interface side -

    LLM side (needs a GPU)

    +
    +

    LLM side (needs a GPU to be efficient)

    The second part (LLM side) is a model server for the speech-to-text model, the LLM, the embedding system, and the text-to-speech model. In order to quickly run the LLM side, you can use the following installation commands:

    $ pip install wafl-llm
     $ wafl-llm start
    -
    -which will use the default models and start the server on port 8080.
     
    +

    which will use the default models and start the server on port 8080.

    The interface side has a config.json file that needs to be filled with the IP address of the LLM side. The default is localhost.

    Finally, you can run the LLM side by cloning [this repository](https://github.com/fractalego/wafl-llm).

    diff --git a/documentation/build/html/searchindex.js b/documentation/build/html/searchindex.js index 2e98770b..e1b5163c 100644 --- a/documentation/build/html/searchindex.js +++ b/documentation/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"$ wafl run": [[14, "wafl-run"]], "$ wafl run-audio": [[14, "wafl-run-audio"]], "$ wafl run-cli": [[14, "wafl-run-cli"]], "$ wafl run-server": [[14, "wafl-run-server"]], "$ wafl run-tests": [[14, "wafl-run-tests"]], "Configuration": [[1, null]], "Contents:": [[4, null]], "Creating a testcase": [[16, null]], "Examples": [[2, null]], "Facts": [[3, "facts"]], "Indexing Files": [[5, null]], "Indices and tables": [[4, "indices-and-tables"]], "Initialization": [[6, null]], "Installation": [[7, null]], "Interface side": [[7, "interface-side"]], "Introduction": [[8, null]], "LLM side (needs a GPU)": [[7, "llm-side-needs-a-gpu"]], "License": [[9, null]], "Local functions": [[12, "local-functions"]], "Modify the original prompt": [[10, null]], "Negative testcases": [[16, "negative-testcases"]], "Rule with examples": [[11, null]], "Rule with execute command": [[12, null]], "Rule with remember command": [[13, null]], "Rules": [[3, "rules"]], "Running Actions": [[0, null]], "Running WAFL": [[14, null]], "Running the testcases": [[16, "running-the-testcases"]], "Simple rule": [[15, null]], "The rules.yaml file": [[3, null]], "Welcome to WAFL\u2019s 0.1.0 documentation!": [[4, null]]}, "docnames": ["actions", "configuration", "examples", "facts_and_rules", "index", "indexing_files", "initialization", "installation", "introduction", "license", "modify_the_prompt", "rule_with_examples", "rules_with_execute_command", "rules_with_remember_command", "running_WAFL", "simple_rule", "testcases"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["actions.rst", "configuration.rst", "examples.rst", "facts_and_rules.rst", "index.rst", "indexing_files.rst", "initialization.rst", "installation.rst", "introduction.rst", "license.rst", "modify_the_prompt.rst", "rule_with_examples.rst", "rules_with_execute_command.rst", "rules_with_remember_command.rst", "running_WAFL.rst", "simple_rule.rst", "testcases.rst"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [6, 10, 12, 13], "0": 1, "10": 0, "2": [1, 11, 12], "2024": 9, "4": 1, "6": 1, "7": 1, "8": 1, "8080": [1, 7], "8090": [1, 7, 14], "A": [0, 1, 8, 9, 12, 15], "AND": 9, "AS": 9, "As": 12, "At": 5, "BE": 9, "BUT": 9, "FOR": 9, "For": [0, 3, 11, 12], "IN": 9, "If": [0, 1], "In": [3, 7, 12, 15], "It": [0, 6, 8, 14], "NO": 9, "NOT": 9, "OF": 9, "OR": 9, "THAT": [11, 12], "THE": [9, 11, 12], "TO": 9, "The": [0, 1, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16], "Then": 13, "There": [5, 12, 13, 14], "These": [1, 3, 12], "To": [0, 7, 16], "WITH": 9, "about": 6, "abov": [3, 9, 11, 12], "access": 7, "act": 14, "action": [3, 4, 9, 15], "activ": 14, "actual": 10, "ad": [3, 11, 12, 13], "add": [3, 5], "address": 7, "after": 7, "again": 0, "against": 3, "agent": 8, "alberto": 9, "all": [9, 14, 15, 16], "am": 3, "an": [0, 3, 6, 9, 13, 16], "ani": [1, 9], "anoth": [0, 11, 12], "answer": [3, 16], "apt": 7, "ar": [1, 3, 5, 6, 10, 12, 13, 14, 15, 16], "aris": 9, "ask": 3, "assign": [11, 12], "associ": 9, "audio": [1, 4, 7], "author": 9, "auxiliari": 6, "avail": 14, "back": 1, "backend": [1, 6], "behavior": 8, "below": [1, 14], "between": 12, "bob": 16, "bot": [0, 1, 3, 11, 12, 15, 16], "both": 7, "built": 7, "c": 9, "cach": 1, "cache_filenam": 1, "call": [0, 3, 5, 8], "can": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15], "carri": 0, "case": [6, 8, 12, 15], "certain": 16, "cetoli": 9, "chang": [7, 10, 14], "chapter": 7, "charg": 9, "chatbot": [1, 6, 14], "check": 13, "claim": 9, "clearer": [11, 12], "cli": 4, "clone": 7, "code": [11, 12, 13], "com": 7, "combin": 8, "command": [0, 2, 4, 5, 6, 7, 14, 16], "compos": 3, "comput": [1, 3, 11, 12, 14], "condit": [3, 9], "config": [1, 6, 7, 10, 14], "configur": [4, 7], "connect": [1, 6, 9], "consid": [1, 11, 12, 13], "consist": 16, "consol": 0, "contain": [1, 6, 14, 16], "content": 13, "contract": 9, "convers": [0, 1, 3, 6, 16], "copi": 9, "copyright": 9, "correct": 16, "creat": [4, 6, 7, 8], "credenti": 6, "cron": 0, "current": [8, 12], "d": 12, "damag": 9, "date": 12, "datetim": 12, "db": 6, "deactivate_sound": 1, "deal": 9, "def": 12, "default": [1, 7, 10, 14], "defin": [5, 8, 12, 14], "depend": 8, "desir": 12, "detect": 1, "dev": 7, "dictionari": 0, "directori": 10, "distribut": 9, "do": [3, 9], "docker": 6, "document": [9, 14], "doe": [0, 14, 16], "dure": 3, "each": [0, 11, 12, 16], "edit": [6, 7], "effect": [11, 12], "embed": [1, 7], "engin": 15, "environ": 6, "equival": 14, "event": 9, "eventu": 3, "everyth": 12, "exactli": [11, 12, 13], "exampl": [0, 3, 4, 7, 12, 14, 15], "execut": [0, 2, 3, 4, 13, 14, 15], "expect": [0, 16], "express": 9, "fact": [1, 4, 6, 10], "fail": 16, "fashion": 5, "few": 14, "ffmpeg": 7, "file": [0, 1, 4, 6, 7, 9, 10, 12, 14, 16], "fill": 7, "final": [7, 13], "fine": 3, "finish": 1, "first": 7, "fit": 9, "follow": [0, 1, 3, 5, 7, 8, 9, 11, 12, 13, 16], "format": [3, 11], "four": 14, "fractalego": [7, 9], "framework": 8, "free": 9, "from": [0, 5, 9, 16], "frontend": 1, "frontend_port": 1, "function": [0, 1, 2, 4, 6, 8], "furnish": 9, "gener": [3, 10, 11, 12, 13], "get": 7, "get_dat": 12, "get_tim": 3, "get_websit": 13, "github": 7, "given": 13, "go": [11, 12], "gpu": 4, "grant": 9, "greet": [0, 16], "guid": [1, 3, 6], "ha": 7, "have": [7, 15], "hello": [0, 15, 16], "herebi": 9, "holder": 9, "host": 12, "how": [3, 14, 15], "howdi": 15, "howev": 12, "http": [7, 14], "i": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "idl": 1, "ignor": 1, "imag": 6, "impli": 9, "import": [11, 12], "includ": [7, 9], "index": [1, 4], "indic": [1, 5], "inform": 6, "init": [6, 7], "initi": [4, 7], "initialis": 6, "input": [3, 15], "insert": 13, "instal": 4, "integr": 8, "interfac": [4, 5, 6, 14], "intermedi": 13, "introduct": 4, "io": 9, "ip": 7, "item": 3, "its": 3, "job": 0, "json": [1, 6, 7, 10, 14], "kei": 0, "kind": 9, "know": [3, 12], "knowledg": 1, "knowledge_cach": 1, "l": 6, "languag": [3, 8, 11, 12, 13], "larg": 8, "liabil": 9, "liabl": 9, "licens": 4, "like": [0, 1, 3], "limit": 9, "line": [0, 5, 14, 16], "list": [0, 3, 11, 12, 16], "listen": [1, 14], "listener_hotword_logp": 1, "listener_model": 1, "listener_silence_timeout": 1, "listener_volume_threshold": 1, "ll": 13, "llm": [1, 4, 6], "llm_model": 1, "local": [2, 4, 6, 7, 14], "localhost": [1, 7], "long": 12, "longer": 1, "look": [0, 1], "loop": 14, "m": 12, "machin": [7, 12], "mai": 6, "main": [1, 6, 10], "make": [11, 12], "manual": [5, 6], "match": [3, 15], "math": [11, 12], "max_recurs": 1, "maximum": 0, "meet": 16, "memori": [8, 12], "merchant": 9, "merg": 9, "microphon": 7, "might": 8, "mit": 9, "mode": [1, 14], "model": [1, 3, 7, 8, 11, 12, 13], "model_host": 1, "model_port": 1, "modifi": [4, 9], "modul": 4, "moment": 5, "multipl": 15, "must": 15, "name": [0, 1, 10, 14, 16], "need": [4, 5, 6, 13], "neg": 4, "nice": 16, "noninfring": 9, "normal": 0, "notic": [9, 11], "now": 12, "obtain": 9, "one": 11, "onli": 5, "oper": [11, 12], "order": [3, 7, 15], "origin": 4, "other": 9, "otherwis": 9, "out": [0, 9], "output": [0, 3, 11, 12, 13], "packag": 6, "page": 4, "parallel": 14, "paramet": [1, 6], "part": 7, "particular": 9, "pass": 16, "path": [1, 5], "pdf": 5, "permiss": 9, "permit": 9, "person": [8, 9], "pi": [11, 12], "pip": 7, "plai": [1, 8], "pleas": 7, "port": [1, 7, 14], "portaudio19": 7, "portion": 9, "possibl": 0, "predict": 8, "prefix": 16, "print": 0, "prior": 13, "problem": [11, 12], "product": 8, "progress": 8, "project": 10, "prompt": [1, 3, 4, 11, 12, 13], "prompt_filenam": 1, "provid": [9, 13], "publish": 9, "purpos": [9, 14], "py": [1, 6, 12], "python": [6, 11, 12, 13], "queri": 5, "quickli": 7, "rag": 5, "readi": 8, "recognit": 8, "regul": 1, "rememb": [2, 4], "replac": 10, "repli": 15, "repositori": 7, "request": [11, 12, 13, 14], "requir": [6, 7, 8, 11, 12], "respond": [0, 16], "respons": 0, "restrict": 9, "result": [0, 11, 12, 13, 14], "retriev": 3, "return": [12, 14], "right": 9, "root": [10, 11, 12], "rule": [0, 1, 2, 4, 6, 8, 10, 14], "run": [1, 4, 6, 7], "sai": [0, 15], "same": [7, 11, 14], "script": [0, 6], "search": 4, "second": 7, "secret": 6, "see": [7, 12, 14], "sell": 9, "server": [4, 7], "set": [1, 3, 6, 7, 8], "sh": 6, "shall": 9, "should": [3, 11, 12], "show": 15, "side": [4, 6], "signal": 1, "silenc": 1, "similar": [1, 15], "simpl": [2, 3, 4], "simpli": 6, "so": 9, "softwar": 9, "solv": [11, 12], "some": [1, 6, 11, 12], "speak": 14, "speaker": [1, 7], "speaker_model": 1, "special": [5, 12, 13], "specifi": [8, 11, 12], "speech": [7, 8], "sqrt": [11, 12], "squar": [11, 12], "start": [6, 7, 14, 16], "start_llm": 6, "state": 6, "step": [0, 13], "store": 10, "strftime": 12, "string": 12, "subject": 9, "sublicens": 9, "substanti": 9, "substitut": 12, "success": 0, "sudo": 7, "suggest": [11, 12], "summari": 13, "summaris": 13, "support": [5, 8], "system": [1, 7, 14], "tag": [12, 13], "task": 0, "temperatur": 1, "templat": 7, "test": [4, 6, 16], "testcas": [4, 6, 14], "text": [1, 7, 8, 12], "text_embedding_model": 1, "than": 1, "thei": 16, "thi": [0, 1, 3, 6, 7, 8, 9, 12, 14, 15, 16], "think": [3, 11, 12], "threshold": 1, "through": [3, 13], "time": [0, 1, 3, 14], "timeout": 1, "titl": 16, "todai": 12, "tort": 9, "trigger": 3, "true": 1, "two": [0, 7, 12, 13], "txt": [5, 6, 14, 16], "type": 5, "typic": [0, 1], "under": 9, "unknown": 16, "until": 0, "up": 1, "url": [1, 6, 13], "us": [0, 1, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16], "user": [3, 8, 11, 12, 13, 14, 15, 16], "utter": [1, 16], "valu": 12, "variabl": [10, 11, 12], "version": [7, 8], "volum": 1, "wafl": [0, 1, 5, 6, 7, 8, 16], "wai": 16, "wait": 14, "wake": 1, "waking_up_sound": 1, "waking_up_word": 1, "want": [3, 11, 12, 13, 14], "warranti": 9, "web": [1, 7, 14], "webserv": [6, 14], "websit": 13, "website_url": 13, "well": [3, 7], "what": [11, 12, 13, 16], "whatev": 14, "when": [10, 11, 12, 13], "where": 1, "whether": 9, "which": [7, 14], "while": 8, "whole": 3, "whom": 9, "within": 12, "without": 9, "word": [1, 14], "work": [6, 8, 14, 15, 16], "world": 0, "written": 3, "y": 12, "yaml": [0, 1, 4, 5, 6], "you": [3, 5, 7, 13, 14, 15, 16], "your": [7, 8, 16]}, "titles": ["Running Actions", "Configuration", "Examples", "The rules.yaml file", "Welcome to WAFL\u2019s 0.1.0 documentation!", "Indexing Files", "Initialization", "Installation", "Introduction", "License", "Modify the original prompt", "Rule with examples", "Rule with execute command", "Rule with remember command", "Running WAFL", "Simple rule", "Creating a testcase"], "titleterms": {"": 4, "0": 4, "1": 4, "The": 3, "action": 0, "audio": 14, "cli": 14, "command": [12, 13], "configur": 1, "content": 4, "creat": 16, "document": 4, "exampl": [2, 11], "execut": 12, "fact": 3, "file": [3, 5], "function": 12, "gpu": 7, "index": 5, "indic": 4, "initi": 6, "instal": 7, "interfac": 7, "introduct": 8, "licens": 9, "llm": 7, "local": 12, "modifi": 10, "need": 7, "neg": 16, "origin": 10, "prompt": 10, "rememb": 13, "rule": [3, 11, 12, 13, 15], "run": [0, 14, 16], "server": 14, "side": 7, "simpl": 15, "tabl": 4, "test": 14, "testcas": 16, "wafl": [4, 14], "welcom": 4, "yaml": 3}}) \ No newline at end of file +Search.setIndex({"alltitles": {"$ wafl run": [[14, "wafl-run"]], "$ wafl run-audio": [[14, "wafl-run-audio"]], "$ wafl run-cli": [[14, "wafl-run-cli"]], "$ wafl run-server": [[14, "wafl-run-server"]], "$ wafl run-tests": [[14, "wafl-run-tests"]], "Configuration": [[1, null]], "Contents:": [[4, null]], "Creating a testcase": [[16, null]], "Examples": [[2, null]], "Facts": [[3, "facts"]], "Indexing Files": [[5, null]], "Indices and tables": [[4, "indices-and-tables"]], "Initialization": [[6, null]], "Installation": [[7, null]], "Interface side": [[7, "interface-side"]], "Introduction": [[8, null]], "LLM side (needs a GPU to be efficient)": [[7, "llm-side-needs-a-gpu-to-be-efficient"]], "License": [[9, null]], "Local functions": [[12, "local-functions"]], "Modify the original prompt": [[10, null]], "Negative testcases": [[16, "negative-testcases"]], "Rule with examples": [[11, null]], "Rule with execute command": [[12, null]], "Rule with remember command": [[13, null]], "Rules": [[3, "rules"]], "Running Actions": [[0, null]], "Running WAFL": [[14, null]], "Running the testcases": [[16, "running-the-testcases"]], "Simple rule": [[15, null]], "The rules.yaml file": [[3, null]], "Welcome to WAFL\u2019s 0.1.0 documentation!": [[4, null]]}, "docnames": ["actions", "configuration", "examples", "facts_and_rules", "index", "indexing_files", "initialization", "installation", "introduction", "license", "modify_the_prompt", "rule_with_examples", "rules_with_execute_command", "rules_with_remember_command", "running_WAFL", "simple_rule", "testcases"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["actions.rst", "configuration.rst", "examples.rst", "facts_and_rules.rst", "index.rst", "indexing_files.rst", "initialization.rst", "installation.rst", "introduction.rst", "license.rst", "modify_the_prompt.rst", "rule_with_examples.rst", "rules_with_execute_command.rst", "rules_with_remember_command.rst", "running_WAFL.rst", "simple_rule.rst", "testcases.rst"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [6, 10, 12, 13], "0": 1, "10": 0, "2": [1, 11, 12], "2024": 9, "4": 1, "6": 1, "7": 1, "8": 1, "8080": [1, 7], "8090": [1, 7, 14], "A": [0, 1, 8, 9, 12, 15], "AND": 9, "AS": 9, "As": 12, "At": 5, "BE": 9, "BUT": 9, "FOR": 9, "For": [0, 3, 11, 12], "IN": 9, "If": [0, 1], "In": [3, 7, 12, 15], "It": [0, 6, 8, 14], "NO": 9, "NOT": 9, "OF": 9, "OR": 9, "THAT": [11, 12], "THE": [9, 11, 12], "TO": 9, "The": [0, 1, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16], "Then": 13, "There": [5, 12, 13, 14], "These": [1, 3, 12], "To": [0, 7, 16], "WITH": 9, "about": 6, "abov": [3, 9, 11, 12], "access": 7, "act": 14, "action": [3, 4, 9, 15], "activ": 14, "actual": 10, "ad": [3, 11, 12, 13], "add": [3, 5], "address": 7, "after": 7, "again": 0, "against": 3, "agent": 8, "alberto": 9, "all": [9, 14, 15, 16], "am": 3, "an": [0, 3, 6, 9, 13, 16], "ani": [1, 9], "anoth": [0, 11, 12], "answer": [3, 16], "apt": 7, "ar": [1, 3, 5, 6, 10, 12, 13, 14, 15, 16], "aris": 9, "ask": 3, "assign": [11, 12], "associ": 9, "audio": [1, 4, 7], "author": 9, "auxiliari": 6, "avail": 14, "back": 1, "backend": [1, 6], "behavior": 8, "below": [1, 14], "between": 12, "bob": 16, "bot": [0, 1, 3, 11, 12, 15, 16], "both": 7, "built": 7, "c": 9, "cach": 1, "cache_filenam": 1, "call": [0, 3, 5, 8], "can": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15], "carri": 0, "case": [6, 8, 12, 15], "certain": 16, "cetoli": 9, "chang": [7, 10, 14], "chapter": 7, "charg": 9, "chatbot": [1, 6, 14], "check": 13, "claim": 9, "clearer": [11, 12], "cli": 4, "clone": 7, "code": [11, 12, 13], "com": 7, "combin": 8, "command": [0, 2, 4, 5, 6, 7, 14, 16], "compos": 3, "comput": [1, 3, 11, 12, 14], "condit": [3, 9], "config": [1, 6, 7, 10, 14], "configur": [4, 7], "connect": [1, 6, 9], "consid": [1, 11, 12, 13], "consist": 16, "consol": 0, "contain": [1, 6, 14, 16], "content": 13, "contract": 9, "convers": [0, 1, 3, 6, 16], "copi": 9, "copyright": 9, "correct": 16, "creat": [4, 6, 7, 8], "credenti": 6, "cron": 0, "current": [8, 12], "d": 12, "damag": 9, "date": 12, "datetim": 12, "db": 6, "deactivate_sound": 1, "deal": 9, "def": 12, "default": [1, 7, 10, 14], "defin": [5, 8, 12, 14], "depend": 8, "desir": 12, "detect": 1, "dev": 7, "dictionari": 0, "directori": 10, "distribut": 9, "do": [3, 9], "docker": 6, "document": [9, 14], "doe": [0, 14, 16], "dure": 3, "each": [0, 11, 12, 16], "edit": [6, 7], "effect": [11, 12], "effici": 4, "embed": [1, 7], "engin": 15, "environ": 6, "equival": 14, "event": 9, "eventu": 3, "everyth": 12, "exactli": [11, 12, 13], "exampl": [0, 3, 4, 7, 12, 14, 15], "execut": [0, 2, 3, 4, 13, 14, 15], "expect": [0, 16], "express": 9, "fact": [1, 4, 6, 10], "fail": 16, "fashion": 5, "few": 14, "ffmpeg": 7, "file": [0, 1, 4, 6, 7, 9, 10, 12, 14, 16], "fill": 7, "final": [7, 13], "fine": 3, "finish": 1, "first": 7, "fit": 9, "follow": [0, 1, 3, 5, 7, 8, 9, 11, 12, 13, 16], "format": [3, 11], "four": 14, "fractalego": [7, 9], "framework": 8, "free": 9, "from": [0, 5, 9, 16], "frontend": 1, "frontend_port": 1, "function": [0, 1, 2, 4, 6, 8], "furnish": 9, "gener": [3, 10, 11, 12, 13], "get": 7, "get_dat": 12, "get_tim": 3, "get_websit": 13, "github": 7, "given": 13, "go": [11, 12], "gpu": 4, "grant": 9, "greet": [0, 16], "guid": [1, 3, 6], "ha": 7, "have": [7, 15], "hello": [0, 15, 16], "herebi": 9, "holder": 9, "host": 12, "how": [3, 14, 15], "howdi": 15, "howev": 12, "http": [7, 14], "i": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "idl": 1, "ignor": 1, "imag": 6, "impli": 9, "import": [11, 12], "includ": [7, 9], "index": [1, 4], "indic": [1, 5], "inform": 6, "init": [6, 7], "initi": [4, 7], "initialis": 6, "input": [3, 15], "insert": 13, "instal": 4, "integr": 8, "interfac": [4, 5, 6, 14], "intermedi": 13, "introduct": 4, "io": 9, "ip": 7, "item": 3, "its": 3, "job": 0, "json": [1, 6, 7, 10, 14], "kei": 0, "kind": 9, "know": [3, 12], "knowledg": 1, "knowledge_cach": 1, "l": 6, "languag": [3, 8, 11, 12, 13], "larg": 8, "liabil": 9, "liabl": 9, "licens": 4, "like": [0, 1, 3], "limit": 9, "line": [0, 5, 14, 16], "list": [0, 3, 11, 12, 16], "listen": [1, 14], "listener_hotword_logp": 1, "listener_model": 1, "listener_silence_timeout": 1, "listener_volume_threshold": 1, "ll": 13, "llm": [1, 4, 6], "llm_model": 1, "local": [2, 4, 6, 7, 14], "localhost": [1, 7], "long": 12, "longer": 1, "look": [0, 1], "loop": 14, "m": 12, "machin": [7, 12], "mai": 6, "main": [1, 6, 10], "make": [11, 12], "manual": [5, 6], "match": [3, 15], "math": [11, 12], "max_recurs": 1, "maximum": 0, "meet": 16, "memori": [8, 12], "merchant": 9, "merg": 9, "microphon": 7, "might": 8, "mit": 9, "mode": [1, 14], "model": [1, 3, 7, 8, 11, 12, 13], "model_host": 1, "model_port": 1, "modifi": [4, 9], "modul": 4, "moment": 5, "multipl": 15, "must": 15, "name": [0, 1, 10, 14, 16], "need": [4, 5, 6, 13], "neg": 4, "nice": 16, "noninfring": 9, "normal": 0, "notic": [9, 11], "now": 12, "obtain": 9, "one": 11, "onli": 5, "oper": [11, 12], "order": [3, 7, 15], "origin": 4, "other": 9, "otherwis": 9, "out": [0, 9], "output": [0, 3, 11, 12, 13], "packag": 6, "page": 4, "parallel": 14, "paramet": [1, 6], "part": 7, "particular": 9, "pass": 16, "path": [1, 5], "pdf": 5, "permiss": 9, "permit": 9, "person": [8, 9], "pi": [11, 12], "pip": 7, "plai": [1, 8], "pleas": 7, "port": [1, 7, 14], "portaudio19": 7, "portion": 9, "possibl": 0, "predict": 8, "prefix": 16, "print": 0, "prior": 13, "problem": [11, 12], "product": 8, "progress": 8, "project": 10, "prompt": [1, 3, 4, 11, 12, 13], "prompt_filenam": 1, "provid": [9, 13], "publish": 9, "purpos": [9, 14], "py": [1, 6, 12], "python": [6, 11, 12, 13], "queri": 5, "quickli": 7, "rag": 5, "readi": 8, "recognit": 8, "regul": 1, "rememb": [2, 4], "replac": 10, "repli": 15, "repositori": 7, "request": [11, 12, 13, 14], "requir": [6, 7, 8, 11, 12], "respond": [0, 16], "respons": 0, "restrict": 9, "result": [0, 11, 12, 13, 14], "retriev": 3, "return": [12, 14], "right": 9, "root": [10, 11, 12], "rule": [0, 1, 2, 4, 6, 8, 10, 14], "run": [1, 4, 6, 7], "sai": [0, 15], "same": [7, 11, 14], "script": [0, 6], "search": 4, "second": 7, "secret": 6, "see": [7, 12, 14], "sell": 9, "server": [4, 7], "set": [1, 3, 6, 7, 8], "sh": 6, "shall": 9, "should": [3, 11, 12], "show": 15, "side": [4, 6], "signal": 1, "silenc": 1, "similar": [1, 15], "simpl": [2, 3, 4], "simpli": 6, "so": 9, "softwar": 9, "solv": [11, 12], "some": [1, 6, 11, 12], "speak": 14, "speaker": [1, 7], "speaker_model": 1, "special": [5, 12, 13], "specifi": [8, 11, 12], "speech": [7, 8], "sqrt": [11, 12], "squar": [11, 12], "start": [6, 7, 14, 16], "start_llm": 6, "state": 6, "step": [0, 13], "store": 10, "strftime": 12, "string": 12, "subject": 9, "sublicens": 9, "substanti": 9, "substitut": 12, "success": 0, "sudo": 7, "suggest": [11, 12], "summari": 13, "summaris": 13, "support": [5, 8], "system": [1, 7, 14], "tag": [12, 13], "task": 0, "temperatur": 1, "templat": 7, "test": [4, 6, 16], "testcas": [4, 6, 14], "text": [1, 7, 8, 12], "text_embedding_model": 1, "than": 1, "thei": 16, "thi": [0, 1, 3, 6, 7, 8, 9, 12, 14, 15, 16], "think": [3, 11, 12], "threshold": 1, "through": [3, 13], "time": [0, 1, 3, 14], "timeout": 1, "titl": 16, "todai": 12, "tort": 9, "trigger": 3, "true": 1, "two": [0, 7, 12, 13], "txt": [5, 6, 14, 16], "type": 5, "typic": [0, 1], "under": 9, "unknown": 16, "until": 0, "up": 1, "url": [1, 6, 13], "us": [0, 1, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16], "user": [3, 8, 11, 12, 13, 14, 15, 16], "utter": [1, 16], "valu": 12, "variabl": [10, 11, 12], "version": [7, 8], "volum": 1, "wafl": [0, 1, 5, 6, 7, 8, 16], "wai": 16, "wait": 14, "wake": 1, "waking_up_sound": 1, "waking_up_word": 1, "want": [3, 11, 12, 13, 14], "warranti": 9, "web": [1, 7, 14], "webserv": [6, 14], "websit": 13, "website_url": 13, "well": [3, 7], "what": [11, 12, 13, 16], "whatev": 14, "when": [10, 11, 12, 13], "where": 1, "whether": 9, "which": [7, 14], "while": 8, "whole": 3, "whom": 9, "within": 12, "without": 9, "word": [1, 14], "work": [6, 8, 14, 15, 16], "world": 0, "written": 3, "y": 12, "yaml": [0, 1, 4, 5, 6], "you": [3, 5, 7, 13, 14, 15, 16], "your": [7, 8, 16]}, "titles": ["Running Actions", "Configuration", "Examples", "The rules.yaml file", "Welcome to WAFL\u2019s 0.1.0 documentation!", "Indexing Files", "Initialization", "Installation", "Introduction", "License", "Modify the original prompt", "Rule with examples", "Rule with execute command", "Rule with remember command", "Running WAFL", "Simple rule", "Creating a testcase"], "titleterms": {"": 4, "0": 4, "1": 4, "The": 3, "action": 0, "audio": 14, "cli": 14, "command": [12, 13], "configur": 1, "content": 4, "creat": 16, "document": 4, "effici": 7, "exampl": [2, 11], "execut": 12, "fact": 3, "file": [3, 5], "function": 12, "gpu": 7, "index": 5, "indic": 4, "initi": 6, "instal": 7, "interfac": 7, "introduct": 8, "licens": 9, "llm": 7, "local": 12, "modifi": 10, "need": 7, "neg": 16, "origin": 10, "prompt": 10, "rememb": 13, "rule": [3, 11, 12, 13, 15], "run": [0, 14, 16], "server": 14, "side": 7, "simpl": 15, "tabl": 4, "test": 14, "testcas": 16, "wafl": [4, 14], "welcom": 4, "yaml": 3}}) \ No newline at end of file diff --git a/documentation/source/_static/two-parts.png b/documentation/source/_static/two-parts.png index fc62ece2..8d533f84 100644 Binary files a/documentation/source/_static/two-parts.png and b/documentation/source/_static/two-parts.png differ diff --git a/documentation/source/introduction.rst b/documentation/source/introduction.rst index 7450893e..3b2a836b 100644 --- a/documentation/source/introduction.rst +++ b/documentation/source/introduction.rst @@ -1,12 +1,8 @@ Introduction ============ -WAFL is a framework for personal agents. -It integrates Large language models, speech recognition and text to speech. - +WAFL is a framework for personal agents. It integrates Large language models, speech recognition and text to speech. This framework combines Large Language Models and rules to create a predictable behavior. A set of rules is used to define the behavior of the agent, supporting function calling and a working memory. - -WAFL is a work in progress. The current version requires the user to specify the rules to follow. -While it is ready to play with, it might not ready for production depending on your use-case. + diff --git a/images/two-parts.png b/images/two-parts.png index fc62ece2..8d533f84 100644 Binary files a/images/two-parts.png and b/images/two-parts.png differ diff --git a/images/wafl-commands.png b/images/wafl-commands.png deleted file mode 100644 index 35ef3ef6..00000000 Binary files a/images/wafl-commands.png and /dev/null differ