Skip to main content

SyntaxMatrix Agent Development Kit for calling deployed SyntaxMatrix Agent Services.

Project description

smxADK

smxADK stands for SyntaxMatrix Agent Development Kit.

It is a lightweight Python SDK for calling a deployed SyntaxMatrix Agent Service from any Python project.


Installation

For local development:

pip install -e .

Basic Usage

from smxadk import SMXAgentClient

client = SMXAgentClient(
    base_url="https://your-agent-service-url"
)

response = client.chat(
    message="Explain RAG in two short sentences.",
    mode="expert",
)

print(response.answer)
print(response.usage.total_tokens)


Self-Hosting Model

smxADK is designed for self-hosted SyntaxMatrix deployments.

The client organisation owns and operates its own backend infrastructure:

Client Application
      ↓
smxADK
      ↓
Client-owned Agent Service
      ↓
Client-owned LiteLLM Proxy
      ↓
Client-owned Ollama / vLLM backends

This means:

  • the client owns the backend URLs;
  • the client pays for their own GPUs, CPUs, storage, and networking;
  • the client controls their own data boundary;
  • SyntaxMatrix provides the SDK, deployment tooling, templates, and framework.

smxADK should not be hardcoded to use SyntaxMatrix-owned infrastructure.
The caller must provide the deployed Agent Service URL:

from smxadk import SMXAgentClient

client = SMXAgentClient(
    base_url="https://client-owned-agent-service-url"
)

Deployment Configuration

Client organisations define their available model routes in:

smx_deployment.yaml

Example:

agent_service:
  supported_modes:
    - light
    - medium
    - heavy
    - expert
    - expert-heavy

models:
  light:
    provider: ollama
    model: your-light-model-name
    api_base: https://client-light-ollama-service-url

  medium:
    provider: ollama
    model: your-medium-model-name
    api_base: https://client-medium-ollama-service-url

  heavy:
    provider: ollama
    model: your-heavy-model-name
    api_base: https://client-heavy-ollama-service-url

  expert:
    provider: openai_compatible
    model: your-expert-model-name
    api_base: https://client-expert-vllm-service-url/v1    

  expert-heavy:
    provider: openai_compatible
    model: your-expert-heavy-model-name
    api_base: https://client-expert-heavy-vllm-service-url/v1

model: your-light-model-name model: your-medium-model-name model: your-expert-model-name

The client does not need to deploy every possible route.
They only declare the routes they actually have.


Generating Deployment Files

Run:

smxadk generate

This generates:

../llm-proxy/config.yaml
../agent-service/supported_modes.txt

The generated LiteLLM config maps each route to the client-owned backend URL.

The generated supported_modes.txt tells the Agent Service which modes it should accept.


Runtime Route Discovery

After deployment, applications can discover available routes:

from smxadk import SMXAgentClient

client = SMXAgentClient(
    base_url="https://client-owned-agent-service-url"
)

print(client.supported_modes())

Example output:

["light", "medium", "expert"]

If a caller requests a mode that is not supported, the Agent Service rejects it cleanly before calling LiteLLM.


Separation of Responsibilities

smx_deployment.yaml      → client backend routes and model catalogue
LiteLLM Proxy            → backend URL routing
Agent Service            → request validation and orchestration
smxADK                   → client SDK for application developers

The ADK only talks to the Agent Service.
It does not need to know the individual model backend URLs.


Health Check

from smxadk import SMXAgentClient

client = SMXAgentClient(
    base_url="https://your-agent-service-url"
)

health = client.health()

print(health.status)
print(health.supported_modes)

Streaming Chat

from smxadk import SMXAgentClient

client = SMXAgentClient(
    base_url="https://your-agent-service-url"
)

for chunk in client.stream_chat(
    message="Explain RAG in two short sentences.",
    mode="expert",
):
    print(chunk, end="", flush=True)

Supported Agent Service Endpoints

smxADK currently supports:

GET  /health
POST /chat
POST /chat/stream

Explicit Model Routing

The caller must explicitly choose the model route.

Example:

response = client.chat(
    message="Write a short summary.",
    mode="light",
)

Available modes depend on the deployed Agent Service.

Current example modes:

light
medium
heavy
expert
expert-heavy

Response Shape

client.chat() returns a ChatResponse object:

response.answer
response.mode
response.usage.prompt_tokens
response.usage.completion_tokens
response.usage.total_tokens

Project Structure

smx-adk/
├── pyproject.toml
├── README.md
└── smxadk/
    ├── __init__.py
    ├── client.py
    └── schemas.py

Design Goal

smxADK is designed to make deployed SyntaxMatrix Agent Services easy to plug into:

  • FastAPI apps
  • Dash apps
  • Flask apps
  • notebooks
  • internal tools
  • enterprise AI assistants
  • SyntaxMatrix-based applications

Licence

Proprietary / SyntaxMatrix.

Project details


Download files

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

Source Distribution

smxadk-0.1.2.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

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

smxadk-0.1.2-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file smxadk-0.1.2.tar.gz.

File metadata

  • Download URL: smxadk-0.1.2.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for smxadk-0.1.2.tar.gz
Algorithm Hash digest
SHA256 5a22b17687ff9713491dd740942005911674346acb4c4bc4c9c12fccb643bca6
MD5 b9d7c0d2a80e8f47cfbf08fffc8a36e7
BLAKE2b-256 d7841f2330ef4d3e5f8ece8c25310b8fc85e39533126fa80a0e44f426ea3cb02

See more details on using hashes here.

File details

Details for the file smxadk-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: smxadk-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for smxadk-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 20643f8790d04959f7664113247a4b5eaf30e7815d05e76d46a71dc151223782
MD5 59eb09f5675e9b8aeb98cfc100651f36
BLAKE2b-256 03268f37f545cf29ce302fbde975f746cfb42aca733952cbafb43f555395388e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page