agentify-core 0.1.3__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. {agentify_core-0.1.3/agentify_core.egg-info → agentify_core-0.2.0}/PKG-INFO +28 -30
  2. {agentify_core-0.1.3 → agentify_core-0.2.0}/README.md +20 -14
  3. agentify_core-0.2.0/README_PYPI.md +115 -0
  4. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/__init__.py +8 -14
  5. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/core/__init__.py +4 -1
  6. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/core/agent.py +428 -25
  7. agentify_core-0.2.0/agentify/core/tool.py +171 -0
  8. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/llm/client.py +109 -2
  9. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/memory/service.py +12 -12
  10. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/multi_agent/hierarchical.py +23 -1
  11. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/multi_agent/pipeline.py +59 -1
  12. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/multi_agent/team.py +27 -1
  13. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/multi_agent/tool_wrapper.py +117 -6
  14. {agentify_core-0.1.3 → agentify_core-0.2.0/agentify_core.egg-info}/PKG-INFO +28 -30
  15. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify_core.egg-info/SOURCES.txt +1 -0
  16. {agentify_core-0.1.3 → agentify_core-0.2.0}/pyproject.toml +2 -2
  17. agentify_core-0.1.3/agentify/core/tool.py +0 -30
  18. {agentify_core-0.1.3 → agentify_core-0.2.0}/LICENSE +0 -0
  19. {agentify_core-0.1.3 → agentify_core-0.2.0}/MANIFEST.in +0 -0
  20. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/core/callbacks.py +0 -0
  21. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/core/config.py +0 -0
  22. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/extensions/__init__.py +0 -0
  23. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/extensions/prompts/__init__.py +0 -0
  24. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/extensions/prompts/assistant.py +0 -0
  25. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/extensions/tools/__init__.py +0 -0
  26. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/extensions/tools/calculator.py +0 -0
  27. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/extensions/tools/filesystem.py +0 -0
  28. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/extensions/tools/planning.py +0 -0
  29. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/extensions/tools/time.py +0 -0
  30. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/extensions/tools/weather.py +0 -0
  31. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/llm/__init__.py +0 -0
  32. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/memory/__init__.py +0 -0
  33. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/memory/interfaces.py +0 -0
  34. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/memory/policies.py +0 -0
  35. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/memory/stores/__init__.py +0 -0
  36. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/memory/stores/in_memory_store.py +0 -0
  37. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/memory/stores/redis_store.py +0 -0
  38. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/multi_agent/__init__.py +0 -0
  39. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/utils/__init__.py +0 -0
  40. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify/utils/style.py +0 -0
  41. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify_core.egg-info/dependency_links.txt +0 -0
  42. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify_core.egg-info/requires.txt +0 -0
  43. {agentify_core-0.1.3 → agentify_core-0.2.0}/agentify_core.egg-info/top_level.txt +0 -0
  44. {agentify_core-0.1.3 → agentify_core-0.2.0}/requirements.txt +0 -0
  45. {agentify_core-0.1.3 → agentify_core-0.2.0}/setup.cfg +0 -0
  46. {agentify_core-0.1.3 → agentify_core-0.2.0}/tests/test_filesystem_tools.py +0 -0
  47. {agentify_core-0.1.3 → agentify_core-0.2.0}/tests/test_planning_tool.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentify-core
3
- Version: 0.1.3
3
+ Version: 0.2.0
4
4
  Summary: Framework-agnostic AI agent library for building single and multi-agent systems
5
5
  Author-email: Fabian M <fabian@example.com>
6
6
  License: MIT
@@ -72,7 +72,7 @@ Agentify is a Python library for building and orchestrating AI agents, from simp
72
72
  "Chain of Thought" in conversation history, and log reasoning steps in real-time for visibility.
73
73
 
74
74
  - **Tools and actions**
75
- Type-annotated tool interface, straightforward registration of custom tools.
75
+ Simple `@tool` decorator for creating tools from functions with automatic JSON Schema generation, or type-annotated tool interface for custom implementations.
76
76
 
