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.11.0.tar.gz (62.9 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.11.0-py3-none-any.whl (47.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cross_ai_core-0.11.0.tar.gz
  • Upload date:
  • Size: 62.9 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.11.0.tar.gz
Algorithm Hash digest
SHA256 8baf0100cd46545ef694dbef2d9ecb15035ba56b44d7e52b8ab9d61b54ddcac9
MD5 91c7cedaee505e869813cc93ffd58410
BLAKE2b-256 830ace85abcee749a6e6d537ac99d6f002c470c438a63e6f3fa86729426abd0e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cross_ai_core-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 47.1 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.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 99fd98ae372f703eb42df12185ca2d6e5abe2f9337c90f437f7838e7a6cd7055
MD5 e6af435fa2c5687b25f541c9f50ba6f8
BLAKE2b-256 60e42a54b3ef6b32dceb748e680ee4827427e531288af1b8fcdad9bdaf90fe8e

See more details on using hashes here.

Release history Release notifications | RSS feed

2026.8.0

2 files

This release

0.11.0 This release

2 files

0.10.0

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