memra 0.0.0__py3-none-any.whl → 0.1.2__py3-none-any.whl
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.
- memra/__init__.py +1 -1
- memra/tool_registry_client.py +7 -2
- memra-0.1.2.dist-info/METADATA +191 -0
- memra-0.1.2.dist-info/RECORD +10 -0
- memra-0.0.0.dist-info/METADATA +0 -5
- memra-0.0.0.dist-info/RECORD +0 -10
- {memra-0.0.0.dist-info → memra-0.1.2.dist-info}/WHEEL +0 -0
- {memra-0.0.0.dist-info → memra-0.1.2.dist-info}/licenses/LICENSE +0 -0
- {memra-0.0.0.dist-info → memra-0.1.2.dist-info}/top_level.txt +0 -0
memra/__init__.py
CHANGED
memra/tool_registry_client.py
CHANGED
@@ -10,8 +10,13 @@ class ToolRegistryClient:
|
|
10
10
|
"""Client-side registry that calls Memra API for tool execution"""
|
11
11
|
|
12
12
|
def __init__(self):
|
13
|
-
self.api_base = os.getenv("MEMRA_API_URL", "https://
|
14
|
-
self.api_key = os.getenv("MEMRA_API_KEY"
|
13
|
+
self.api_base = os.getenv("MEMRA_API_URL", "https://api.memra.co")
|
14
|
+
self.api_key = os.getenv("MEMRA_API_KEY")
|
15
|
+
if not self.api_key:
|
16
|
+
raise ValueError(
|
17
|
+
"MEMRA_API_KEY environment variable is required. "
|
18
|
+
"Contact info@memra.co to request access."
|
19
|
+
)
|
15
20
|
self.tools_cache = None
|
16
21
|
|
17
22
|
def discover_tools(self, hosted_by: Optional[str] = None) -> List[Dict[str, Any]]:
|
@@ -0,0 +1,191 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: memra
|
3
|
+
Version: 0.1.2
|
4
|
+
Summary: A declarative orchestration framework for AI-powered business workflows
|
5
|
+
Author-email: Memra Team <info@memra.co>
|
6
|
+
License: MIT
|
7
|
+
Project-URL: Homepage, https://memra.co
|
8
|
+
Project-URL: Repository, https://github.com/memra-platform/memra-sdk
|
9
|
+
Project-URL: Documentation, https://memra.co
|
10
|
+
Project-URL: Bug Reports, https://github.com/memra-platform/memra-sdk/issues
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
12
|
+
Classifier: Intended Audience :: Developers
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
15
|
+
Classifier: Programming Language :: Python :: 3.8
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
20
|
+
Requires-Python: >=3.8
|
21
|
+
Description-Content-Type: text/markdown
|
22
|
+
License-File: LICENSE
|
23
|
+
Requires-Dist: pydantic>=2.0.0
|
24
|
+
Requires-Dist: httpx>=0.24.0
|
25
|
+
Requires-Dist: typing-extensions>=4.0.0
|
26
|
+
Dynamic: license-file
|
27
|
+
|
28
|
+
# Memra SDK
|
29
|
+
|
30
|
+
A declarative orchestration framework for AI-powered business workflows. Think of it as "Kubernetes for business logic" where agents are the pods and departments are the deployments.
|
31
|
+
|
32
|
+
## 🚀 Quick Start
|
33
|
+
|
34
|
+
```python
|
35
|
+
from memra import Agent, Department, LLM
|
36
|
+
from memra.execution import ExecutionEngine
|
37
|
+
|
38
|
+
# Define your agents declaratively
|
39
|
+
data_engineer = Agent(
|
40
|
+
role="Data Engineer",
|
41
|
+
job="Extract invoice schema from database",
|
42
|
+
llm=LLM(model="llama-3.2-11b-vision-preview", temperature=0.1),
|
43
|
+
tools=[
|
44
|
+
{"name": "DatabaseQueryTool", "hosted_by": "memra"}
|
45
|
+
],
|
46
|
+
output_key="invoice_schema"
|
47
|
+
)
|
48
|
+
|
49
|
+
invoice_parser = Agent(
|
50
|
+
role="Invoice Parser",
|
51
|
+
job="Extract structured data from invoice PDF",
|
52
|
+
llm=LLM(model="llama-3.2-11b-vision-preview", temperature=0.0),
|
53
|
+
tools=[
|
54
|
+
{"name": "PDFProcessor", "hosted_by": "memra"},
|
55
|
+
{"name": "InvoiceExtractionWorkflow", "hosted_by": "memra"}
|
56
|
+
],
|
57
|
+
input_keys=["file", "invoice_schema"],
|
58
|
+
output_key="invoice_data"
|
59
|
+
)
|
60
|
+
|
61
|
+
# Create a department
|
62
|
+
ap_department = Department(
|
63
|
+
name="Accounts Payable",
|
64
|
+
mission="Process invoices accurately into financial system",
|
65
|
+
agents=[data_engineer, invoice_parser],
|
66
|
+
workflow_order=["Data Engineer", "Invoice Parser"]
|
67
|
+
)
|
68
|
+
|
69
|
+
# Execute the workflow
|
70
|
+
engine = ExecutionEngine()
|
71
|
+
result = engine.execute_department(ap_department, {
|
72
|
+
"file": "invoice.pdf",
|
73
|
+
"connection": "postgresql://user@host/db"
|
74
|
+
})
|
75
|
+
|
76
|
+
if result.success:
|
77
|
+
print("✅ Invoice processed successfully!")
|
78
|
+
print(f"Data: {result.data}")
|
79
|
+
```
|
80
|
+
|
81
|
+
## 📦 Installation
|
82
|
+
|
83
|
+
```bash
|
84
|
+
pip install memra-sdk
|
85
|
+
```
|
86
|
+
|
87
|
+
## 🔑 Configuration
|
88
|
+
|
89
|
+
### Step 1: Get Your API Key
|
90
|
+
Contact **info@memra.co** to request an API key for early access.
|
91
|
+
|
92
|
+
### Step 2: Set Your API Key
|
93
|
+
Once you receive your API key, configure it:
|
94
|
+
|
95
|
+
```bash
|
96
|
+
export MEMRA_API_KEY="your-api-key-here"
|
97
|
+
export MEMRA_API_URL="https://api.memra.co" # Optional, defaults to production
|
98
|
+
```
|
99
|
+
|
100
|
+
Or in Python:
|
101
|
+
|
102
|
+
```python
|
103
|
+
import os
|
104
|
+
os.environ["MEMRA_API_KEY"] = "your-api-key-here"
|
105
|
+
```
|
106
|
+
|
107
|
+
## 🎯 Key Features
|
108
|
+
|
109
|
+
- **Declarative**: Define workflows like Kubernetes YAML
|
110
|
+
- **AI-Powered**: Built-in LLM integrations for document processing
|
111
|
+
- **Conversational**: Agents explain what they're doing in real-time
|
112
|
+
- **Production Ready**: Real database connectivity and file processing
|
113
|
+
- **Scalable**: Tools execute on Memra's cloud infrastructure
|
114
|
+
|
115
|
+
## 🏗️ Core Concepts
|
116
|
+
|
117
|
+
### Agents
|
118
|
+
Agents are the workers in your workflow. Each agent has:
|
119
|
+
- **Role**: What they do (e.g., "Data Engineer")
|
120
|
+
- **Job**: Their specific responsibility
|
121
|
+
- **Tools**: What capabilities they use
|
122
|
+
- **LLM**: Their AI model configuration
|
123
|
+
|
124
|
+
### Departments
|
125
|
+
Departments coordinate multiple agents:
|
126
|
+
- **Mission**: Overall goal
|
127
|
+
- **Workflow Order**: Sequence of agent execution
|
128
|
+
- **Manager**: Optional oversight and validation
|
129
|
+
|
130
|
+
### Tools
|
131
|
+
Tools are hosted capabilities:
|
132
|
+
- **memra**: Hosted by Memra (PDF processing, LLMs, databases)
|
133
|
+
- **mcp**: Customer-hosted via Model Context Protocol
|
134
|
+
|
135
|
+
## 📊 Example Output
|
136
|
+
|
137
|
+
```
|
138
|
+
🏢 Starting Accounts Payable Department
|
139
|
+
📋 Mission: Process invoices accurately into financial system
|
140
|
+
👥 Team: Data Engineer, Invoice Parser
|
141
|
+
🔄 Workflow: Data Engineer → Invoice Parser
|
142
|
+
|
143
|
+
👤 Data Engineer: Hi! I'm starting my work now...
|
144
|
+
💭 Data Engineer: My job is to extract invoice schema from database
|
145
|
+
⚡ Data Engineer: Using tool 1/1: DatabaseQueryTool
|
146
|
+
✅ Data Engineer: Great! DatabaseQueryTool did real work and gave me useful results
|
147
|
+
🎉 Data Engineer: Perfect! I completed my work with real data processing
|
148
|
+
|
149
|
+
👤 Invoice Parser: Hi! I'm starting my work now...
|
150
|
+
💭 Invoice Parser: My job is to extract structured data from invoice pdf
|
151
|
+
⚡ Invoice Parser: Using tool 1/2: PDFProcessor
|
152
|
+
✅ Invoice Parser: Great! PDFProcessor did real work and gave me useful results
|
153
|
+
```
|
154
|
+
|
155
|
+
## 🔍 Tool Discovery
|
156
|
+
|
157
|
+
Discover available tools:
|
158
|
+
|
159
|
+
```python
|
160
|
+
from memra import discover_tools, get_api_status
|
161
|
+
|
162
|
+
# Check API health
|
163
|
+
status = get_api_status()
|
164
|
+
print(f"API Health: {status['api_healthy']}")
|
165
|
+
print(f"Tools Available: {status['tools_available']}")
|
166
|
+
|
167
|
+
# Discover tools
|
168
|
+
tools = discover_tools()
|
169
|
+
for tool in tools:
|
170
|
+
print(f"- {tool['name']}: {tool['description']}")
|
171
|
+
```
|
172
|
+
|
173
|
+
## 📚 Examples
|
174
|
+
|
175
|
+
See the `examples/` directory for complete workflows:
|
176
|
+
|
177
|
+
- `accounts_payable_client.py`: Invoice processing with database integration
|
178
|
+
- More examples coming soon!
|
179
|
+
|
180
|
+
## 🆘 Support
|
181
|
+
|
182
|
+
- **Support**: info@memra.co
|
183
|
+
|
184
|
+
## 📄 License
|
185
|
+
|
186
|
+
MIT License - see LICENSE file for details.
|
187
|
+
|
188
|
+
---
|
189
|
+
|
190
|
+
**Built with ❤️ by the Memra team**
|
191
|
+
**Note**: The SDK will not work without a valid API key.
|
@@ -0,0 +1,10 @@
|
|
1
|
+
memra/__init__.py,sha256=QRk72YETLgL15GVt26tN_rBraCQkhZO7UB9T6d4u_uU,543
|
2
|
+
memra/discovery_client.py,sha256=AbnKn6qhyrf7vmOvknEeDzH4tiGHsqPHtDaein_qaW0,1271
|
3
|
+
memra/execution.py,sha256=UJ_MJ4getuSk4HJW1sCi7lc26avX-G6-GxnvE-DiSwk,20191
|
4
|
+
memra/models.py,sha256=nTaYLAp0tRzQ0CQaBLNBURfhBQ5_gyty0ams4mghyIc,3289
|
5
|
+
memra/tool_registry_client.py,sha256=KyNNxj84248E-8MoWNj6pJmlllUG8s0lmeXXmbu0U7o,3996
|
6
|
+
memra-0.1.2.dist-info/licenses/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
+
memra-0.1.2.dist-info/METADATA,sha256=gHIEJFsMqK7Bc-sIUgZ1LQS5tP3djey0_B3sZVWYINc,5640
|
8
|
+
memra-0.1.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
9
|
+
memra-0.1.2.dist-info/top_level.txt,sha256=pXWcTRS1zctdiSUivW4iyKpJ4tcfIu-1BW_fpbal3OY,6
|
10
|
+
memra-0.1.2.dist-info/RECORD,,
|
memra-0.0.0.dist-info/METADATA
DELETED
memra-0.0.0.dist-info/RECORD
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
memra/__init__.py,sha256=ig9EodZ0ar7gv6Cn827wW56Utv8FSCGp0yUXDOMnY4E,543
|
2
|
-
memra/discovery_client.py,sha256=AbnKn6qhyrf7vmOvknEeDzH4tiGHsqPHtDaein_qaW0,1271
|
3
|
-
memra/execution.py,sha256=UJ_MJ4getuSk4HJW1sCi7lc26avX-G6-GxnvE-DiSwk,20191
|
4
|
-
memra/models.py,sha256=nTaYLAp0tRzQ0CQaBLNBURfhBQ5_gyty0ams4mghyIc,3289
|
5
|
-
memra/tool_registry_client.py,sha256=qhwuB8Nk5nEUmC08f6Yqvuyp5uBO3CRVI6wEucLx3bs,3840
|
6
|
-
memra-0.0.0.dist-info/licenses/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
-
memra-0.0.0.dist-info/METADATA,sha256=e_2oF2RQJ-D2usgaud2nTSs6-sXxEoSr9OcmxXD9ZE0,93
|
8
|
-
memra-0.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
9
|
-
memra-0.0.0.dist-info/top_level.txt,sha256=pXWcTRS1zctdiSUivW4iyKpJ4tcfIu-1BW_fpbal3OY,6
|
10
|
-
memra-0.0.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|