Metadata-Version: 2.1
Name: iauto-server
Version: 0.1.0
Summary: iauto-server is a server for iauto
Home-page: https://github.com/shellc/ia-desktop
Author: shellc
Author-email: shenggong.wang@gmail.com
License: MIT
Keywords: AI,Automation,LLM,RPA
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: iauto

# iauto

`iauto` is a Python library for intelligent automation.

## Key Features

* **Workflow Orchestration**: Defining workflow using YAML, for collaboration and version control
* **Playwright Integration**: Automate web workflows with Playwright
* **Appium Integration**: Automate web, iOS, Android, Windows, and macOS workflows with Appium
* **LLMs Integration**: Integrate AI into automated workflows, support OpenAI API and self-hosting LLMs

### Roadmap

* **pyautogui Integration**: Cross-platform keyboard and mouse control
* **OCR**: Support ORC-based screen element recognition
* **OpenAI Assistants API**: Support Orchestrating OpenAI Assistants API

## Quick Start

### Installation

Python version requirement: >=3.8

`iauto` can be installed from PyPI using `pip`. It is recommended to create a new virtual environment before installation to avoid conflicts.

```bash
pip install -U iauto
```

To enable cuBLAS acceleration on NVIDIA GPU:

```bash
CMAKE_ARGS="-DGGML_CUBLAS=ON" pip install -U iauto
```

To enable Metal on Apple silicon devices:

```bash
CMAKE_ARGS="-DGGML_METAL=ON" pip install -U iauto
```

### Playbook

Automate your workflow by writing a playbook.

**Example: Web automation**

`browser.yaml`

```yaml
playbook:
  description: Open browser and goto https://bing.com
  actions:
    - browser.open:
        args:
          exec: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
        result: $browser
    - browser.goto:
        args:
          browser: $browser
          url: https://bing.com
        result: $page
    - repeat:
        actions:
          - browser.eval:
              args:
                page: $page
                javascript: new Date()
              result: $now
          - log: $now
          - time.wait: 2
```

Run the playbook:

```bash
python -m iauto ./browser.yaml
```

**Example: Chatbot**

`chatbot.yaml`:

```yaml
playbook:
  description: Chat to OpenAI
  actions:
    - llm.session:
        result: $session
    - repeat:
        actions:
          - shell.prompt:
              args: "Human: "
              result: $prompt
          - llm.chat:
              args:
                session: $session
                prompt: $prompt
              result: $message
          - shell.print: "AI: {$message}"
```

Set your OpenAI API key:

```bash
export OPENAI_API_KEY=sk-<YOUR_API_KEY>
```

Run the playbook:

```bash
python -m iauto ./chatbot.yaml
```

**[More example playbooks](./playbooks)**

* [Control Flow](./playbooks/control_flow.yaml)
* [Appium Webdriver](./playbooks/webdriver.yaml)
* [Playwright Browser](./playbooks/browser.yaml)
* [OpenAI REPL Chatbot](./playbooks/openai_repl.yaml)
* [ChatGLM REPL Chatbot](./playbooks/chatglm_repl.yaml)
* [QWen REPL Chatbot](./playbooks/qwen_repl.yaml)

## Contribution

We are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation.

### Development setup

* Code Style: [PEP-8](https://peps.python.org/pep-0008/)
* Docstring Style: [Google Style](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html)

```bash
# Create python venv
python -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt

# Apply autopep8, isort and flake8 as pre commit hooks
pre-commit install
```
### Build

```bash
./build.sh
```

## License

MIT
