octopus-planning / README.md
runningSnail's picture
wip
f8e536d
|
raw
history blame
3.43 kB
metadata
license: cc-by-nc-4.0

Octo-planner: On-device Language Model for Planner-Action Agents Framework

We're thrilled to introduce the Octo-planner, the latest breakthrough in on-device language models from Nexa AI. Developed for the Planner-Action Agents Framework, Octo-planner enables rapid and efficient planning without the need for cloud connectivity, this model together with Octopus-V2 can work on edge devices locally to support AI Agent usages.

Key Features of Octo-planner:

  • Efficient Planning: Utilizes fine-tuned plan model based on Phi-3 Mini (2.51 billion parameters) for high efficiency and low power consumption.
  • Agent Framework: Separates planning and action, allowing for specialized optimization and improved scalability.
  • Enhanced Accuracy: Achieves a planning success rate of 98.1% on benchmark dataset, providing reliable and effective performance.
  • On-device Operation: Designed for edge devices, ensuring fast response times and enhanced privacy by processing data locally.

Example Usage

Below is a demo of Octo-planner:

ondevice

Run below code to use Octopus Planner for a given question:

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "NexaAIDev/octopus-planning"
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(model_id)

question = "Find my presentation for tomorrow's meeting, connect to the conference room projector via Bluetooth, increase the screen brightness, take a screenshot of the final summary slide, and email it to all participants"
inputs = f"<|user|>{question}<|end|><|assistant|>"
input_ids = tokenizer(inputs, return_tensors="pt").to(model.device)
outputs = model.generate(
        input_ids=input_ids["input_ids"], 
        max_length=1024,
        do_sample=False)
res = tokenizer.decode(outputs.tolist()[0])
print(f"=== inference result ===\n{res}")

Training Data

We wrote 10 Android API descriptions to used to train the models, see this file for details. Below is one Android API description example

def send_email(recipient, title, content):
    """
    Sends an email to a specified recipient with a given title and content.

    Parameters:
    - recipient (str): The email address of the recipient.
    - title (str): The subject line of the email. This is a brief summary or title of the email's purpose or content.
    - content (str): The main body text of the email. It contains the primary message, information, or content that is intended to be communicated to the recipient.
    """

Contact Us

For support or to provide feedback, please contact us.

License and Citation

Refer to our license page for usage details. Please cite our work using the below reference for any academic or research purposes.

@article{nexa2024octopusplanner,
  title={Planner-Action Agents Framework for On-device Small Language Models},
  author={Nexa AI Team},
  journal={ArXiv},
  year={2024},
  volume={abs/2404.11459}
}