Skip to main content

cross-ai-core

PyPI version Python License: MIT

Multi-provider AI dispatcher with MD5-keyed response caching and unified error handling.

Supports Anthropic, xAI (Grok), OpenAI, Google Gemini, and Perplexity through a single consistent interface.

Requirements

  • Python 3.10 or newer (3.11 recommended for development)
  • No upper version limit — tested on 3.10–3.13

Install

Install only the provider(s) you need:

pip install "cross-ai-core[anthropic]"   # Claude
pip install "cross-ai-core[gemini]"      # Google Gemini
pip install "cross-ai-core[openai]"      # OpenAI (ChatGPT)
pip install "cross-ai-core[xai]"         # xAI Grok  (uses the OpenAI SDK)
pip install cross-ai-core                # Perplexity only (uses requests, no extra SDK)

Install all providers at once (used by cross-st, which runs all 5 simultaneously):

pip install "cross-ai-core[all]"

Dependencies

requests is always installed — it is used for the Perplexity provider and general HTTP.
The three provider SDKs are optional extras; pip installs only what you request.

Extra Package Version Providers covered
(base) requests ≥2.32.4 Perplexity
[anthropic] anthropic ≥0.84.0 Anthropic / Claude
[gemini] google-genai ≥1.65.0 Google Gemini
[openai] openai ≥1.70.0 OpenAI
[xai] openai ≥1.70.0 xAI / Grok (OpenAI-compatible API)
[all] all three above All 5 providers

Quick start

Calls are dispatched through agents — named (provider, model) pairs. See the cross-st Agents wiki page for the full concept; the minimal version is one JSON file at ~/.cross_ai_models.json:

{
  "version": 2,
  "agents": {
    "xai":       {"make": "xai",       "model": null},
    "anthropic": {"make": "anthropic", "model": null}
  }
}

If you also use cross-st, running st-admin --setup once will detect every API key in ~/.crossenv and seed one starter agent per provider for you. Standalone users can write the file by hand or set CROSS_AI_AGENTS_FILE=/path/to/file.json to point at an alternative.

import os
from dotenv import load_dotenv
load_dotenv(os.path.expanduser("~/.crossenv"))  # your app loads keys; the library reads os.environ

from cross_ai_core import process_prompt, get_content_auto, get_default_ai

agent  = get_default_ai()           # DEFAULT_AGENT env var, then DEFAULT_AI (legacy),
                                    # then first agent in ~/.cross_ai_models.json
result = process_prompt(
    agent,
    "Explain transformer attention in 3 sentences.",
    system="You are a concise technical writer.",   # omit to use each provider's default
    verbose=False,
    use_cache=True,
)
print(get_content_auto(result.response))            # auto-dispatches via the _make stamp

Breaking change in 0.8.0: built-in provider names are no longer auto-registered as self-agents. process_prompt("xai", …) raises ValueError: Unsupported AI model: 'xai'. No agents defined. if the registry is empty. Define at least one agent (above) before the first call.

For older callers, get_content(agent, result.response) still works (it alias-resolves the agent → provider make internally).

Configuration (environment variables)

Variable Default Purpose
DEFAULT_AGENT (first agent in registry) Default agent when none is specified (set by st-admin > AI > d in cross-st 0.10+)
DEFAULT_AI Legacy pre-Agents-v2 spelling of DEFAULT_AGENT; still read for back-compat
CROSS_AI_AGENTS_FILE ~/.cross_ai_models.json Path to the agent registry JSON
<AGENT_UPPER>_MODEL Per-agent model override (e.g. ANTHROPIC_OPUS_MODEL=claude-opus-future)
<MAKE_UPPER>_MODEL Per-provider model override (e.g. ANTHROPIC_MODEL=claude-3-5-haiku-latest)
XAI_API_KEY xAI / Grok API key
ANTHROPIC_API_KEY Anthropic / Claude API key
OPENAI_API_KEY OpenAI API key
GEMINI_API_KEY Google Gemini API key
PERPLEXITY_API_KEY Perplexity API key
CROSS_API_CACHE_DIR ~/.cross_api_cache/ Response cache directory
CROSS_NO_CACHE Set to 1 to disable caching globally
CROSS_NO_CLIENT_CACHE Set to 1 to disable per-provider client singleton caching

