Sirji messaging protocol implementation to create, validate and parse messages.
Project description
Sirji is an agentic AI framework for software development.
Built with ❤️ by True Sparrow
Sirji Messages
sirji-messages
is a PyPI package that implements the Sirji messaging protocol with the following highlights:
- Message Factory: A factory that provides a Message class for a given action.
- Message Parser: Parse structured message strings into Python dictionaries for easy access to the message components.
- Allowed Response Templates: Provides the part of the system prompt describing allowed Response Templates for a given agent pair.
- Custom Exceptions: A set of custom exceptions thrown by the message parser.
- Enums for Agents and Actions: Provides easy auto-completion while writing code.
Installation
Setup Virtual Environment
We recommend setting up a virtual environment to isolate Python dependencies, ensuring project-specific packages without conflicting with system-wide installations.
python3 -m venv venv
source venv/bin/activate
Install Package
Install the package from PyPi:
pip install sirji-messages
Usage
Message Factory
A factory that provides a Message class for a given action.
from sirji_messages import MessageFactory, ActionEnum
# Message class instantiation from an action enum
message_class = MessageFactory[ActionEnum.RESPONSE.name]
print(f"Sample RESPONSE message:\n{message_class().sample()}")
# Generate message using passed template variables
message_str = message_class().generate({
"from_agent_id": "EXECUTOR",
"to_agent_id": "CODER",
"summary": "Empty",
"body": "Done."})
print(f"Generated RESPONSE message:\n{message_str}")
Message Parsing
Parse structured message strings into Python dictionaries for easy access to the message components.
from sirji_messages import message_parse
# Example message string to parse
message_str = """***
FROM: EXECUTOR
TO: CODER
ACTION: RESPONSE
SUMMARY: Welcome to sirji-messages
BODY: Welcome to sirji-messages. Here's how you can start.
***"""
# Parsing the message
message = message_parse(message_str)
print(message)
Allowed Response Templates
Provides the part of the system prompt describing allowed Response Templates for a given agent pair.
from sirji_messages import allowed_response_templates, AgentEnum
# Generate allowed response templates
response_templates_str = allowed_response_templates(AgentEnum.ANY, AgentEnum.EXECUTOR)
print(response_templates_str)
Handling Custom Exceptions
Efficiently manage parsing and validation errors with custom exceptions for improved error handling and debugging.
from sirji_messages import MessageParsingError, MessageValidationError, message_parse
try:
# Attempt parsing an incorrectly formatted message
message_parse("INCORRECT_FORMAT")
except MessageParsingError as e:
print(f"Parsing Error: {e}")
except MessageValidationError as e:
print(f"Validation Error: {e}")
Enums for Agents and Actions
Use enums (ActionEnum
, AgentEnum
) to reference actions and agent types programmatically, enhancing code clarity and reducing errors.
from sirji_messages import ActionEnum, AgentEnum
# Example usage of enums for action and agent reference
action = ActionEnum.INVOKE_AGENT
agent = AgentEnum.ORCHESTRATOR
# Accessing enum properties
print(f"Action: {action.name}, Agent: {agent.full_name}")
# Access to enums using [] is also possible
action = ActionEnum['INVOKE_AGENT']
agent = AgentEnum['ORCHESTRATOR']
For Contributors
- Fork and clone the repository.
- Create and activate the virtual environment as described above.
- Install the package in editable mode by running the following command from repository root:
pip install -e .
Running Tests and Coverage Analysis
Follow the above mentioned steps for "contributors", before running the test cases.
# Install testing dependencies
pip install pytest coverage
# Execute tests
pytest
# Measure coverage, excluding test files
coverage run --omit="tests/*" -m pytest
coverage report
License
Distributed under the MIT License. See LICENSE
for more information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for sirji_messages-0.0.30-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ab6ce05955f4974773b70cde2bd83cae3261b0b96f325069090095a1e91840a |
|
MD5 | 1c0d87620ca53e12f7211a73a2d0b0db |
|
BLAKE2b-256 | fd71e3295abe001e20063d781e62bfa1f7e5eb76eb4321f9da81f31d63754a95 |