Skip to main content

A simple framework for coordinating classical compute and LLM-based tasks.

Project description

PlanAI

PyPI version License Python Versions Documentation Status

PlanAI is an innovative system designed for complex task automation through a sophisticated graph-based architecture. It integrates traditional computations and cutting-edge AI technologies to enable versatile and efficient workflow management.

Table of Contents

Key Features

  • Graph-Based Architecture: Construct dynamic workflows comprising interconnected TaskWorkers for highly customizable automation.
  • Hybrid TaskWorkers: Combine conventional computations (e.g., API calls) with powerful LLM-driven operations, leveraging Retrieval-Augmented Generation (RAG) capabilities.
  • Type Safety with Pydantic: Ensure data integrity and type consistency across workflows with Pydantic-validated input and output.
  • Intelligent Data Routing: Utilize type-aware routing to efficiently manage data flow between nodes, adapting to multiple downstream consumers.
  • Input Provenance Tracking: Trace the lineage and origin of each Task as it flows through the workflow, enabling detailed analysis and debugging of complex processes.

Requirements

  • Python 3.10+
  • Poetry (for development)

Installation

You can install PlanAI using pip:

pip install planai

For development, clone the repository and install dependencies:

git clone https://github.com/provos/planai.git
cd planai
poetry install

Usage

PlanAI allows you to create complex, AI-enhanced workflows using a graph-based architecture. Here's a basic example:

from planai import Graph, TaskWorker, Task, LLMTaskWorker, llm_from_config

# Define custom TaskWorkers
class CustomDataProcessor(TaskWorker):
    output_types: List[Type[Task]] = [ProcessedData]

    def consume_work(self, task: RawData):
        processed_data = self.process(task.data)
        self.publish_work(ProcessedData(data=processed_data))

# Define an LLM-powered task
class AIAnalyzer(LLMTaskWorker):
    prompt: str ="Analyze the provided data and derive insights"
    output_types: List[Type[Task]] = [AnalysisResult]

    def consume_work(self, task: ProcessedData):
        super().consume_work(task)

# Create and run the workflow
graph = Graph(name="Data Analysis Workflow")
data_processor = CustomDataProcessor()
ai_analyzer = AIAnalyzer(
   llm=llm_from_config(provider="openai", model_name="gpt-4"))

graph.add_workers(data_processor, ai_analyzer)
graph.set_dependency(data_processor, ai_analyzer)

initial_data = RawData(data="Some raw data")
graph.run(initial_tasks=[(data_processor, initial_data)])

Monitoring Dashboard

PlanAI includes a built-in web-based monitoring dashboard that provides real-time insights into your graph execution. This feature can be enabled by setting run_dashboard=True when calling the graph.run() method.

Key features of the monitoring dashboard:

  • Real-time Updates: The dashboard uses server-sent events (SSE) to provide live updates on task statuses without requiring page refreshes.
  • Task Categories: Tasks are organized into three categories: Queued, Active, and Completed, allowing for easy tracking of workflow progress.
  • Detailed Task Information: Each task displays its ID, type, and assigned worker. Users can click on a task to view additional details such as provenance and input provenance.

To enable the dashboard:

graph.run(initial_tasks, run_dashboard=True)

When enabled, the dashboard will be accessible at http://localhost:5000 by default. The application will continue running until manually terminated, allowing for ongoing monitoring of long-running workflows.

Note: Enabling the dashboard will block the main thread, so it's recommended for development and debugging purposes. For production use, consider implementing a separate monitoring solution.

Advanced Features

PlanAI supports advanced features like:

  • Caching results with CachedTaskWorker
  • Joining multiple task results with JoinedTaskWorker
  • Integrating with various LLM providers (OpenAI, Ollama, etc.)

For more detailed examples and advanced usage, please refer to the examples/ directory in the repository.

Documentation

Full documentation for PlanAI is available at https://docs.getplanai.com/

Contributing

We welcome contributions to PlanAI! Please see our Contributing Guide for more details on how to get started.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

For any questions or support, please open an issue on our GitHub issue tracker.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

planai-0.1.3.tar.gz (33.6 kB view details)

Uploaded Source

Built Distribution

planai-0.1.3-py3-none-any.whl (40.9 kB view details)

Uploaded Python 3

File details

Details for the file planai-0.1.3.tar.gz.

File metadata

  • Download URL: planai-0.1.3.tar.gz
  • Upload date:
  • Size: 33.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.12 Linux/5.15.153.1-microsoft-standard-WSL2

File hashes

Hashes for planai-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0095198a88d2972593ec55ad33be213e14ab28e2acdf11c8a26689e3586f7f14
MD5 18509e41874b8bfe95c5426fa08fabbe
BLAKE2b-256 cf1b66758f5252d5fc960a4d19691bfe2938b450f4fee8405147c58826e54cb5

See more details on using hashes here.

File details

Details for the file planai-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: planai-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 40.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.12 Linux/5.15.153.1-microsoft-standard-WSL2

File hashes

Hashes for planai-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 24801aa82f89f99387489baffac13d06dbee01094ee357956d3af0d03f4a7e77
MD5 2b05f554d31682158493a0e52e584458
BLAKE2b-256 faef59b9910fa9b99e22d194eba9dc95fd763b6c5fb7b1a34c0a9f20d9b2707f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page