Files
eveAI/Evie Overview.md
Josako 5c982fcc2c - Added EveAI Client to project
- Improvements to EntitlementsDomain & Services
- Prechecks in Document domain
- Add audit information to LicenseUsage
2025-05-17 15:56:14 +02:00

85 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Evie Overview
Owner: pieter Laroy
# Introduction
The Evie project (developed by AskEveAI) is a SAAS product that enables SMEs to easily introduce AI optimisations for both internal and external use. There are two big concepts:
- Catalogs: these allow tenants to store information about their organisations or enterprises
- Specialists: these allow tenants to perform logic into their processes, communications, …
As such, we could say we have an advanced RAG system tenants can use to optimise their workings.
## Multi-tenant
The application has a multi-tenant setup built in. This is reflected in:
- The Database:
- We have 1 public schema, in which general information is defined such as tenants, their users, domains, licenses, …
- We have a schema (named 1, 2, …) for each of the tenants defined in the system, containing all information on the tenants catalogs & documents, specialists & interactions, …
- File Storage
- We use S3-compatible storage
- A bucket is defined for each tenant, storing their specific documents, assets, …
That way, general information required for the operation of Evie is stored in the public schema, and specific and potentially sensitive information is nicely stored behind a Chinese wall for each of the tenants.
## Partners
We started to define the concept of a partner. This allows us to have partners that introduce tenants to Evie, or offer them additional functionality (specialists) or knowledge (catalogs). This concept is in an early stage at this point.
## Domains
In order to ensure a structured approach, we have defined several domains in the project:
- **User**: the user domain is used to store all data on partners, tenants, actual users.
- **Document**: the document domain is used to store all information on catalogs, documents, how to process documents, …
- **Interaction**: This domain allows us to define specialists, agents, … and to interact with the specialists and agents.
- **Entitlements**: This domain defines all license information, usage, …
# Project Structure
## Common
The common folder contains code that is used in different components of the system. It contains the following important pieces:
- **models**: in the models folder you can find the SQLAlchemy models used throughout the application. These models are organised in their relevant domains.
- **eveai_model**: some classes to handle usage, wrappers around standard LLM clients
- **langchain**: similar to eveai_model, but in the langchain library
- **services**: I started to define services to define reusable functionality in the system. There again are defined in their respective domains
- **utils**: a whole bunch of utility classes. Some should get converted to services classes in the future
- **utils/cache**: contains code for caching different elements in the application
## config
The config folder contains quite some configuration data (as the name suggests):
- **config.py**: general configuration
- **logging_config.py**: definition of logging files
- **model_config.py**: obsolete
- **type_defs**: contains the lists of definitions for several types used throughout the application. E.g. processor_types, specialist_types, …
- **All other folders**: detailed configuration of all the types defined in type_defs.
## docker
The docker folder contains the configuration and scripts used for all operations on configuring and building containers, distributing containers, …
## eveai_… folders
These are different components (containerized) of our application:
- **eveai_api**: The API of our application.
- **eveai_app**: The administrative interface of our application.
- **eveai_beat**: a means to install batch processes for our application.
- **eveai_chat**: obsolete at this moment
- **eveai_chat_workers**: celery based invocation of our specialists
- **eveai_client**: newly added. A desktop client to invoking specialists.
- **eveai_entitlements**: celery based approach to handling business events, measuring and updating usage, …
- **eveai_workers**: celery based approach to filling catalogs with documents (embedding)
## Remaining folders
- **integrations**: integrations to e.g. Wordpress and Zapier.
- **migrations**: SQLAlchemy database migration files (for public and tenant schema)
- **nginx**: configuration and static files for nginx
- **scripts**: various scripts used to start up components, to perform database operations, …