Catalog PyPI
Back to packageRELEASE DETAILS

0.3.6

PyPI

agentics-py

Agentics is a Python framework that provides structured, scalable, and semantically grounded agentic computation.

Published9 Apr 2026
Direct dependencies28
Transitive dependenciesNot calculated

README

Version 0.3.6 documentation

Agentics

Transduction is all you need

Agentics logo

Agentics is a Python framework for structured, scalable, and semantically grounded agentic computation.
Build AI-powered pipelines as typed data transformations—combining Pydantic schemas, LLM-powered transduction, and async execution.


✨ Why Agentics

Most "agent frameworks" let untyped text flow through a pipeline. Agentics flips that: types are the interface. Workflows are expressed as transformations between structured states, with predictable schemas and composable operators.


🚀 Key Features

  • Typed agentic computation: Define workflows over structured types using standard Pydantic models.
  • Logical transduction (<<): Transform data between types using LLMs (few-shot examples, tools, memory).
  • Async mapping & reduction: Scale out with amap and areduce over datasets.
  • Batch execution & retry: Built-in batching, retries, and graceful fallbacks.
  • Tool support (MCP): Integrate external tools via MCP.

📦 Getting Started

Quickstart:

Install Agentics in your current env, set up your environment variable, and run your first logical transduction:

uv pip install agentics-py

set up your .env using the required parameters for your LLM provider of choice. Use .env_sample as a reference.

Find out more 👉 Getting Started: docs/getting_started.md

Examples

Run scripts in the examples/ folder (via uv):

uv run python examples/hello_world.py

🧪 Example Usage

from pydantic import BaseModel, Field
from agentics.core.transducible_functions import transducible, Transduce

class ProductDescription(BaseModel):
    name: str
    features: str
    price: float

class ViralTweet(BaseModel):
    tweet: str = Field(..., description="Engaging tweet under 280 characters")
    hashtags: list[str] = Field(..., description="3-5 relevant hashtags")
    hook: str = Field(..., description="Attention-grabbing opening line")

@transducible()
async def generate_viral_tweet(product: ProductDescription) -> ViralTweet:
    """Transform boring product descriptions into viral social media content."""
    return Transduce(product)

# Transform a product into viral content
product = ProductDescription(
    name="Agentics Framework",
    features="Type-safe AI workflows with LLM-powered transductions",
    price=0.0  # Open source!
)

tweet = await generate_viral_tweet(product)
print(f"🔥 {tweet.tweet}")
print(f"📱 {' '.join(tweet.hashtags)}")

Output:

🔥 Stop wrestling with unstructured LLM outputs! 🎯 Agentics gives you type-safe AI workflows that just work. Build production-ready agents in minutes, not weeks. And it's FREE! 🚀
📱 #AI #OpenSource #Python #LLM #DevTools

📘 Documentation and Notebooks

Complete documentation available here

NotebookDescription
agentics.ipynbCore Agentics concepts: typed states, operators, and workflow structure
atypes.ipynbWorking with ATypes: schema composition, merging, and type-driven design patterns
logical_transduction_algebra.ipynbLogical Transduction Algebra: principles and examples behind <<
map_reduce.ipynbScale out workflows with amap / areduce (MapReduce-style execution)
synthetic_data_generation.ipynbGenerate structured synthetic datasets using typed transductions
transducible_functions.ipynbBuild reusable @transducible functions, explanations, and transduction control

✅ Tests

Run all tests:

uv run pytest

📄 License

Apache 2.0


👥 Authors

Project Lead and Main Contributor

Core Contributors

Community Contributors


🧠 Conceptual Overview

Most “agent frameworks” let untyped text flow through a pipeline. Agentics flips that: types are the interface. Workflows are expressed as transformations between structured states, with predictable schemas and composable operators.

Because every step is a typed transformation, you can compose workflows safely (merge and compose types/instances, chain transductions, and reuse @transducible functions) without losing semantic structure.

Agentics makes it natural to scale out: apply transformations over collections with async amap, and aggregate results with areduce.

Agentics models workflows as transformations between typed states.

Core operations:

  • amap(func): apply an async function over each state
  • areduce(func): reduce a list of states into a single value
  • <<: logical transduction from source to target Agentics
  • &: merge Pydantic types / instances
  • @: compose Pydantic types / instances

📜 Reference

Agentics implements Logical Transduction Algebra, described in:

  • Alfio Gliozzo, Naweed Khan, Christodoulos Constantinides, Nandana Mihindukulasooriya, Nahuel Defosse, Junkyu Lee. Transduction is All You Need for Structured Data Workflows (August 2025). arXiv:2508.15610 — https://arxiv.org/abs/2508.15610

🤝 Contributing

Contributions are welcome! CONTRIBUTING.md

Please ensure your commit messages include:

Signed-off-by: Author Name <authoremail@example.com>

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 29

Native requirements
28 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
aiosqlite
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
aiosqlite>=0.21.0runtime
apscheduler
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
apscheduler>=3.10.0runtime
async-lru
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
async-lru>=2.0.5runtime
crewai-tools
Environment
{
  "extras": "mcp",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
crewai-tools[mcp]runtime
crewai
Environment
{
  "extras": "google-genai",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
crewai[google-genai]runtime
crewai
Environment
{
  "extras": "tools",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
crewai[tools]runtime
datasets
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
datasets<5.0.0,>=4.0.0runtime
ddgs
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
ddgsruntime
duckdb
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
duckdb>=1.4.3runtime
fastapi-sso
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
fastapi-sso>=0.10.0runtime
google
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
google<4.0.0,>=3.0.0runtime
hnswlib
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
hnswlib>=0.8.0runtime
ipywidgets
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
ipywidgets>=8.1.7runtime
json-schema-to-pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
json-schema-to-pydantic<0.4.0,>=0.3.0runtime
jsonfinder
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
jsonfinderruntime
langchain-huggingface
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
langchain-huggingface<0.3.0,>=0.2.0runtime
litellm
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
litellm<1.82.7,>=1.80.0runtime
loguru
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
loguru<0.8.0,>=0.7.3runtime
mcp
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mcp<2.0.0,>=1.13.1runtime
mellea
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
mellearuntime
numerize
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
numerize>=0.12runtime
openai
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
openai<2.0.0,>=1.88.0runtime
openapi-python-client
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
openapi-python-client<0.25.0,>=0.24.3runtime
pandas
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pandas>=2runtime
plotly
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
plotly>=6.5.0runtime
pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pydanticruntime
pyyaml
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pyyaml<7.0.0,>=6.0.2runtime
rich
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
rich<14.0.0,>=13.0.0runtime
streamlit
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
streamlit<2.0.0,>=1.45.1runtime

Distribution files

2 collected
agentics_py-0.3.6-py3-none-any.whl

bdist_wheel · 59.43 KB · Python py3

Source file
agentics_py-0.3.6.tar.gz

sdist · 3,098.3 KB · Python source

Source file

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:21 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:ea7101084b4d2c826e3e1c315a2f4718155cefed5f883163b8bef695d83676f7

Other collected versions

View all collected versions →