{"info":{"author":"lyzr","author_email":"","bugtrack_url":null,"classifiers":["License :: OSI Approved :: MIT License","Operating System :: OS Independent"],"description":"![version](https://img.shields.io/badge/version-0.1.1-blue.svg) [![Discord](https://img.shields.io/badge/Discord-join%20now-blue.svg?style=flat&logo=Discord)](https://discord.gg/dXmgggHYUz) [![YouTube Video](https://img.shields.io/badge/YouTube-Video-red?logo=youtube)](https://youtu.be/6U42TgaR6RA?feature=shared)\r\n\r\n\r\n![Lyzr Automata Banner](https://github.com/LyzrCore/lyzr-automata/assets/136654928/2f05f718-5526-4178-a312-90059b945e23)\r\n\r\n\r\n# Lyzr Automata\r\n\r\n## 1. Introduction\r\n\r\n### A low-code multi-agent automation framework.\r\n\r\nNote : Framework was developed swiftly as an experiment, leading to initial imperfections. We're committed to enhancing its stability and structure in upcoming releases, ensuring a high-quality. We encourage contributions from everyone, aiming to advance the project further together.\r\n\r\n### [](https://github.com/LyzrCore/lyzr-automata#lyzr-automata---autonomous-multi-agent-framework-for-process-automation)Lyzr Automata - Autonomous Multi-Agent Framework for Process Automation\r\n\r\nLyzr Automata is a sophisticated multi-agent automation framework designed to keep things simple, with a focus on workflow efficiency and effectiveness. It enables the creation of multiple agents that are coupled with specific tasks. The agents and tasks can run independently and complete the provided instructions, thus entering a stable state.\r\n\r\n![Lyzr Automata](https://github.com/LyzrCore/lyzr-automata/assets/136654928/a9f0ecf7-0722-4038-8e3a-f00ce43c882e)\r\n\r\n## 2. Installation\r\nYou can install our package simply by running\r\n\r\n pip install lyzr-automata\r\n\r\n## 3. Understanding fundamentals\r\n\r\nTo make things very simple, we have split our framework into fundamental building blocks.\r\n\r\n 1. Models\r\n 2. Agents\r\n 3. Tools\r\n 4. Tasks\r\n 5. Pipelines\r\n\r\n\r\n### 1. Models\r\n\r\nModels are the core unit of the framework, which helps you connect different LLM or other AI Models to workflows.\r\n\r\nNote: You can use our prebuilt model classes for **OpenAI and Perplexity** or extend our base **AIModel** class to provide support for your own models.\r\n\r\n1.1 *Let's look at an example to create a **OpenAI Model** with parameters*\r\n```python\r\nfrom lyzr_automata.ai_models.openai import OpenAIModel\r\n\r\nopen_ai_text_completion_model = OpenAIModel(\r\n api_key=\"YOUR_OPEN_AI_KEY\",\r\n parameters={\r\n \"model\": \"gpt-4-turbo-preview\",\r\n \"temperature\": 0.2,\r\n \"max_tokens\": 1500,\r\n },\r\n)\r\n``` \r\n\r\n1.2 *Let's look at an example to create a **Perplexity Model** with parameters*\r\n```python\r\nfrom lyzr_automata.ai_models.perplexity import PerplexityModel\r\n\r\nperplexity_model_text = PerplexityModel(\r\n api_key=\"YOUR_KEY_HERE\",\r\n parameters={\r\n \"model\": \"pplx-70b-online\",\r\n },\r\n)\r\n\r\n```\r\n\r\n\r\n### 2. Agents\r\n\r\nAgents are directed specialists which have a set role, persona and memory, they are used to set direction and expertise for LLM models to increase its effectiveness.\r\n\r\n2.1 *Let's look at an example to create a simple linkedin content creator agent.*\r\n\r\n```python \r\nfrom lyzr_automata import Agent\r\n\r\nlinkedin_content_creator_agent = Agent(\r\n role=\"linkedin content creator\",\r\n prompt_persona=\"you are an expert linkedin content creator who holds a Phd in molecular biology and are good at creating engaging linkedin posts.\"\r\n )\r\n```\r\n\r\n### 3. Tools\r\n\r\nTools are used by Agents to complete tasks. In general sense tools help agents to connect with external software components like API's or other functions.\r\n\r\n*Note: You can use our pre-built tools or tools from other providers like **Llama Hub**. Optionally you can also use our base **Tool** class to create your own custom tool by providing the function, input and output Pydantic models.*\r\n\r\n*3.1 Let's look at an example to use prebuilt linkedin post tool*\r\n```python\r\nfrom lyzr_automata.tools.prebuilt_tools import linkedin_image_text_post_tool\r\n\r\nlinkedin_post_tool = linkedin_image_text_post_tool(\r\n owner=\"urn:li:person:\",\r\n token=\"YOUR_TOKEN_HERE\",\r\n)\r\n\r\n```\r\n*3.2 Let's look at an example to use our tool class to create your own custom tool*\r\n ##### 3.2 Step 1. Create a function\r\n\r\n```python\r\n def multiply_numbers(a, b):\r\n \"\"\"\r\n Multiply two numbers.\r\n\r\n Parameters:\r\n - a (int/float): The first number.\r\n - b (int/float): The second number.\r\n\r\n Returns:\r\n - int/float: The product of the two numbers.\r\n \"\"\"\r\n return a * b\r\n```\r\n##### 3.2 Step 2. Create Pydantic input model\r\n\r\n```python\r\n#INPUT\r\nfrom pydantic import BaseModel\r\n\r\nclass MultiplyInput(BaseModel):\r\n\t a: float # Assuming we want to allow floating point numbers\r\n\t b: float\r\n```\r\n##### 3.2 Step 3. Create Pydantic output model\r\n```python\r\n#OUPUT\r\n class MultiplyOutput(BaseModel):\r\n result: float\r\n ```\r\n\r\n##### 3.3 Step 4. Create a tool instance\r\n```python\r\nfrom lyzr_automata import Tool\r\n\r\n multiplication_tool = Tool(\r\n\t\t name=\"Multiplication tool\",\r\n\t\t desc=\"multiplies two numbers\",\r\n\t\t function=multiply_numbers,\r\n\t\t function_input=MultiplyInput,\r\n\t\t function_output=MultiplyOutput,\r\n\t )\r\n```\r\n\r\n### 4. Tasks\r\nTasks are our smallest functioning unit/node that helps you define what do you want to get done by the agent. It combines agent & tools.\r\n\r\n*4.1 Let's look at an example, on how you can define a task*\r\n\r\n\r\n```python\r\nfrom lyzr_automata import Task\r\n\r\nlinkedin_content_writing_task = Task(\r\n\r\n name=\"linkedin content writing\",\r\n agent=linkedin_content_writer_agent,\r\n output_type=OutputType.TEXT,\r\n input_type=InputType.TEXT,\r\n model=open_ai_model_text,\r\n instructions=\"Write a linkedin post on gene editing using CRISPR\",\r\n log_output=True,\r\n enhance_prompt=False,\r\n)\r\n ```\r\n*4.1 Let's look at an example, on how you can create a tool task*\r\n\r\n```python\r\n\tlinkedin_post_task = Task(\r\n\t\t\tname=\"upload post to linkedin\",\r\n\t\t\tmodel=open_ai_model_text,\r\n\t\t\ttool=linkedin_post_tool,\r\n\t\t\tinstructions=\"Post on Linkedin\",\r\n\t)\r\n```\r\n\r\n### 5. Pipelines\r\nPipelines help us run the tasks in a directed orderly fashion. Currently we support linear async pipeline, with plans to release async DAG pipelines in next versions.\r\n\r\nLet us look at a simple sync flow to create a pipeline for automated Linkedin post.\r\n\r\n*5.1 **Flow***\r\n\r\n```mermaid\r\ngraph LR\r\nA((T1. Write Content)) --> B((T2. Publish Content))\r\n```\r\n5.2 **Code**\r\n\r\n```python\r\nfrom lyzr_automata.pipelines.linear_sync_pipeline import LinearSyncPipeline\r\n\r\nLinearSyncPipeline(\r\n name=\"Linkedin post automation pipeline\",\r\n completion_message=\"post successfully posted 🎉\",\r\n tasks=[\r\n linkedin_content_writing_task,\r\n linkedin_post_task,\r\n ],\r\n).run()\r\n```\r\n\r\n\r\n**Example Colabs** \r\n\r\n1. Linkedin Post Automation: https://colab.research.google.com/drive/1lVJrdjHVZjbwZSqwJEU_etHC4GM3ihD0?usp=sharing\r\n2. Blog Automation:\r\nhttps://colab.research.google.com/drive/1e1Qa2pRjbngvX683pXTFLyuqLK11g967?usp=sharing#scrollTo=TmBixqI_BULu\r\n### Join our community \r\n[![Discord](https://img.shields.io/badge/Discord-join%20now-blue.svg?style=flat&logo=Discord)](https://discord.gg/dXmgggHYUz)\r\n\r\n## Contact\r\nFor queries, reach us at contact@lyzr.ai\r\n\r\n\r\n\r\n\r\n","description_content_type":"check Readme file","docs_url":null,"download_url":"","downloads":{"last_day":-1,"last_month":-1,"last_week":-1},"dynamic":null,"home_page":"https://github.com/lyzrcore/lyzr-automata","keywords":"","license":"MIT","license_expression":null,"license_files":null,"maintainer":"","maintainer_email":"","name":"lyzr-automata","package_url":"https://pypi.org/project/lyzr-automata/","platform":null,"project_url":"https://pypi.org/project/lyzr-automata/","project_urls":{"Homepage":"https://github.com/lyzrcore/lyzr-automata"},"provides_extra":null,"release_url":"https://pypi.org/project/lyzr-automata/0.1.3/","requires_dist":["openai ==1.3.4","requests ==2.31.0"],"requires_python":">=3.8.1, <3.12","summary":"low-code multi-agent automation framework","version":"0.1.3","yanked":false,"yanked_reason":null},"last_serial":22373388,"ownership":{"organization":null,"roles":[{"role":"Owner","user":"shreyasKapale"}]},"releases":{"0.1.0":[{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"ef514e72e3b1279a17fe4cbe91bcf35ff12115ba01c715ebb5576e456820dcc8","md5":"02247aadfafdad0d6aea764351d6674b","sha256":"9f66f4ec57fe7e5bef707fcc946bc91e3ba74a6f1d132eb06d6afb5a5777eb5a"},"downloads":-1,"filename":"lyzr-automata-0.1.0.tar.gz","has_sig":false,"md5_digest":"02247aadfafdad0d6aea764351d6674b","packagetype":"sdist","python_version":"source","requires_python":">=3.8.1, <3.12","size":13046,"upload_time":"2024-02-08T08:58:07","upload_time_iso_8601":"2024-02-08T08:58:07.123846Z","url":"https://files.pythonhosted.org/packages/ef/51/4e72e3b1279a17fe4cbe91bcf35ff12115ba01c715ebb5576e456820dcc8/lyzr-automata-0.1.0.tar.gz","yanked":false,"yanked_reason":null}],"0.1.1":[{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"909945d62362340fad63449ab435167b0e17070aeff6984d1c77d21a9ef80204","md5":"428cf93e2cff6506f125c913769091ee","sha256":"33fd42faf7cef2b7c579b4dd2fe5b05aec684105e8ad4187cf61dfa1bcad42f6"},"downloads":-1,"filename":"lyzr-automata-0.1.1.tar.gz","has_sig":false,"md5_digest":"428cf93e2cff6506f125c913769091ee","packagetype":"sdist","python_version":"source","requires_python":">=3.8.1, <3.12","size":13123,"upload_time":"2024-02-08T18:38:22","upload_time_iso_8601":"2024-02-08T18:38:22.659227Z","url":"https://files.pythonhosted.org/packages/90/99/45d62362340fad63449ab435167b0e17070aeff6984d1c77d21a9ef80204/lyzr-automata-0.1.1.tar.gz","yanked":false,"yanked_reason":null}],"0.1.2":[{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"40b280deed8f7f431e23cbaa39d59f04f65857be58c8e47a179588edb325f443","md5":"d92ca8e75f376a07d6e6e21a67820d5b","sha256":"812677657862fc24b0d440261eae8c3cdd2d6c48305c9a06787febc97291defe"},"downloads":-1,"filename":"lyzr-automata-0.1.2.tar.gz","has_sig":false,"md5_digest":"d92ca8e75f376a07d6e6e21a67820d5b","packagetype":"sdist","python_version":"source","requires_python":">=3.8.1, <3.12","size":20504,"upload_time":"2024-02-21T06:00:08","upload_time_iso_8601":"2024-02-21T06:00:08.367525Z","url":"https://files.pythonhosted.org/packages/40/b2/80deed8f7f431e23cbaa39d59f04f65857be58c8e47a179588edb325f443/lyzr-automata-0.1.2.tar.gz","yanked":false,"yanked_reason":null}],"0.1.3":[{"comment_text":"","core-metadata":{"sha256":"139e26e692bccd4144bec43711c3c9b4a34284587dec0dffeba33e9f68d2410a"},"digests":{"blake2b_256":"48c97960464ec2934a0aeac0135d64d00d1701d0d06644b589803ecf298cb935","md5":"2e487ba17bc369be5e8a626f9fb75705","sha256":"0e858bc9d060744e53e48847c6e3907d3fb644f88811584e8fd8a83b0ec9897e"},"downloads":-1,"filename":"lyzr_automata-0.1.3-py3-none-any.whl","has_sig":false,"md5_digest":"2e487ba17bc369be5e8a626f9fb75705","packagetype":"bdist_wheel","python_version":"py3","requires_python":">=3.8.1, <3.12","size":26316,"upload_time":"2024-03-18T15:00:13","upload_time_iso_8601":"2024-03-18T15:00:13.063653Z","url":"https://files.pythonhosted.org/packages/48/c9/7960464ec2934a0aeac0135d64d00d1701d0d06644b589803ecf298cb935/lyzr_automata-0.1.3-py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"6b41beb1808ed2bf0e098b3dabae19a5fe79558fd62eb09b49f6f56f488c0437","md5":"646b37fc087975ffb136e3fb76083324","sha256":"c9643df0e84e685bf9c2040eecef1336707677968707f1a8342b0943dad476c0"},"downloads":-1,"filename":"lyzr-automata-0.1.3.tar.gz","has_sig":false,"md5_digest":"646b37fc087975ffb136e3fb76083324","packagetype":"sdist","python_version":"source","requires_python":">=3.8.1, <3.12","size":21318,"upload_time":"2024-03-18T15:00:20","upload_time_iso_8601":"2024-03-18T15:00:20.682501Z","url":"https://files.pythonhosted.org/packages/6b/41/beb1808ed2bf0e098b3dabae19a5fe79558fd62eb09b49f6f56f488c0437/lyzr-automata-0.1.3.tar.gz","yanked":false,"yanked_reason":null}]},"urls":[{"comment_text":"","core-metadata":{"sha256":"139e26e692bccd4144bec43711c3c9b4a34284587dec0dffeba33e9f68d2410a"},"digests":{"blake2b_256":"48c97960464ec2934a0aeac0135d64d00d1701d0d06644b589803ecf298cb935","md5":"2e487ba17bc369be5e8a626f9fb75705","sha256":"0e858bc9d060744e53e48847c6e3907d3fb644f88811584e8fd8a83b0ec9897e"},"downloads":-1,"filename":"lyzr_automata-0.1.3-py3-none-any.whl","has_sig":false,"md5_digest":"2e487ba17bc369be5e8a626f9fb75705","packagetype":"bdist_wheel","python_version":"py3","requires_python":">=3.8.1, <3.12","size":26316,"upload_time":"2024-03-18T15:00:13","upload_time_iso_8601":"2024-03-18T15:00:13.063653Z","url":"https://files.pythonhosted.org/packages/48/c9/7960464ec2934a0aeac0135d64d00d1701d0d06644b589803ecf298cb935/lyzr_automata-0.1.3-py3-none-any.whl","yanked":false,"yanked_reason":null},{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"6b41beb1808ed2bf0e098b3dabae19a5fe79558fd62eb09b49f6f56f488c0437","md5":"646b37fc087975ffb136e3fb76083324","sha256":"c9643df0e84e685bf9c2040eecef1336707677968707f1a8342b0943dad476c0"},"downloads":-1,"filename":"lyzr-automata-0.1.3.tar.gz","has_sig":false,"md5_digest":"646b37fc087975ffb136e3fb76083324","packagetype":"sdist","python_version":"source","requires_python":">=3.8.1, <3.12","size":21318,"upload_time":"2024-03-18T15:00:20","upload_time_iso_8601":"2024-03-18T15:00:20.682501Z","url":"https://files.pythonhosted.org/packages/6b/41/beb1808ed2bf0e098b3dabae19a5fe79558fd62eb09b49f6f56f488c0437/lyzr-automata-0.1.3.tar.gz","yanked":false,"yanked_reason":null}],"vulnerabilities":[]}