agentscript 0.1.3
A programming language for AI agents
License: Apache 2.0
Requires Python: <4.0,>=3.10

<!-- PROJECT LOGO -->
<br />
<p align="center">
  <!-- <a href="https://github.com/agentsea/skillpacks">
    <img src="https://project-logo.png" alt="Logo" width="80">
  </a> -->

  <h1 align="center">Agentscript</h1>

  <p align="center">
    A programming language for AI agents
    <br />
    <a href="https://github.com/agentsea/agentscript"><strong>Explore the docs »</strong></a>
    <br />
    <br />
    <a href="https://github.com/agentsea/agentscript">View Demo</a>
    ·
    <a href="https://github.com/agentsea/agentscript/issues">Report Bug</a>
    ·
    <a href="https://github.com/agentsea/agentscript/issues">Request Feature</a>
  </p>
  <br>
</p>

Agentscript is an isomorphic programming language for AI agents, it includes both a server-side interpreter and browser-based renderer.

▶ On the server, agenscript directly interprets LMM outputs and executes actions in a streaming manner.

▶ In the browser, agentscript renders LLM outputs in a rich manner and provides live updates.

## Server-side Interpreter

The server-side interpreter is capable of executing actions in a streaming manner, and supplying updates on their results to the UI.

### Install

```bash
pip install agentscript
```

## Usage

Execute the translator tool from Python

```python
from agentscript import Interpreter, Use
from toolfuse import Tool, action

# Create a fake translator tool
class Translator(Tool):
    """A fake translator tool"""

    @action
    def translate(self, text: str) -> str:
        return "Hola"


# Add the tool to the Use command
cmd = Use(tools=[Translator()])

# Create the interpreter supplying our Use command
interpreter = Interpreter(commands=[cmd])

# Parse the script, find the tool, and execute it
interpreter.execute("""
We need to do translation <{"type": "use", "tool": "Translator", "action": "translate", "parameters": {"text": "Hello", "options": {"from": "en", "to": "es"}}}>
""")

# Show the past invocations with the results
print(interpreter.invocations())
```

## Browser-based Renderer

### Install

```
npm i @agentsea/agentscript
```

### Usage

```javascript
import Agentscript from "@agentsea/agentscript";

(
  <Agentscript text="I created this image for you <Image url='https://any.url' />" url="...">
)
```

### Components

#### Boolean

```js
(
  <Agentscript text="Does this work for you? <Boolean />" >
)
```

#### Image

```js
(
  <Agentscript text="I created this image for you <Image src='https://any.url' />"">
)
```

#### Invoke

```js
(
  <Agentscript text='Lets check the weather <Invoke tool="Weather" action="get" parameters={"location": "Madrid"} />'>
)
```

## Dialects

The above components are known as the `common` dialect, but you can create your own dialects as well

## Roadmap

### Programable LLMs

Give agentscript the ability to program an LLM. Here we load a LoRA into a PEFT compatible LLM

```python
interpreter.execute("I need to load the weather LoRA <Load lora='weather' />")
```

### Browser components

- [ ] Select One
- [ ] Select Any
- [ ] Video
- [ ] Plan
- [ ] References
- [ ] Image with bounding box
- [ ] Task
- [ ] Markdown
- [ ] Code blocks

## Develop

To test

```sh
make test
```

To publish

```sh
make publish
```