ExoModel AI: Object-Oriented Agentic AI
Project description
🌌 ExoModel AI
Object-Oriented Agentic AI
ExoModel AI is a high-level Python framework designed to bridge the gap between structured objects and Large Language Models (LLMs). It allows you to transform static data models into "living" entities capable of autonomous updates, self-analysis, and context-aware interactions using RAG (Retrieval-Augmented Generation).
Built on top of LangChain and Pydantic, ExoModel provides a seamless "Object-to-Prompt" interface for building AI-native applications.
🚀 Key Features
- Smart CRUD: Create, Read, and Update your data models directly through natural language prompts.
- Built-in RAG Support: Attach URLs, PDFs, or Text files to your models to ground AI responses in specific business rules.
- ExoAgent Orchestration: A specialized agent (ExoAgent) that manages tool routing and persona switching (Generalist, Specialist, Hybrid).
- Structured Output: Guarantees that LLM responses strictly follow your Pydantic schemas.
- Fluent List Management: Handle collections of entities with
ExoModelList, enabling bulk generation and CSV exports. - UI-Ready: Built-in
to_ui()methods optimized for Telegram, WhatsApp bots, and CLI displays.
📦 Installation
ExoModel is currently in Beta (0.1.0). You can install it using pip:
pip install exomodel
*Ensure you have your environment variables configured:
- LLM Key (e.g.,
GOOGLE_API_KEYorOPENAI_API_KEY).* - MY_LLM_MODEL (e.g.,
gemini-2.5-flashorgpt-4o).* - MY_EMBEDDING_MODEL (e.g.,
gemini-embedding-001ortext-embedding-3-small).*
🛠 Basic Usage
1. Define your Model
Inherit from ExoModel to give your data structures "AI powers."
from exo_model import ExoModel
from pydantic import Field
class Proposal(ExoModel):
client: str = Field(description="Legal name of the company")
business_challenge: str = Field(description="The main problem to solve")
solution: str = Field(description="AI Strategy, AI Program Execution, or AI Labs")
pricing: int = Field(default=0)
@classmethod
def get_rag_sources(cls):
return ["docs/proposal_rules.md"]
2. Interact via Prompts
You can initialize an object directly with a prompt or update it later.
# Create and populate
proposal = Proposal(prompt="Create a proposal for Tesla regarding a new AI Predictive Maintenance roadmap.")
# Analyze based on RAG rules
analysis = proposal.run_analysis()
print(analysis)
# Update a specific field
proposal.update_field("pricing", "Based on the roadmap complexity, set a fair price.")
3. Manage Lists
Use ExoModelList to handle multiple entities.
from exomodel_list import ExoModelList
tasks = ExoModelList(item_class=Proposal)
tasks.create_list("Generate 3 different AI proposals for a retail company.")
print(tasks.to_ui())
print(tasks.to_csv())
📂 Project Structure
src/exomodel/
├── exoagent.py # The core LLM & RAG handler
├── exomodel.py # Base ExoModel class (Pydantic + AI)
├── exomodel_list.py # Generic list management for ExoModels
├── prompt/ # ExoModel prompt templates
└── docs/ # Documentation
🤝 Contributing
We welcome contributions! Please feel free to submit a Pull Request or open an Issue.
- Fork the Project.
- Create your Feature Branch (
git checkout -b feature/AmazingFeature). - Commit your Changes (
git commit -m 'Add some AmazingFeature'). - Push to the Branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
📄 License
Distributed under the Apache License 2.0. See LICENSE for more information.
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 exomodel-0.1.1b0.tar.gz.
File metadata
- Download URL: exomodel-0.1.1b0.tar.gz
- Upload date:
- Size: 28.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90844c5a33e7a0392317e21d8221ec350f5cc06b1275ec56df52786073347e17
|
|
| MD5 |
b079cd08e973ff51cf4df6bbe9189e90
|
|
| BLAKE2b-256 |
e1a7b4e775dfa35d2b509e0090821fa31ee18a317e1a5564a69b49febc63b874
|
File details
Details for the file exomodel-0.1.1b0-py3-none-any.whl.
File metadata
- Download URL: exomodel-0.1.1b0-py3-none-any.whl
- Upload date:
- Size: 27.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c349cf23303f4da0483b920bbd275b93103d6b6167b0bf8ee04a0057973dba7
|
|
| MD5 |
0650f0c589d813556c1f673fdf37372e
|
|
| BLAKE2b-256 |
6fda8f8af61aea457d3b1926c8e7cb91e522b9edd14437b61319768b2e76a653
|