77
77
  - **Observability hooks**
78
78
  Callback system for logging, monitoring and debugging agent behaviour across complex flows.
@@ -80,6 +80,9 @@ Agentify is a Python library for building and orchestrating AI agents, from simp
80
80
  - **I/O capabilities**
81
81
  Streaming support for real-time responses and vision/image models for multimodal interactions.
82
82
 
83
+ - **Async & Parallel Execution**
84
+ Built-in `async/await` support (`arun()`) for all agents and flows. Automatically executes independent tool calls in parallel (e.g., fetching data from 3 APIs simultaneously), significantly reducing latency.
85
+
83
86
 
84
87
  ## Installation
85
88
 
@@ -95,29 +98,37 @@ pip install agentify-core[all] # Installs all optional dependencies
95
98
  ## Quick Start
96
99
 
97
100
  ```python
98
- from agentify import BaseAgent, AgentConfig, MemoryService, MemoryAddress
101
+ from agentify import BaseAgent, AgentConfig, MemoryService, MemoryAddress, tool
99
102
  from agentify.memory.stores import InMemoryStore
100
103
 
101
- # 1. Create memory service
104
+ # 1. Create a simple tool with @tool decorator
105
+ @tool
106
+ def get_time() -> dict:
107
+ """Returns the current time."""
108
+ from datetime import datetime
109
+ return {"time": datetime.now().strftime("%H:%M:%S")}
110
+
111
+ # 2. Create memory service
102
112
  memory = MemoryService(store=InMemoryStore(), log_enabled=True, max_log_length=100)
103
113
  addr = MemoryAddress(conversation_id="session_1")
104
114
 
105
- # 2. Create an Agent
115
+ # 3. Create an Agent with the tool
106
116
  agent = BaseAgent(
107
117
  config=AgentConfig(
108
118
  name="ReasoningAgent",
109
119
  system_prompt="You are a helpful assistant.",
110
- provider="openai",
111
- model_name="gpt-5",
120
+ provider="provider",
121
+ model_name="model",
112
122
  reasoning_effort="high", # optional param:"low", "medium", "high"
113
123
  model_kwargs={"max_completion_tokens": 5000} # Pass model-specific params
114
124
  ),
115
125
  memory=memory,
116
- memory_address=addr
126
+ memory_address=addr,
127
+ tools=[get_time] # Add your tools here
117
128
  )
118
129
 
119
- # 3. Run a conversation
120
- response = agent.run(user_input="Hello! How can you help me?")
130
+ # 4. Run a conversation
131
+ response = agent.run(user_input="What time is it?")
121
132
  ```
122
133
 
123
134
  ## Composable Flows
@@ -134,31 +145,18 @@ Because all flows share the same `run()` interface, you can build Teams made of
134
145
  Agentify supports both **strict workflows** (fixed, pre-defined Pipelines and Hierarchies) and **dynamic agentic flows**, where a supervisor/router agent decides at runtime which agent, Team or Pipeline to call next.
135
146
 
136
147
 
137
- ## Documentation
138
-
139
- - [Getting Started](docs/getting_started.md) - Installation and first steps
140
- - [Core Concepts](docs/core_concepts.md) - Agents, memory, and tools
141
- - [Multi-Agent Systems](docs/multi_agent.md) - Teams, pipelines, and hierarchies
142
- - [Advanced Features](docs/advanced.md) - Vision, streaming, hooks, and more
143
- - [API Reference](docs/api_reference.md) - Complete API documentation
148
+ ## Learn More
144
149
 
