Transform LLM Agents into High-Performance Engines with DAG optimization
Project description
Tygent Python - Speed & Efficiency Layer for AI Agents
Transform your existing AI agents into high-performance engines with intelligent parallel execution and optimized scheduling. Tygent aims to speed up workflows and reduce costs with no code changes required.
Quick Start
Installation
pip install tygent
Basic Usage - Accelerate Any Function
from tygent import accelerate
# Your existing code
def research_topic(topic):
# Your existing research logic
return {"summary": f"Research on {topic}"}
# Wrap the function to run via Tygent's scheduler
accelerated_research = accelerate(research_topic)
result = accelerated_research("AI trends")
Multi-Agent System
import asyncio
from tygent import MultiAgentManager
# Create manager
manager = MultiAgentManager("customer_support")
# Add agents to the system
class AnalyzerAgent:
def analyze(self, question):
return {"intent": "password_reset", "keywords": ["reset", "password"]}
class ResearchAgent:
def search(self, keywords):
return {"help_docs": ["Reset guide", "Account recovery"]}
manager.add_agent("analyzer", AnalyzerAgent())
manager.add_agent("researcher", ResearchAgent())
# Execute with optimized communication
result = asyncio.run(
manager.execute({"question": "How do I reset my password?"})
)
Key Features
- ๐ Speed Improvement: Intelligent parallel execution of independent operations
- ๐ฐ Cost Reduction: Optimized token usage and API call batching
- ๐ง Zero Code Changes: Drop-in acceleration for existing functions and agents
- ๐ง Smart DAG Optimization: Automatic dependency analysis and parallel scheduling
- ๐ Dynamic Adaptation: Runtime DAG modification based on conditions and failures
- ๐ฏ Multi-Framework Support: Works with CrewAI, HuggingFace, Google AI, and custom agents
- ๐ Plan Parsing: Build DAGs directly from framework plans or dictionaries
Architecture
Tygent uses Directed Acyclic Graphs (DAGs) to model and optimize your agent workflows:
Your Sequential Code: Tygent Optimized:
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Step 1 โ โ Step 1 โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโฌโโโโโโโโ
โ Step 2 โ โ โ Step 2 โStep 3 โ (Parallel)
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโดโโโโโโโโ
โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Step 3 โ โ Step 4 โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
Advanced Usage
Dynamic DAG Modification
from tygent import accelerate
from tygent.adaptive_executor import AdaptiveExecutor
# Workflow that adapts to failures and conditions
@accelerate
async def travel_planning_workflow(destination):
# Tygent automatically handles:
# - API failures with fallback services
# - Conditional branching based on weather
# - Resource-aware execution adaptation
weather = await get_weather(destination) # Primary API
# Auto-fallback to backup_weather_service if primary fails
if weather["condition"] == "rain":
# Dynamically adds indoor alternatives node
recommendations = await get_indoor_alternatives(destination)
else:
recommendations = await get_outdoor_activities(destination)
return recommendations
Integration Examples
Example: Accelerating a LangChain Agent
from tygent import accelerate
# Your existing LangChain agent
class MockLangChainAgent:
def run(self, query):
return f"LangChain response to: {query}"
agent = MockLangChainAgent()
# Accelerate it
accelerated_agent = accelerate(agent)
result = accelerated_agent.run("Analyze market trends")
Custom Multi-Agent System
import asyncio
from tygent import DAG, LLMNode, MultiAgentManager, ToolNode
# Create a DAG for manual workflow control
dag = DAG("content_generation")
def research_function(inputs):
return {"research_data": f"Data about {inputs.get('topic', 'general')}"}
class SimpleLLMNode(LLMNode):
async def execute(self, inputs):
# Normally this would call an LLM; here we just format text
return {"outline": f"Outline for {inputs.get('research_data', '')}"}
dag.add_node(ToolNode("research", research_function))
dag.add_node(SimpleLLMNode("outline"))
dag.add_edge("research", "outline")
result = asyncio.run(dag.execute({"topic": "AI trends"}))
Parsing Plans
Tygent can convert structured plans into executable DAGs with parse_plan.
from tygent import Scheduler, accelerate, parse_plan
plan = {
"name": "math",
"steps": [
{"name": "add", "func": add_fn, "critical": True},
{"name": "mult", "func": mult_fn, "dependencies": ["add"]},
],
}
# Build a DAG manually
dag, critical = parse_plan(plan)
scheduler = Scheduler(dag)
scheduler.priority_nodes = critical
# Or accelerate the plan directly (works with frameworks exposing `get_plan`)
run_plan = accelerate(plan)
Testing
Running Tests
Make sure to install the package in editable mode before executing the tests.
# Install test dependencies
pip install pytest pytest-asyncio
# Install package in development mode
pip install -e .
# Run core tests (always pass)
pytest tests/test_dag.py tests/test_multi_agent.py -v
# Run all tests
pytest tests/ -v
# Run with coverage
pytest tests/ --cov=tygent --cov-report=html
Test Coverage
Our test suite covers:
- Core DAG functionality: Node management, topological sorting, parallel execution
- Multi-agent communication: Message passing, agent orchestration, conversation history
- Async operations: Proper async/await handling, concurrent execution
- Error handling: Graceful failure recovery, fallback mechanisms
Current Status: 14/14 core tests passing โ
Recent Test Fixes (v1.1)
- Fixed Message interface to match TypedDict implementation
- Corrected async timestamp handling using
asyncio.get_event_loop().time() - Added pytest.ini configuration for proper async test support
- Updated MultiAgentManager constructor calls with required name parameter
- Removed dependencies on non-existent classes (AgentRole, OptimizationSettings)
CI/CD
GitHub Actions workflow automatically runs:
- Multi-version testing: Python 3.8, 3.9, 3.10, 3.11
- Multi-platform: Ubuntu, macOS, Windows
- Code quality: flake8 linting, black formatting, mypy type checking
- Package building: Automated wheel and source distribution creation
- PyPI publishing: Automatic publishing on main branch pushes
- Coverage reporting: HTML and LCOV coverage reports
Triggers: Every push and pull request to main/develop branches
Framework Integrations
Supported Frameworks
- CrewAI: Multi-agent coordination
- Microsoft Semantic Kernel: Plugin optimization
- LangSmith: Experiment tracking integration
- LangFlow: Visual workflow authoring
- Custom Agents: Universal function acceleration
External Service Integrations
- OpenAI: GPT-4, GPT-3.5-turbo optimization
- Google AI: Gemini model integration
- Microsoft Azure: Azure OpenAI service
- Salesforce: Einstein AI and CRM operations
- HuggingFace: Transformer models
Performance Benchmarks
Benchmark tests live under tests/benchmarks/ and compare sequential
execution with Tygent's scheduler. Typical results on a small DAG of four
dependent tasks:
| Scenario | Time (s) |
|---|---|
| Sequential execution | ~0.70 |
| Scheduler (1 worker) | ~0.72 |
| Scheduler (2 workers) | ~0.52 |
Run the benchmarks using:
pip install -e .
pytest tests/benchmarks/ -v
Development
Project Structure
tygent-py/
โโโ tygent/
โ โโโ __init__.py # Main exports
โ โโโ accelerate.py # Core acceleration wrapper
โ โโโ dag.py # DAG implementation
โ โโโ nodes.py # Node types (Tool, LLM, etc.)
โ โโโ scheduler.py # Execution scheduler
โ โโโ multi_agent.py # Multi-agent system
โ โโโ adaptive_executor.py # Dynamic DAG modification
โ โโโ integrations/ # Framework integrations
โโโ tests/ # Test suite
โโโ examples/ # Usage examples
โโโ docs/ # Documentation
Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Install development dependencies:
pip install -e ".[dev]" - Run tests:
pytest tests/ -v - Commit changes:
git commit -am 'Add feature' - Push to branch:
git push origin feature-name - Submit a pull request
Code Quality
- Type hints: Full type annotation coverage
- Testing: Comprehensive test suite with >90% coverage
- Linting: Black formatting, flake8 compliance
- Documentation: Detailed docstrings and examples
License
Creative Commons Attribution-NonCommercial 4.0 International License.
See LICENSE for details.
Support
- Documentation: https://tygent.ai/docs
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@tygent.ai
Transform your agents. Accelerate your AI.
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
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 tygent-0.3.0.tar.gz.
File metadata
- Download URL: tygent-0.3.0.tar.gz
- Upload date:
- Size: 36.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a9f1d5a3af3b559c876cb6c7926a634468ca8dd502ff7e8ab03ea0a8e9bfa82
|
|
| MD5 |
232c24b3c166363129c22b9e38513235
|
|
| BLAKE2b-256 |
9e00c7f7adbbf01692462bcf635d8ea6a14f3277e4951609ced9dc9a14d681c4
|
Provenance
The following attestation bundles were made for tygent-0.3.0.tar.gz:
Publisher:
python-publish.yml on tygent0/tygent-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tygent-0.3.0.tar.gz -
Subject digest:
0a9f1d5a3af3b559c876cb6c7926a634468ca8dd502ff7e8ab03ea0a8e9bfa82 - Sigstore transparency entry: 246562674
- Sigstore integration time:
-
Permalink:
tygent0/tygent-py@02241896ae00aad2b759b3f640793ba6db6f8c79 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/tygent0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@02241896ae00aad2b759b3f640793ba6db6f8c79 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tygent-0.3.0-py3-none-any.whl.
File metadata
- Download URL: tygent-0.3.0-py3-none-any.whl
- Upload date:
- Size: 37.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca1dc5ee78d1a1f636be2ba1c02d6b943c494cd670fc5dcaeec8e4515565e25d
|
|
| MD5 |
5c41821afbfcf0e1e06e5d5a858dd77c
|
|
| BLAKE2b-256 |
16eb09fa1b1211635a5f171f086e639b03a686b581884f08e85319faec79ca0d
|
Provenance
The following attestation bundles were made for tygent-0.3.0-py3-none-any.whl:
Publisher:
python-publish.yml on tygent0/tygent-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tygent-0.3.0-py3-none-any.whl -
Subject digest:
ca1dc5ee78d1a1f636be2ba1c02d6b943c494cd670fc5dcaeec8e4515565e25d - Sigstore transparency entry: 246562679
- Sigstore integration time:
-
Permalink:
tygent0/tygent-py@02241896ae00aad2b759b3f640793ba6db6f8c79 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/tygent0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@02241896ae00aad2b759b3f640793ba6db6f8c79 -
Trigger Event:
workflow_dispatch
-
Statement type: