{ "info": { "author": "", "author_email": "Human Signal ", "bugtrack_url": null, "classifiers": [], "description": "\"ADALA\n\nAdala is an **A**utonomous **DA**ta (**L**abeling) **A**gent framework.\n\nAdala offers a robust framework for implementing agents specialized in data processing, with a particular emphasis on\ndiverse data labeling tasks. These agents are autonomous, meaning they can independently acquire one or more skills\nthrough iterative learning. This learning process is influenced by their operating environment, observations, and\nreflections. Users define the environment by providing a ground truth dataset. Every agent learns and applies its skills\nin what we refer to as a \"runtime\", synonymous with LLM.\n\n![Diagram of components](./static/diagram.png \"Diagram of components\")\n\n\n\n### Why Choose Adala?\n\n- **Reliable Agents**: Built upon a foundation of ground truth data,\n our agents ensure consistent and trustworthy results, making Adala a\n reliable choice for data processing needs.\n \n- **Controllable Output**: For every skill, you can configure the\n desired output, setting specific constraints with varying degrees of\n flexibility. Whether you want strict adherence to particular\n guidelines or more adaptive outputs based on the agent's learning,\n Adala allows you to tailor results to your exact needs.\n\n- **Specialized in Data Processing**: While our agents excel in diverse\n data labeling tasks, they can be tailored to a wide range of data\n processing needs.\n \n- **Autonomous Learning**: Adala agents aren't just automated;\n they're intelligent. They iteratively and independently develop\n skills based on environment, observations, and reflections.\n\n- **Flexible and Extensible Runtime**: Adala's runtime environment is\n adaptable. A single skill can be deployed across multiple runtimes,\n facilitating dynamic scenarios like the student/teacher\n architecture. Moreover, the openness of our framework invites the\n community to extend and tailor runtimes, ensuring continuous\n evolution and adaptability to diverse needs.\n \n- **Extend Skills**: Quickly tailor and develop agents to address the\n specific challenges and nuances of your domain, without facing a\n steep learning curve.\n\n## Installation\n\nInstall ADALA:\n\n```sh\npip install adala\n```\n\nIf you're planning to use human-in-the-loop labeling, or need a labeling tool to produce ground truth datasets, we\nsuggest installing Label Studio. Adala is made to support Label Studio format right out of the box.\n\n```sh\npip install label-studio\n```\n\n## Prerequisites\n\nSet OPENAI_API_KEY ([see instructions here](https://platform.openai.com/docs/quickstart/step-2-setup-your-api-key))\n\n```\nexport OPENAI_API_KEY='your-openai-api-key'\n```\n\n## Quickstart\n\nIn this example we will use ADALA as a standalone library directly inside our python notebook. You can open it in Collab\nright here.\n\n```python\nimport pandas as pd\n\nfrom adala.agents import Agent\nfrom adala.datasets import DataFrameDataset\nfrom adala.environments import BasicEnvironment\nfrom adala.skills import ClassificationSkill\nfrom rich import print\n\nprint(\"=> Initialize datasets ...\")\n\n# Train dataset\ntrain_df = pd.DataFrame([\n [\"It was the negative first impressions, and then it started working.\", \"Positive\"],\n [\"Not loud enough and doesn't turn on like it should.\", \"Negative\"],\n [\"I don't know what to say.\", \"Neutral\"],\n [\"Manager was rude, but the most important that mic shows very flat frequency response.\", \"Positive\"],\n [\"The phone doesn't seem to accept anything except CBR mp3s.\", \"Negative\"],\n [\"I tried it before, I bought this device for my son.\", \"Neutral\"],\n], columns=[\"text\", \"ground_truth\"])\n\n# Test dataset\ntest_df = pd.DataFrame([\n \"All three broke within two months of use.\",\n \"The device worked for a long time, can't say anything bad.\",\n \"Just a random line of text.\",\n \"Will order from them again!\",\n], columns=[\"text\"])\n\ntrain_dataset = DataFrameDataset(df=train_df)\ntest_dataset = DataFrameDataset(df=test_df)\n\nprint(\"=> Initialize and train ADALA agent ...\")\nagent = Agent(\n # connect to a dataset\n environment=BasicEnvironment(\n ground_truth_dataset=train_dataset,\n ground_truth_column=\"ground_truth\"\n ),\n # define a skill\n skills=ClassificationSkill(\n name='sentiment_classification',\n instructions=\"Label text as subjective or objective.\",\n labels=[\"Positive\", \"Negative\", \"Neutral\"],\n input_data_field='text'\n ),\n \n # uncomment this if you want more quality and you have access to OPENAI GPT-4 model\n # default_teacher_runtime='openai-gpt4',\n)\nprint(agent)\n\nagent.learn(learning_iterations=3, accuracy_threshold=0.95)\nprint(agent.skills)\n\nprint('\\n=> Run tests ...')\nrun = agent.apply_skills(test_dataset)\nprint('\\n => Test results:')\nprint(run)\n```\n\n## More Notebooks\n\n- [Quickstart](./examples/quickstart.ipynb) \u2013 An extended example of the above with comments and outputs.\n- [Creating New Skill](./examples/creating_new_skill.ipynb) \u2013 An example that walks you through creating a new skill.\n- [Label Studio Tutorial](examples/tutorial_label_studio.ipynb) \u2013 An example of connecting Adala to an external labeling tool for enhanced supervision.\n\n\n\n### Who Adala is for?\n\nAdala is a versatile framework designed for individuals and professionals in the field of AI and machine learning. Here's who can benefit:\n\n- **AI Engineers:** Architect and design AI Agent systems with modular, interconnected skills. Build production-level agent systems, abstracting low-level ML to Adala and LLMs.\n- **Machine Learning Researchers:** Experiment with complex problem decomposition and causal reasoning.\n- **Data Scientists:** Apply agents to preprocess and postprocess your data. Interact with Adala natively through Python notebooks when working with large Dataframes.\n- **Educators and Students:** Use Adala as a teaching tool or as a base for advanced projects and research.\n\nWhile the roles highlighted above are central, it's pivotal to note that Adala is intricately designed to streamline and elevate the AI development journey, catering to all enthusiasts, irrespective of their specific niche in the field.\n\n## Roadmap\n\n- [ ] Create Named Entity Recognition Skill\n- [ ] Extend Environemnt with one more example\n- [ ] Command Line Utility (see the source for this readme for example)\n- [ ] REST API to interact with Adala\n\n## Contributing to Adala\n\nDive into the heart of Adala by enhancing Skills, optimizing Runtimes, or pioneering new Agent Types. Whether you're\ncrafting nuanced tasks, refining computational environments, or sculpting specialized agents for unique domains, your\ncontributions will power Adala's evolution. Join us in shaping the future of intelligent systems and making Adala more\nversatile and impactful for users across the globe.\n\n[Read more](./CONTRIBUTION.md) here.\n\n## Support\n\nAre you in need of assistance or looking to engage with our community? Our [Discord channel](https://discord.gg/QBtgTbXTgU) is the perfect place for real-time support and interaction. Whether you have questions, need clarifications, or simply want to discuss topics related to our project, the Discord community is welcoming!\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "adala-pk-test", "package_url": "https://pypi.org/project/adala-pk-test/", "platform": null, "project_url": "https://pypi.org/project/adala-pk-test/", "project_urls": null, "release_url": "https://pypi.org/project/adala-pk-test/0.0.1.post0/", "requires_dist": [ "pandas", "openai", "guidance", "pydantic>=2", "rich>=13", "redis-om" ], "requires_python": ">=3.8.8", "summary": "ADALA: Automated Data Labeling Agent", "version": "0.0.1.post0", "yanked": false, "yanked_reason": null }, "last_serial": 20323239, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "blake2b_256": "7cf38f60f0fe4b89d22635413d274a0e485ba9989b8d7f7a376b9498a1822b18", "md5": "5dcf71fbf862af4c86ad6a9247639d44", "sha256": "21d943d9acab20ed9127d58f35be60badfd52162a00e80557011f5d39d666d73" }, "downloads": -1, "filename": "adala_pk_test-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5dcf71fbf862af4c86ad6a9247639d44", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8", "size": 4651, "upload_time": "2023-10-23T23:18:04", "upload_time_iso_8601": "2023-10-23T23:18:04.193892Z", "url": "https://files.pythonhosted.org/packages/7c/f3/8f60f0fe4b89d22635413d274a0e485ba9989b8d7f7a376b9498a1822b18/adala_pk_test-0.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "8e535a020cab26fbe6bbe0096fbe08c5219c1e0c2cc671641acbd6a49a09419c", "md5": "ab4ba8785f5f13c5bae1d2b4f68c64be", "sha256": "58b296b4e339197e1027fca61d245f9c6985ef826a17657dc8c4d9c2f1282d68" }, "downloads": -1, "filename": "adala_pk_test-0.0.1.tar.gz", "has_sig": false, "md5_digest": "ab4ba8785f5f13c5bae1d2b4f68c64be", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8", "size": 4490, "upload_time": "2023-10-23T23:18:05", "upload_time_iso_8601": "2023-10-23T23:18:05.715544Z", "url": "https://files.pythonhosted.org/packages/8e/53/5a020cab26fbe6bbe0096fbe08c5219c1e0c2cc671641acbd6a49a09419c/adala_pk_test-0.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.1.post0": [ { "comment_text": "", "digests": { "blake2b_256": "c630d66ec37f6cb45496b2c8fbe887a00e3bb4cff3c42dbda19c2ec0f2ef9ab4", "md5": "6a24e2eeef7f4858c0a756ef5dac6bb5", "sha256": "cfadcf6b6b58f5c1ebb885e9eaab41f2b9f2c9ae091803e58aca00f95e15fb78" }, "downloads": -1, "filename": "adala_pk_test-0.0.1.post0-py3-none-any.whl", "has_sig": false, "md5_digest": "6a24e2eeef7f4858c0a756ef5dac6bb5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8.8", "size": 5305, "upload_time": "2023-10-25T03:05:59", "upload_time_iso_8601": "2023-10-25T03:05:59.303925Z", "url": "https://files.pythonhosted.org/packages/c6/30/d66ec37f6cb45496b2c8fbe887a00e3bb4cff3c42dbda19c2ec0f2ef9ab4/adala_pk_test-0.0.1.post0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "bc3c27a3a9cbc9fe40ba12156b32fa0139346751c328b9f76f07aa3dc72ba442", "md5": "176eb9181a91bdaba2c0c2e9db19edfe", "sha256": "9c185cc5eabcb963978b98678992581f53f44f49c1456e4a176ef1b13f1b54e8" }, "downloads": -1, "filename": "adala_pk_test-0.0.1.post0.tar.gz", "has_sig": false, "md5_digest": "176eb9181a91bdaba2c0c2e9db19edfe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8.8", "size": 5099, "upload_time": "2023-10-25T03:06:00", "upload_time_iso_8601": "2023-10-25T03:06:00.580232Z", "url": "https://files.pythonhosted.org/packages/bc/3c/27a3a9cbc9fe40ba12156b32fa0139346751c328b9f76f07aa3dc72ba442/adala_pk_test-0.0.1.post0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "blake2b_256": "c630d66ec37f6cb45496b2c8fbe887a00e3bb4cff3c42dbda19c2ec0f2ef9ab4", "md5": "6a24e2eeef7f4858c0a756ef5dac6bb5", "sha256": "cfadcf6b6b58f5c1ebb885e9eaab41f2b9f2c9ae091803e58aca00f95e15fb78" }, "downloads": -1, "filename": "adala_pk_test-0.0.1.post0-py3-none-any.whl", "has_sig": false, "md5_digest": "6a24e2eeef7f4858c0a756ef5dac6bb5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8.8", "size": 5305, "upload_time": "2023-10-25T03:05:59", "upload_time_iso_8601": "2023-10-25T03:05:59.303925Z", "url": "https://files.pythonhosted.org/packages/c6/30/d66ec37f6cb45496b2c8fbe887a00e3bb4cff3c42dbda19c2ec0f2ef9ab4/adala_pk_test-0.0.1.post0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "bc3c27a3a9cbc9fe40ba12156b32fa0139346751c328b9f76f07aa3dc72ba442", "md5": "176eb9181a91bdaba2c0c2e9db19edfe", "sha256": "9c185cc5eabcb963978b98678992581f53f44f49c1456e4a176ef1b13f1b54e8" }, "downloads": -1, "filename": "adala_pk_test-0.0.1.post0.tar.gz", "has_sig": false, "md5_digest": "176eb9181a91bdaba2c0c2e9db19edfe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8.8", "size": 5099, "upload_time": "2023-10-25T03:06:00", "upload_time_iso_8601": "2023-10-25T03:06:00.580232Z", "url": "https://files.pythonhosted.org/packages/bc/3c/27a3a9cbc9fe40ba12156b32fa0139346751c328b9f76f07aa3dc72ba442/adala_pk_test-0.0.1.post0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }