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.16.tar.gz (22.8 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.16-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for vital_agent_container_sdk-0.1.16.tar.gz
Algorithm Hash digest
SHA256 7498b15bac8298f400175a73590596b1ddfd500c269ca5778381fbfcedaa2c63
MD5 da4d3c4b670ee749270756187e38bb4f
BLAKE2b-256 3f5b144da8cf2df8a513ec7045854dc9fe1998331b0ef1ddd47fdb222ab50926

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for vital_agent_container_sdk-0.1.16-py3-none-any.whl
Algorithm Hash digest
SHA256 9bea7a2f1f37924d7d6524947721cbc92c040655c824496fcac672464a7873c2
MD5 fb242438d4ee073cde4f12206a0f326c
BLAKE2b-256 173a97a810cd5e500fd861b05193d7ca720f77c8d82d539eca7948686ce98984

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