Skip to main content

Vital Agent Container SDK

Project description

Vital Agent Container Python SDK

Python 3.12+ License Code style: black

A Python SDK that provides infrastructure components for building AI agent applications with WebSocket-based communication and asynchronous message processing.

Features

  • 🚀 FastAPI-based WebSocket server with real-time communication
  • 🔄 Asynchronous message processing with task management
  • 🛡️ Production-ready with structured logging and health checks
  • 🔌 Plugin architecture for custom message handlers
  • ☁️ Cloud-ready with flexible deployment options
  • 📊 Streaming support for real-time data flows
  • Task cancellation and interruption handling

Installation

Install from PyPI (when published)

pip install vital-agent-container-sdk

Install from Source

Using Conda (Recommended for Development)

# Clone the repository
git clone https://github.com/vital-ai/vital-agent-container-python.git
cd vital-agent-container-python

# Create environment from environment.yml
conda env create -f environment.yml
conda activate vital-agent-container

# Install in development mode
pip install -e .

Using pip

# Clone the repository
git clone https://github.com/vital-ai/vital-agent-container-python.git
cd vital-agent-container-python

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in development mode
pip install -e .

Configuration

  1. Copy the configuration template:

    cp agent_config.yaml.template agent_config.yaml
    
  2. Copy the environment template:

    cp .env.example .env
    
  3. Update both files with your specific configuration.

Usage

Basic Implementation

Create a custom message handler by implementing the AIMPMessageHandlerInf interface:

from vital_agent_container.handler.aimp_message_handler_inf import AIMPMessageHandlerInf
from vital_agent_container.agent_container_app import AgentContainerApp

class MyMessageHandler(AIMPMessageHandlerInf):
    async def process_message(self, config, client, websocket, data, started_event):
        # Your custom message processing logic here
        # Process the incoming message data
        message = json.loads(data)
        
        # Perform your agent logic
        response = await self.handle_agent_request(message)
        
        # Send response back through websocket
        await websocket.send_text(json.dumps(response))
        
        # Signal that processing has started
        started_event.set()
    
    async def handle_agent_request(self, message):
        # Implement your specific agent logic here
        return {"status": "processed", "result": "Agent response"}

# In your application's main module:
def create_agent_app():
    handler = MyMessageHandler()
    return AgentContainerApp(handler, app_home=".")

# Your application can then run the agent container
if __name__ == "__main__":
    import uvicorn
    app = create_agent_app()
    uvicorn.run(app, host="0.0.0.0", port=8000)

Message Format

Applications using this library will receive messages in the following format through the WebSocket connection:

[{
  "type": "message",
  "http://vital.ai/ontology/vital-aimp#hasIntent": "process",
  "content": "Your message content"
}]

Your message handler implementation should parse and respond to these messages according to your agent's logic.

Development

Setup Development Environment

# Install with development dependencies
make install-dev

# Or manually
pip install -e ".[dev]"
pre-commit install

Available Make Commands

make help           # Show available commands
make test           # Run tests
make test-cov       # Run tests with coverage
make lint           # Run linting
make format         # Format code
make build          # Build package

Code Quality

This project uses:

  • Black for code formatting
  • isort for import sorting
  • flake8 for linting
  • mypy for type checking
  • pre-commit hooks for automated checks

API Endpoints

  • GET /health - Health check endpoint
  • WebSocket /ws - Main WebSocket endpoint for message processing

Architecture

├── vital_agent_container/
│   ├── agent_container_app.py      # Main FastAPI application
│   ├── handler/                    # Message handler interfaces
│   ├── processor/                  # Message processing logic
│   ├── tasks/                      # Task management
│   ├── streaming/                  # Streaming response handling
│   └── utils/                      # Utility functions
├── agent_config.yaml               # Agent configuration
├── environment.yml                 # Conda environment
└── pyproject.toml                  # Modern Python project config

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes and add tests
  4. Run the test suite: make test
  5. Format your code: make format
  6. Submit a pull request

License

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

Support

For questions and support, please open an issue on the GitHub repository.

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

vital_agent_container_sdk-0.1.15.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vital_agent_container_sdk-0.1.15-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

Details for the file vital_agent_container_sdk-0.1.15.tar.gz.

File metadata

File hashes

Hashes for vital_agent_container_sdk-0.1.15.tar.gz
Algorithm Hash digest
SHA256 aee630aaab08b5b4600ee3b7cca335af1258f27e10c64ed2609bd7bc02cf8cde
MD5 11d87fd05221fc1a37699271f4044f06
BLAKE2b-256 2987c2710492317dbfb26e91dc94401654e297db0cdd525b9e9a7d17cd29a440

See more details on using hashes here.

File details

Details for the file vital_agent_container_sdk-0.1.15-py3-none-any.whl.

File metadata

File hashes

Hashes for vital_agent_container_sdk-0.1.15-py3-none-any.whl
Algorithm Hash digest
SHA256 ef7a17064fe1c2f728b531dc02fe58a9b82be797d4f9d6dc0d7577b4c788a5bc
MD5 466c71bb4c626a60d70af9dceca24aec
BLAKE2b-256 3594ad1ca6bb161dc43e904f2a37f686954b2b4c4fbc93b9c2eb90f88d03600b

See more details on using hashes here.

Supported by

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