Skip to main content

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_KEY or OPENAI_API_KEY).*
  • MY_LLM_MODEL (e.g., gemini-2.5-flash or gpt-4o).*
  • MY_EMBEDDING_MODEL (e.g., gemini-embedding-001 or text-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.

  1. Fork the Project.
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature).
  3. Commit your Changes (git commit -m 'Add some AmazingFeature').
  4. Push to the Branch (git push origin feature/AmazingFeature).
  5. Open a Pull Request.

📄 License

Distributed under the Apache License 2.0. See LICENSE for more information.

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

exomodel-0.1.1b0.tar.gz (28.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

exomodel-0.1.1b0-py3-none-any.whl (27.6 kB view details)

Uploaded Python 3

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

Hashes for exomodel-0.1.1b0.tar.gz
Algorithm Hash digest
SHA256 90844c5a33e7a0392317e21d8221ec350f5cc06b1275ec56df52786073347e17
MD5 b079cd08e973ff51cf4df6bbe9189e90
BLAKE2b-256 e1a7b4e775dfa35d2b509e0090821fa31ee18a317e1a5564a69b49febc63b874

See more details on using hashes here.

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

Hashes for exomodel-0.1.1b0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c349cf23303f4da0483b920bbd275b93103d6b6167b0bf8ee04a0057973dba7
MD5 0650f0c589d813556c1f673fdf37372e
BLAKE2b-256 6fda8f8af61aea457d3b1926c8e7cb91e522b9edd14437b61319768b2e76a653

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page