The library only reads from os.environ — it never calls load_dotenv() itself.
Load your .env or ~/.crossenv before importing.
You only need to set API keys for the providers you actually use.

Caching

Responses are cached by MD5 hash of the request payload in ~/.cross_api_cache/.
The cache is safe to delete at any time.

# Bypass cache for one call
result = process_prompt(provider, prompt, verbose=False, use_cache=False)

# Check if a response was served from cache
if result.was_cached:
    print("from cache")

Development

cd ~/github/cross-ai-core
python3.11 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"     # installs the package + pytest + pytest-mock

Run the test suite:

python -m pytest tests/ -v

Tests use mocks — no real API keys required.

Note: Keep each repo's .venv separate; do not share it with dependent projects.

Adding a provider

  1. Create cross_ai_core/ai_<name>.py implementing BaseAIHandler (get_payload, get_client, get_cached_response, get_model, get_make, get_content, put_content, get_data_content, get_title, get_usage).
  2. Register in cross_ai_core/ai_handler.py: add to AI_HANDLER_REGISTRY and AI_LIST.

Documentation

  • API reference — all public functions, AIResponse, parallel calls, error handling
  • Providers — per-provider guide: models, API keys, strengths, free tiers
  • Changelog

Used by

Project PyPI Description
cross-st cross-st Multi-AI research reports with cross-product fact-checking. Installs this package automatically via cross-ai-core[all]. Full CLI toolkit — pipx install cross-st.

Building something with cross-ai-core? Open a PR or issue to get listed here.

Community & support

Questions, ideas, bug reports, or just want to share what you're building?

  • 💬 crossai.dev community forum — Discourse-powered discussion for cross-ai-core, cross-st, and the wider Cross family. Ask questions, share prompts, or compare provider results. Invite-only sign-up keeps it friction-free for real users; see the cross-st wiki for the one-command onboarding (st-admin --discourse-setup).
  • 🐛 GitHub issues — bug reports and feature requests.
  • 🎬 YouTube @crossaicore — walkthroughs and release notes.

Tagline: AI reports. Cross-examined.

License

MIT — free for personal, academic, and open-source use.
See COMMERCIAL_LICENSE.md for organizational and commercial use.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cross_ai_core-0.10.0.tar.gz (63.1 kB view details)

Uploaded Source

Built Distribution

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

cross_ai_core-0.10.0-py3-none-any.whl (47.7 kB view details)

Uploaded Python 3

File details

Details for the file cross_ai_core-0.10.0.tar.gz.

File metadata

  • Download URL: cross_ai_core-0.10.0.tar.gz
  • Upload date:
  • Size: 63.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for cross_ai_core-0.10.0.tar.gz
Algorithm Hash digest
SHA256 e9273ce5823f48b26d1567c0ee31016cc0dc830d717275e0df761a2758add45b
MD5 c58196373ef7f5a988fef7dc033a6dc9
BLAKE2b-256 27d31ace19b461f101cbcda023929e1ba36a18f2d58e316e2619570df6c79833

See more details on using hashes here.

File details

Details for the file cross_ai_core-0.10.0-py3-none-any.whl.

File metadata

  • Download URL: cross_ai_core-0.10.0-py3-none-any.whl
  • Upload date:
  • Size: 47.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for cross_ai_core-0.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 685f6ae345f00e6e88ee194e88ec80f0a4df6ca4cb36e4703945f874a8109edd
MD5 93fff242d999f3e39f4ff070a42e91d3
BLAKE2b-256 02d5ac10475acc739c3a2bafd94ce3567088fe360470e882edd306503342a761

See more details on using hashes here.

Release history Release notifications | RSS feed

2026.8.0

2 files

0.11.0

2 files

This release

0.10.0 This release

2 files

0.9.0

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 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