{"id":28729810,"url":"https://github.com/didi/meep","last_synced_at":"2025-06-15T17:11:09.763Z","repository":{"id":75814961,"uuid":"290734957","full_name":"didi/MEEP","owner":"didi","description":"End-to-end framework to build automatic agents (chatbots) for task-oriented dialogs","archived":false,"fork":false,"pushed_at":"2020-12-02T20:29:49.000Z","size":15419,"stargazers_count":18,"open_issues_count":0,"forks_count":3,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-06-20T14:33:10.212Z","etag":null,"topics":["dialogue-systems","task-oriented-dialogue"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/didi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-08-27T09:34:48.000Z","updated_at":"2024-06-20T14:33:10.213Z","dependencies_parsed_at":"2023-03-03T08:16:01.338Z","dependency_job_id":null,"html_url":"https://github.com/didi/MEEP","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/didi/MEEP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FMEEP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FMEEP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FMEEP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FMEEP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/didi","download_url":"https://codeload.github.com/didi/MEEP/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FMEEP/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260016055,"owners_count":22946321,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dialogue-systems","task-oriented-dialogue"],"created_at":"2025-06-15T17:11:06.696Z","updated_at":"2025-06-15T17:11:09.751Z","avatar_url":"https://github.com/didi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multi-Domain End-to-End Platform (MEEP)\n  * [Introduction](#introduction)\n  * [Demo](#demo)\n  * [Installation](#installation)\n    + [Backend](#backend)\n    + [Frontend](#frontend)\n    + [Configuration](#configuration)\n  * [30-Second Startup](#30-second-startup)\n      - [Start the backend server](#start-the-backend-server)\n      - [Start the front-end server](#start-the-front-end-server)\n  * [Resources](#resources)\n\n\u003csmall\u003e\u003ci\u003e\u003ca href='http://ecotrust-canada.github.io/markdown-toc/'\u003eTable of contents generated with markdown-toc\u003c/a\u003e\u003c/i\u003e\u003c/small\u003e\n\n## Introduction\n**End-to-end framework to build automatic agents (chatbots) for task-oriented dialogs**\n\n- 💬 Use chat interfaces to collect dialog data and interact with agents\n- 🤖 Build/deploy automated chatbot agents with your own ML/rule-based models\n- :chart_with_upwards_trend: Evaluate chatbots using 1) agent-action annotations  2) user-satisfaction scores\n\n**Quickly deploy for any domain by leveraging domain-agnostic modules**\n- Data collection interface self-annotates dialogs for training/evaluation data\n- Train a chatbot without ML knowledge using generic ML models, or write a custom model\n- Evaluate any chatbot's accuracy as a black-box, or inspect its internal actions as a white-box\n\nChat interfaces are deployed with a simple web architecture [more details in a Google drive](https://docs.google.com/presentation/d/1wvpMsL0JgeM_nSvwjvszXRk-Ei0SljzjvghqPtjXXjo/edit#slide=id.g7314e2b87c_0_0).  The backend is Python/Flask/sockets\nand the frontend is Preact/Redux.\n\n## Demo\nBelow is a short snippet of a user interacting with a chatbot that helps them specify a destination\nfor a taxi ride.\n\n![](img/UserInteraction_demo.gif)\n\n**Live Chatbot:** http://35.212.174.248:9999/0/user. Chat directly with the chatbot here.\n\n## Installation\n\n### Backend\n- Tested on python 3.6.3, requires python 3.6+ for the newer versions of the transformers module.\n\n#### Set up a virtual environment (optional, but recommended)\n1. `python3 -m venv env`\n2. `source env/bin/activate`\n\n#### Install python dependencies (not optional)\n3. `pip install -r requirements.txt`\n4. This installs server and API dependencies. Some agents require additional installation. See their folders for details or install `requirements-full.txt`.\n\n### Frontend\n\n- Requires Node.js. Tested with Node 12.10\n\n\u003cdetails\u003e\n    \u003csummary\u003eIf node is not installed, follow these instructions for Ubuntu\u003c/summary\u003e\n\n1. `curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -`\n2. `sudo apt install nodejs`\n\n[Source](https://linuxize.com/post/how-to-install-node-js-on-ubuntu-18.04/)\n\u003c/details\u003e\n\nInstall the required dependencies.\n\n1. `cd gui/frontend`\n2. `npm install`\n\n### Configuration\n\nBackend configuration is all done through command line arguments to main.py.\nRun `python main.py --help` for a list of options.\nIf you are running a domain that requires API keys, you need to create the `gui/backend/keys/api_keys.json` file and set them there.\nHere's an example of api_keys.json:\n```json\n{\n  \"darksky\": \"my_api_key1\",\n  \"google_maps\": \"my_api_key2\",\n  \"google_speech\": \"my_api_key_file.json\",\n  \"wit_date\": \"my_api_key3\"\n}\n```\n\nFrontend configuration is done using [dotenv](https://www.npmjs.com/package/dotenv-safe),\nstored in the auto-generated configuration file `gui/frontend/.env`.\nThere is an example at [`gui/frontend/.env.example`](./gui/frontend/.env.example)\nYou can modify the parameters in this configuration file after it is generated by the front-end\n[start-up command](#start-the-front-end-server).\nFor domains that require frontend API keys (e.g. destination), you should add the keys there.\n\n## 30-Second Startup\nLet's start a chat interface for the simple [compare_numbers](./apis/README.md) domain that determines\nwhether one number is greater than another.\n\n```bash\nBACKEND_PORT=8081\nFRONTEND_PORT=8082\nLOG_DIR=logs/tutorial\n```\n#### Start the backend server\n```bash\ncd gui/backend\npython main.py --port=$BACKEND_PORT --domain=compare_numbers --num_rooms=1 --log_dir=$LOG_DIR\n```\nThis starts a backend for **human-agents** that make api calls and reply to user utterances via the agent UI.\n\nTo see what it's like to interact with a **chatbot-agent**, add `--agent_class_name=agents.compare_numbers_agent.CompareNumbersAgent` to the command above.\n\n#### Start the front-end server\n```bash\ncd gui/frontend\n./run.sh $BACKEND_PORT $FRONTEND_PORT\n```\nThe front-end command will output URLs to access the chat interface, e.g. `http://0.0.0.0:8082`.\n\n## Resources\n- [Chat Interface](./gui/README.md)\n- [Datasets](./dataset/README.md)\n- [Pre-Built and Custom Domains](./apis/README.md)\n- [Testing](gui/backend/README.md#unittests)\n- [Implement and Evaluate a Custom Agent](agents/README.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdidi%2Fmeep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdidi%2Fmeep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdidi%2Fmeep/lists"}