Skip to main content

ai-factory-model

PyPI version Supported Python Versions Build Status License Coverage Status PyPI - Downloads

Description

ai-factory-model is a modular Python library aimed at integrating with multiple language models (LLMs), cloud providers, and auxiliary utilities for development and infrastructure.

This library is designed to facilitate interaction with LLMs from OpenAI, Azure, Google, and Ollama, also integrating authentication, external configuration, Jinja2 templates, and reusable components.

Features

  • Support for multiple LLM models:
    • OpenAI (chat and embeddings)
    • Azure OpenAI
    • Google Generative AI
    • Ollama
    • LangChain and variants
  • Configuration modules (decouple, YAML)
  • Authentication via Azure Identity
  • Content generation via Jinja2 templates
  • Clear separation of responsibilities with modules such as:
    • logger
    • security
    • auth_clients
    • model_* (interfaces for different LLMs)

Installation

From PyPI:

pip install ai-factory-model

Optional modules:

pip install ai-factory-model[google_genai]
pip install ai-factory-model[community]
pip install ai-factory-model[ollama]
pip install ai-factory-model[cohere]
pip install ai-factory-model[pgvector]

Setup

To use the model factory, you need to define a series of environment variables that allow connection to the various model hosting services:

AZURE_TENANT_ID = <id_tenant_azure>
AZURE_CLIENT_ID = <id_client_azure>
AZURE_CLIENT_SECRET = <secret_passphrase_azure_client>
AZURE_TOKEN_URL = <azure_url_token>

For enhanced security, there is a connection to KeyVault. To define the connection to the corresponding key store, use:

KV_NAME = <kv_name>
KV_TENANT_ID = <id_kv_tenant>
KV_CLIENT_ID = <id_kv_client>
KV_SECRET = <secret_passphrase_kv>

With the KeyVault connection established, the values to be retrieved from the key store should be specified using the following nomenclature:

VARIABLE_SECRET = kv{name-of-secret-at-kv}

For example:

# Transition from having the secret in raw form
AZURE_CLIENT_SECRET = <secret_passphrase_azure_client>

# To retrieving it from the KV
AZURE_CLIENT_SECRET = kv{<name_secret_azure_client>}

Additionally, if you have a file containing the various model configurations you wish to use, you should specify it with the corresponding variable.

MODELS_CONFIG_FILE = <path_to_models_declarations_file>

Basic usage

Using prompt:

from ai_factory_model import ModelFactory

model = ModelFactory.get_model("azai_gtp4o")
params = ["Eres un guía turístico", "¿Dónde está Plasencia?"]

response = model.prompt(params=params)

print(type(response))
# Output:
# <class 'str'>

print(response)
# Output:
# Plasencia es una ciudad situada en la comunidad autónoma de Extremadura, en el oeste de España. Se encuentra en la provincia de Cáceres, a orillas del río Jerte. Plasencia está aproximadamente a unos 80 kilómetros al norte de la ciudad de Cáceres y a unos 250 kilómetros al oeste de Madrid. Es conocida por su casco histórico, que incluye la Catedral de Plasencia, y por su cercanía al Valle del Jerte, famoso por sus cerezos en flor.

Using langchain instance:

from ai_factory_model import ModelFactory

model = ModelFactory.get_model("azai_gtp4o")
params = ["Eres un guía turístico", "¿Cuál es la capital de España?"]

response = model.get_client.invoke([
    {"role": "system", "content": params[0]},
    {"role": "user", "content": params[1]}
])

print(type(response))
# Output:
# <class 'langchain_core.messages.ai.AIMessage'>

print(f"{response.content}")
# Output:
# La capital de España es Madrid. Es una ciudad vibrante y llena de historia, conocida por su rica cultura, su arquitectura impresionante y su animada vida nocturna. Además, Madrid alberga importantes museos como el Museo del Prado y el Museo Reina Sofía, así como el Palacio Real y el Parque del Retiro.

Render a template:

from ai_factory_model import ModelFactory, SEP_PATTERN

model = ModelFactory.get_model("azai_gtp4o")
params = {"system": "Eres un guía turístico", "user": "¿Qué visitar en Mérida de Extremadura?"}

template_content = (
    f"{{{{ system }}}}"
    f"{SEP_PATTERN}"
    f"{{{{ user }}}}"
)
prompt_template = Template(template_content)

response = model.prompt_render(
    template=prompt_template,
    params=params,
    sep_pattern=SEP_PATTERN
)

print(type(response))
# Output:
# <class 'str'>

print(f"{response}")
# Output:
# ¡Mérida es una ciudad fascinante llena de historia y patrimonio! Es conocida por su impresionante legado romano, ya que fue una de las ciudades más importantes de la antigua Hispania. Aquí tienes una lista de los lugares imprescindibles que deberías visitar en Mérida: [...]

Project structure

ai_factory_model/
├── ai_factory_model/
│   ├── __init__.py
│   ├── config/
│   ├── llm/
│   ├── logger/
│   ├── security/
│   ├── vectordb/
├── pyproject.toml
├── requirements.txt
└── README.md

Dependencies

This package requires the followind external libraries:

  • python-decouple
  • PyYAML
  • openai
  • jinja2
  • azure-core
  • azure-identity
  • azure-keyvault-secrets
  • langchain
  • langchain-openai
  • langchain-azure-ai
  • azure-search-documents

With optional extra libraries

pip install ai-factory-model[google_genai]
  • langchain-google-genai
pip install ai-factory-model[community]
  • langchain-community
pip install ai-factory-model[ollama]
  • langchain-ollama
pip install ai-factory-model[cohere]
  • langchain-cohere
pip install ai-factory-model[pgvector]
  • psycopg[binary]

Requirements

  • Python 3.12 o superior
  • Credential access/API keys to your needed providers (OpenAI, Azure, etc.)

Metadata

Release files for ai-factory-model 0.0.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ai-factory-model 0.0.12
File Size Uploaded
ai_factory_model-0.0.12.tar.gz 41.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ai-factory-model 0.0.12
File Interpreter ABI Platform
ai_factory_model-0.0.12-py3-none-any.whl Python 3 none any Details

Total release size: 68.8 kB

Release files / ai_factory_model-0.0.12.tar.gz

Download URL ai_factory_model-0.0.12.tar.gz
Size 41.5 kB
Tags Source
SHA-256 checksum
How to use checksums
26283619f5c6ffffaec7b254482718433a12e9d76c8ffc9f72abf7458c627507
BLAKE2b-256 checksum
How to use checksums
3755217d6d3288f997111acc26d936b19098a851437193bd26adf8b6476baab8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / ai_factory_model-0.0.12-py3-none-any.whl

Download URL ai_factory_model-0.0.12-py3-none-any.whl
Size 27.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
38b8c2267ef8a515e2be0fd28a83841b7d3ade4bb966331676af48261d32ce04
BLAKE2b-256 checksum
How to use checksums
93bca344e2c9fd0355916c4409fa59508653005f6bf47d429e13a0f451f0e3ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release history Release notifications | RSS feed

This release

0.0.12 This release

2 release files

0.0.11

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page