150
+ For detailed documentation, examples, and API reference, visit the [GitHub repository](https://github.com/fa8i/Agentify).
145
151
 
146
- ### More Examples
152
+ ## Contributing
147
153
 
148
- Check out the [examples](examples/) directory for detailed implementations:
154
+ Contributions are welcome! Please visit the [repository](https://github.com/fa8i/Agentify) to report issues or submit pull requests.
149
155
 
150
- * [Single Agent Chatbot](examples/chatbot/)
151
- * [Multi-Agent Teams](examples/multi_agent/team/)
152
- * [Sequential Pipelines](examples/multi_agent/pipeline/)
153
- * [Hierarchical Structures](examples/multi_agent/hierarchical/)
156
+ ## License
154
157
 
158
+ MIT License - see the repository for details.
155
159
 
156
160
  ## Author
157
161
 
158
- - **Fabian Melchor** [fabianmp_98@hotmail.com](mailto:fabianmp_98@hotmail.com)
159
-
160
-
161
- ## Links
162
-
163
- - **Repository**: https://github.com/fa8i/Agentify
164
- - **Issues**: https://github.com/fa8i/Agentify/issues
162
+ **Fabian Melchor** - [fabianmp_98@hotmail.com](mailto:fabianmp_98@hotmail.com)
@@ -25,7 +25,7 @@ Agentify is a Python library for building and orchestrating AI agents, from simp
25
25
  "Chain of Thought" in conversation history, and log reasoning steps in real-time for visibility.
26
26
 
27
27
  - **Tools and actions**
28
- Type-annotated tool interface, straightforward registration of custom tools.
28
+ Simple `@tool` decorator for creating tools from functions with automatic JSON Schema generation, or type-annotated tool interface for custom implementations.
29
29
 
30
30
  - **Observability hooks**
31
31
  Callback system for logging, monitoring and debugging agent behaviour across complex flows.
@@ -33,6 +33,9 @@ Agentify is a Python library for building and orchestrating AI agents, from simp
33
33
  - **I/O capabilities**
34
34
  Streaming support for real-time responses and vision/image models for multimodal interactions.
35
35
 
36
+ - **Async & Parallel Execution**
37
+ Built-in `async/await` support (`arun()`) for all agents and flows. Automatically executes independent tool calls in parallel (e.g., fetching data from 3 APIs simultaneously), significantly reducing latency.
38
+
36
39
 
37
40
  ## Installation
38
41
 
@@ -48,29 +51,37 @@ pip install agentify-core[all] # Installs all optional dependencies
48
51
  ## Quick Start
49
52
 
50
53
  ```python
51
- from agentify import BaseAgent, AgentConfig, MemoryService, MemoryAddress
54
+ from agentify import BaseAgent, AgentConfig, MemoryService, MemoryAddress, tool
52
55
  from agentify.memory.stores import InMemoryStore
53
56
 
54
- # 1. Create memory service
57
+ # 1. Create a simple tool with @tool decorator
58
+ @tool
59
+ def get_time() -> dict:
60
+ """Returns the current time."""
61
+ from datetime import datetime
62
+ return {"time": datetime.now().strftime("%H:%M:%S")}
63
+
64
+ # 2. Create memory service
55
65
  memory = MemoryService(store=InMemoryStore(), log_enabled=True, max_log_length=100)
56
66
  addr = MemoryAddress(conversation_id="session_1")
57
67
 
58
- # 2. Create an Agent
68
+ # 3. Create an Agent with the tool
59
69
  agent = BaseAgent(
60
70
  config=AgentConfig(
61
71
  name="ReasoningAgent",
62
72
  system_prompt="You are a helpful assistant.",
63
- provider="openai",
64
- model_name="gpt-5",
73
+ provider="provider",
74
+ model_name="model",
65
75
  reasoning_effort="high", # optional param:"low", "medium", "high"
66
76
  model_kwargs={"max_completion_tokens": 5000} # Pass model-specific params
67
77
  ),
68
78
  memory=memory,
69
- memory_address=addr
79
+ memory_address=addr,
80
+ tools=[get_time] # Add your tools here
70
81
  )
71
82
 
72
- # 3. Run a conversation
73
- response = agent.run(user_input="Hello! How can you help me?")
83
+ # 4. Run a conversation
84
+ response = agent.run(user_input="What time is it?")
74
85
  ```
75
86
 
76
87
  ## Composable Flows
@@ -110,8 +121,3 @@ Check out the [examples](examples/) directory for detailed implementations:
110
121
 
111
122
  - **Fabian Melchor** [fabianmp_98@hotmail.com](mailto:fabianmp_98@hotmail.com)
112
123
 
113
-
114
- ## Links
115
-
116
- - **Repository**: https://github.com/fa8i/Agentify
117
- - **Issues**: https://github.com/fa8i/Agentify/issues
@@ -0,0 +1,115 @@
1
+ # Agentify
2
+
3
+ **Independent AI agent library based on the OpenAI SDK**
4
+
5
+ Agentify is a Python library for building and orchestrating AI agents, from simple assistants to complex multi-agent systems. It targets the OpenAI-compatible Chat Completions interface, enabling support for multiple providers through a configurable `base_url` (OpenAI, Azure OpenAI, DeepSeek, Gemini, etc.). Agentify offers a streamlined, independent set of primitives for memory, tools, and coordination so you can focus on product logic without being tied to heavy frameworks.
6
+
7
+
8
+ ## Why Agentify?
9
+
10
+ - **Built for production**: clear abstractions, explicit configuration, error handling and extension points that map well to real deployments.
11
+ - **Orchestration-first design**: a uniform `run()` interface for agents, teams, pipelines and hierarchies makes it straightforward to compose and refactor flows.
12
+ - **Providers**: switch between OpenAI, Gemini, Azure OpenAI, DeepSeek, Claude and others without changing your agent code.
13
+
14
+
15
+ ## Key Features
16
+
17
+ - **Agents and multi-agent patterns**
18
+ Single Agents with tools and memory, supervisor–worker Multi-Agent Teams, Sequential Pipelines where output flows from step to step, Hierarchical Structures for complex delegation, and Dynamic Flows where a controller decides at runtime which sub-agents or teams to invoke.
19
+
20
+ - **Memory service and isolation**
21
+ Pluggable backends (in-memory, Redis, …) with per-use-case policies (TTL, maximum messages, etc.), plus optional memory isolation so each agent can maintain its own conversation history for scalability and privacy.
22
+
23
+ - **Reasoning Models**
24
+ Configure the model's thinking depth, safely merge `model_kwargs`, automatically store
25
+ "Chain of Thought" in conversation history, and log reasoning steps in real-time for visibility.
26
+
27
+ - **Tools and actions**
28
+ Simple `@tool` decorator for creating tools from functions with automatic JSON Schema generation, or type-annotated tool interface for custom implementations.
29
+
30
+ - **Observability hooks**
31
+ Callback system for logging, monitoring and debugging agent behaviour across complex flows.
32
+
33
+ - **I/O capabilities**
34
+ Streaming support for real-time responses and vision/image models for multimodal interactions.
35
+
36
+ - **Async & Parallel Execution**
37
+ Built-in `async/await` support (`arun()`) for all agents and flows. Automatically executes independent tool calls in parallel (e.g., fetching data from 3 APIs simultaneously), significantly reducing latency.
38
+
39
+
40
+ ## Installation
41
+
42
+ ```bash
43
+ pip install agentify-core
44
+ ```
45
+
46
+ For optional features:
47
+ ```bash
48
+ pip install agentify-core[all] # Installs all optional dependencies
49
+ ```
50
+
51
+ ## Quick Start
52
+
53
+ ```python
54
+ from agentify import BaseAgent, AgentConfig, MemoryService, MemoryAddress, tool
55
+ from agentify.memory.stores import InMemoryStore
56
+
57
+ # 1. Create a simple tool with @tool decorator
58
+ @tool
59
+ def get_time() -> dict:
60
+ """Returns the current time."""
61
+ from datetime import datetime
62
+ return {"time": datetime.now().strftime("%H:%M:%S")}
63
+
64
+ # 2. Create memory service
65
+ memory = MemoryService(store=InMemoryStore(), log_enabled=True, max_log_length=100)
66
+ addr = MemoryAddress(conversation_id="session_1")
67
+
68
+ # 3. Create an Agent with the tool
69
+ agent = BaseAgent(
70
+ config=AgentConfig(
71
+ name="ReasoningAgent",
72
+ system_prompt="You are a helpful assistant.",
73
+ provider="provider",
74
+ model_name="model",
75
+ reasoning_effort="high", # optional param:"low", "medium", "high"
76
+ model_kwargs={"max_completion_tokens": 5000} # Pass model-specific params
77
+ ),
78
+ memory=memory,
79
+ memory_address=addr,
80
+ tools=[get_time] # Add your tools here
81
+ )
82
+
83
+ # 4. Run a conversation
84
+ response = agent.run(user_input="What time is it?")
85
+ ```
86
+
87
+ ## Composable Flows
88
+
89
+ Agentify provides powerful primitives that can be combined to build arbitrarily complex systems:
90
+
91
+ * **BaseAgent**: The fundamental unit of work.
92
+ * **Teams**: A group of agents managed by a supervisor.
93
+ * **Pipelines**: A sequence of steps where output passes from one to the next.
94
+ * **Hierarchies**: Tree structures for massive delegation.
95
+
96
+ Because all flows share the same `run()` interface, you can build Teams made of Pipelines, Pipelines made of Teams, and deeply nested Hierarchies.
97
+
98
+ Agentify supports both **strict workflows** (fixed, pre-defined Pipelines and Hierarchies) and **dynamic agentic flows**, where a supervisor/router agent decides at runtime which agent, Team or Pipeline to call next.
99
+
100
+
101
+ ## Learn More
102
+
103
+ For detailed documentation, examples, and API reference, visit the [GitHub repository](https://github.com/fa8i/Agentify).
104
+
105
+ ## Contributing
106
+
107
+ Contributions are welcome! Please visit the [repository](https://github.com/fa8i/Agentify) to report issues or submit pull requests.
108
+
109
+ ## License
110
+
111
+ MIT License - see the repository for details.
112
+
113
+ ## Author
114
+
115
+ **Fabian Melchor** - [fabianmp_98@hotmail.com](mailto:fabianmp_98@hotmail.com)
@@ -1,32 +1,26 @@
1
1
  # Core exports
2
- from agentify.core import (
3
- BaseAgent,
4
- Tool,
5
- AgentConfig,
6
- ImageConfig,
7
- AgentCallbackHandler,
8
- LoggingCallbackHandler,
9
- )
2
+ from agentify.core.agent import BaseAgent
3
+ from agentify.core.config import AgentConfig, ImageConfig
4
+ from agentify.core.tool import Tool, tool
10
5
 
11
6
  # LLM exports
12
- from agentify.llm import LLMClientFactory
7
+ from agentify.llm.client import LLMClientFactory
13
8
 
14
9
  # Memory exports
15
10
  from agentify.memory.service import MemoryService
16
11
  from agentify.memory.interfaces import MemoryAddress
17
12
  from agentify.memory.policies import MemoryPolicy
18
13
 
19
- __version__ = "0.1.3"
14
+ __version__ = "0.2.0"
20
15
 
21
16
  __all__ = [
22
17
  "BaseAgent",
23
- "Tool",
24
18
  "AgentConfig",
25
- "ImageConfig",
26
- "AgentCallbackHandler",
27
- "LoggingCallbackHandler",
19
+ "Tool",
20
+ "tool",
28
21
  "LLMClientFactory",
29
22
  "MemoryService",
30
23
  "MemoryAddress",
31
24
  "MemoryPolicy",
25
+ "ImageConfig",
32
26
  ]
@@ -1,11 +1,14 @@
1
+ """Core components for building AI agents."""
2
+
1
3
  from agentify.core.agent import BaseAgent
2
- from agentify.core.tool import Tool
4
+ from agentify.core.tool import Tool, tool
3
5
  from agentify.core.callbacks import AgentCallbackHandler, LoggingCallbackHandler
4
6
  from agentify.core.config import AgentConfig, ImageConfig
5
7
 
6
8
  __all__ = [
7
9
  "BaseAgent",
8
10
  "Tool",
11
+ "tool",
9
12
  "AgentCallbackHandler",
10
13
  "LoggingCallbackHandler",
11
14
  "AgentConfig",