Neurosymbolic Engines Supported by SymbolicAI: Complete Provider Guide

SymbolicAI supports over 15 neurosymbolic engines spanning OpenAI GPT-4/5, Anthropic Claude, Google Gemini, DeepSeek, Groq, OpenRouter, and local inference via LLaMA-cpp and HuggingFace transformers, all unified under a common Engine interface in symai/backend/engines/neurosymbolic/.

SymbolicAI (extensityai/symbolicai) is a neurosymbolic programming framework that abstracts large language model interactions through a modular backend architecture. The framework's neurosymbolic engines handle token counting, request payload construction, and response post-processing, enabling seamless provider switching without code changes.

Overview of SymbolicAI Neurosymbolic Engine Architecture

All neurosymbolic engines in SymbolicAI inherit from the core Engine class and implement a standardized contract exposing forward(), prepare(), and token-budget helpers (compute_required_tokens, compute_remaining_tokens). This uniform interface allows high-level Symbol and Function abstractions to route requests through any registered backend via configuration alone.

Engines reside in the symai/backend/engines/neurosymbolic/ directory, with each provider implemented as a separate module handling provider-specific authentication, payload formatting, and response parsing.

Supported Neurosymbolic Engine Providers

SymbolicAI ships with dedicated engine implementations for major cloud providers, aggregation services, and local inference options.

OpenAI GPT-X Series

The OpenAI integration splits into chat-optimized and reasoning-optimized variants:

Anthropic Claude

Direct Anthropic API integration supporting both conversational and analytical modes:

Google Gemini

DeepSeek

Aggregation and Specialized Providers

OpenRouter (engine_openrouter.py): Proxy-compatible engine supporting any model hosted on OpenRouter (Mixtral, Claude-via-OpenRouter, etc.). Handles API-key injection, model-name prefix stripping, and optional "thinking" tag extraction.

Groq (engine_groq.py): Low-latency inference on Groq's hosted Llama-3 and Claude-like models, utilizing the same token-management utilities as OpenAI engines.

Cerebras (engine_cerebras.py): Direct integration with Cerebras' LLM service, exposing unique token-counting logic for their hardware-optimized inference.

Local Inference Engines

LLaMA-cpp (engine_llama_cpp.py): Runs a locally compiled LLaMA-cpp binary for entirely offline inference. Requires the binary on PATH and a local model file.

HuggingFace Transformers (engine_huggingface.py): Wraps any HuggingFace AutoModelForCausalLM pipeline, supporting optional quantization and custom model loading for self-hosted deployments.

Configuring and Using Neurosymbolic Engines

SymbolicAI uses a configuration-driven approach to engine selection, allowing runtime provider switching without code modification.

Selecting an Engine via Configuration

import symai as sy

# Load the default config (searches ~/.symai/, CWD, etc.)

config = sy.config_manager()

# Configure OpenAI GPT-4o-mini as the neurosymbolic engine

config["NEUROSYMBOLIC_ENGINE_MODEL"] = "gpt-4o-mini"
config["NEUROSYMBOLIC_ENGINE_API_KEY"] = "sk-..."

# The EngineRepository registers this automatically on import

# All subsequent SymbolicAI operations use the configured engine

Using Functions with Specific Engines

Override the default engine for individual function calls:

from symai import Function, zero_shot

@zero_shot(prompt="Solve the equation: {{ equation }}")
def solve(equation: str) -> str:
    ...

# Route through OpenRouter with specific model

result, meta = solve(
    equation="x**2 - 5*x + 6 = 0",
    engine="openrouter",
    model="openrouter:meta-llama/Meta-Llama-3.1-70B-Instruct",
    api_key="or-..."
)

print(result)           # LLM-generated solution

print(meta["thinking"]) # Optional extracted reasoning block

Running Local LLaMA-cpp Offline


# Ensure llama.cpp binary is on PATH and model file exists

config["NEUROSYMBOLIC_ENGINE_MODEL"] = "llama_cpp"
config["NEUROSYMBOLIC_ENGINE_API_KEY"] = ""  # Not required for local inference

from symai import Function, zero_shot

@zero_shot(prompt="Summarize:\n{{ text }}")
def summarize(text: str) -> str:
    ...

summary, _ = summarize(
    text="Quantum computing promises exponential speed-ups...",
    engine="llama_cpp"
)
print(summary)

Key Implementation Files

File Role
symai/backend/engines/neurosymbolic/__init__.py Package initialization and convenience exports
engine_openai_gptX_chat.py OpenAI GPT-4/5 chat models with vision and function calling
engine_openai_gptX_reasoning.py OpenAI reasoning-optimized engine with token truncation
engine_openai_responses.py Legacy OpenAI completion endpoint wrapper
engine_openrouter.py OpenRouter proxy for multi-provider access
engine_groq.py Groq low-latency inference engine
engine_anthropic_claudeX_chat.py Anthropic Claude conversational mode
engine_anthropic_claudeX_reasoning.py Anthropic Claude analytical reasoning
engine_google_geminiX_reasoning.py Google Gemini reasoning with token budgets
engine_deepseekX_reasoning.py DeepSeek model support
engine_cerebras.py Cerebras hardware-optimized inference
engine_llama_cpp.py Local LLaMA-cpp binary execution
engine_huggingface.py HuggingFace transformers pipeline wrapper

Summary

  • SymbolicAI supports 15+ neurosymbolic engines spanning commercial APIs, aggregation services, and local inference options.
  • All engines inherit from a common Engine base class in symai/backend/engines/neurosymbolic/, providing uniform forward(), prepare(), and token-management methods.
  • Configuration-driven selection allows runtime switching between OpenAI, Anthropic, Google, DeepSeek, Groq, OpenRouter, Cerebras, and local LLaMA-cpp or HuggingFace models without code changes.
  • Specialized implementations handle provider-specific features like OpenAI function calling, Anthropic tool use, OpenRouter model prefix stripping, and LLaMA-cpp offline execution.

Frequently Asked Questions

How do I switch between neurosymbolic engines in SymbolicAI?

Use the config_manager() to set NEUROSYMBOLIC_ENGINE_MODEL and NEUROSYMBOLIC_ENGINE_API_KEY. The EngineRepository automatically registers the selected engine on import, routing all subsequent Symbol and Function calls through the new provider without requiring code modifications.

Can I use multiple neurosymbolic engines in the same SymbolicAI application?

Yes. While the configuration sets a default engine, you can override the engine for individual function calls by passing engine, model, and api_key parameters directly to the Function or Symbol method. This enables routing specific tasks to specialized providers, such as using Groq for low-latency calls and OpenAI for complex reasoning.

What is the difference between chat and reasoning engine variants in SymbolicAI?

Chat-optimized engines (e.g., engine_openai_gptX_chat.py, engine_anthropic_claudeX_chat.py) are tuned for conversational interactions, supporting features like vision inputs, function calling, and streaming responses. Reasoning-optimized engines (e.g., engine_openai_gptX_reasoning.py, engine_anthropic_claudeX_reasoning.py) focus on analytical tasks with enhanced token-budget enforcement, truncation logic, and extended context handling for complex problem-solving workflows.

How do I run SymbolicAI with a local model using LLaMA-cpp?

Set NEUROSYMBOLIC_ENGINE_MODEL to "llama_cpp" and ensure the llama.cpp binary is available on your system PATH with a local model file. No API key is required. Import symai and use Function or zero_shot decorators normally; the engine routes requests to your local binary for fully offline inference.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →