Sirji is an agentic AI framework for software development.
Built with ❤️ by True Sparrow
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.
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 the package from PyPi:
pip install sirji-messages
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}")
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)
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)
Efficiently manage parsing and validation errors with custom exceptions for improved error handling and debugging.
from sirji_messages import MessageIncorrectFormatError, MessageMultipleActionError, MessageUnRecognizedActionError, MessageMissingPropertyError, MessageLengthConstraintError, message_parse
try:
# Attempt parsing an incorrectly formatted message
message_parse("INCORRECT_FORMAT")
except MessageParsingError as e:
print(f"Parsing Error: {e}")
except MessageIncorrectFormatError as e:
print(f"Incorrect Format Error: {e}")
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']
- 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 .
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
Distributed under the MIT License. See LICENSE
for more information.