This repository includes an example of a First Class Swarmauri Example.
Project description
Swarmauri Tool · Sentence Complexity
A Swarmauri NLP tool that evaluates sentence complexity by measuring average sentence length and estimating clause counts. Use it to monitor writing style, enforce readability requirements, or trigger editorial suggestions in agents.
- Tokenizes text with NLTK to compute sentence and word counts.
- Approximates clause density via punctuation and coordinating/subordinating conjunctions.
- Returns structured metrics suitable for analytics dashboards or conversational feedback.
Requirements
- Python 3.10 – 3.13.
nltk(downloads thepunkt_tabtokenizer data on first import).- Core Swarmauri dependencies (
swarmauri_base,swarmauri_standard,pydantic).
Installation
Choose the packaging workflow that matches your project; each command resolves the dependencies.
pip
pip install swarmauri_tool_sentencecomplexity
Poetry
poetry add swarmauri_tool_sentencecomplexity
uv
# Add to the current project and update uv.lock
uv add swarmauri_tool_sentencecomplexity
# or install into the active environment without modifying pyproject.toml
uv pip install swarmauri_tool_sentencecomplexity
Tip: Pre-download the NLTK tokenizer resources in deployment images (
python -m nltk.downloader punkt_tab) to avoid runtime network calls.
Quick Start
from swarmauri_tool_sentencecomplexity import SentenceComplexityTool
text = "This is a simple sentence. This is another sentence, with a clause."
complexity_tool = SentenceComplexityTool()
result = complexity_tool(text)
print(result)
# {
# 'average_sentence_length': 7.5,
# 'average_clauses_per_sentence': 1.5
# }
The tool raises ValueError when the input text is empty or whitespace.
Usage Scenarios
Flag Long Sentences During Editing
from swarmauri_tool_sentencecomplexity import SentenceComplexityTool
complexity = SentenceComplexityTool()
article = Path("drafts/whitepaper.txt").read_text(encoding="utf-8")
metrics = complexity(article)
if metrics["average_sentence_length"] > 25:
print("Consider splitting long sentences to improve readability.")
Integrate With a Swarmauri Agent for Style Coaching
from swarmauri_core.agent.Agent import Agent
from swarmauri_core.messages.HumanMessage import HumanMessage
from swarmauri_standard.tools.registry import ToolRegistry
from swarmauri_tool_sentencecomplexity import SentenceComplexityTool
registry = ToolRegistry()
registry.register(SentenceComplexityTool())
agent = Agent(tool_registry=registry)
message = HumanMessage(content="Analyze the complexity of: 'While the system scales, it may introduce latency delays.'")
response = agent.run(message)
print(response)
Compare Versions of a Document Over Time
from swarmauri_tool_sentencecomplexity import SentenceComplexityTool
complexity = SentenceComplexityTool()
versions = {
"draft": open("draft.txt").read(),
"final": open("final.txt").read(),
}
for label, text in versions.items():
metrics = complexity(text)
print(f"{label}: {metrics['average_sentence_length']:.1f} words, {metrics['average_clauses_per_sentence']:.2f} clauses")
Track whether edits are making the writing clearer or more complex.
Troubleshooting
LookupError: Resource punkt_tab not found– Runpython -m nltk.downloader punkt_tabbefore executing the tool, especially in offline environments.- Low clause counts for technical prose – The heuristic relies on commas/semicolons and common conjunctions; adjust or extend the tool if you need domain-specific parsing.
- Non-English text – Tokenization models are optimized for English. Supply language-appropriate tokenizers before using the tool for other languages.
License
swarmauri_tool_sentencecomplexity is released under the Apache 2.0 License. See LICENSE for details.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file swarmauri_tool_sentencecomplexity-0.9.2.dev7.tar.gz.
File metadata
- Download URL: swarmauri_tool_sentencecomplexity-0.9.2.dev7.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69cd872f181643fcb017fbf504674ee01dfd0a29b8ddbe8d36e317566e465b9e
|
|
| MD5 |
692219602b65642655f4cfcfb38284f5
|
|
| BLAKE2b-256 |
02c0cb0960499d9cfd5ae444070dab13d508eb4d53ba8612bca23932cc66db20
|
File details
Details for the file swarmauri_tool_sentencecomplexity-0.9.2.dev7-py3-none-any.whl.
File metadata
- Download URL: swarmauri_tool_sentencecomplexity-0.9.2.dev7-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16824bb7a2cc551d1c0012c59a54dec3ad46c66efea5789c35129f3364089a02
|
|
| MD5 |
b31a84cd70ee141c05617a7d107e468b
|
|
| BLAKE2b-256 |
1cac51daa16e4e566bc2bb076c5013658f52891655c717a47453518d82abc38b
|