Skip to content

opengradient

Package opengradient

Version: 0.9.1

OpenGradient Python SDK for decentralized AI inference with end-to-end verification.

Overview

The OpenGradient SDK provides programmatic access to decentralized AI infrastructure. All LLM inference runs inside Trusted Execution Environments (TEEs) and settles on-chain via the x402 payment protocol, giving you cryptographic proof that inference was performed correctly.

The SDK operates across two chains with separate private keys:

  • llm (og.LLM) -- LLM chat and completion with TEE-verified execution. Pays via x402 on Base Sepolia (requires OPG tokens).
  • alpha (og.Alpha) -- On-chain ONNX model inference with VANILLA, TEE, or ZKML verification. Pays gas on the OpenGradient alpha testnet.
  • model_hub (og.ModelHub) -- Model repository management: create, version, and upload ML models. Requires email/password auth.
  • twins (og.Twins) -- Digital twins chat via verifiable inference. Requires a twins API key.

See opengradient.types for shared data types (TEE_LLM, InferenceMode, TextGenerationOutput, x402SettlementMode, etc.).

LLM Chat

python
import asyncio
import opengradient as og

llm = og.LLM(private_key="0x...")

# One-time OPG token approval (idempotent -- skips if allowance is sufficient)
llm.ensure_opg_approval(opg_amount=5)

# Chat with an LLM (TEE-verified)
response = asyncio.run(llm.chat(
    model=og.TEE_LLM.CLAUDE_SONNET_4_6,
    messages=[{"role": "user", "content": "Hello!"}],
    max_tokens=200,
))
print(response.chat_output)

Streaming

python
async def stream_example():
    llm = og.LLM(private_key="0x...")
    stream = await llm.chat(
        model=og.TEE_LLM.GPT_5,
        messages=[{"role": "user", "content": "Explain TEE in one paragraph."}],
        max_tokens=300,
        stream=True,
    )
    async for chunk in stream:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="")

asyncio.run(stream_example())

On-chain Model Inference

python
alpha = og.Alpha(private_key="0x...")
result = alpha.infer(
    model_cid="your_model_cid",
    inference_mode=og.InferenceMode.VANILLA,
    model_input={"input": [1.0, 2.0, 3.0]},
)
print(result.model_output)

Model Hub

python
hub = og.ModelHub(email="you@example.com", password="...")
repo = hub.create_model("my-model", "A price prediction model")
hub.upload("model.onnx", repo.name, repo.initialVersion)