Framework integrations
Sable is OpenAI-compatible, so every agent framework that talks to the OpenAI
Chat Completions API works by changing two things: the base URL and the
API key. No adapter, no plugin. Point the framework at
https://api.buildsable.com/v1, use a sk-sable_… key, and pick a
Sable model id.
Set
SABLE_API_KEYin your environment for every snippet below.
LangChain
LangChain's ChatOpenAI accepts a custom base URL directly.
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="sable-llama-3.3-70b",
base_url="https://api.buildsable.com/v1",
api_key="sk-sable_...", # or os.environ["SABLE_API_KEY"]
)
print(llm.invoke("Summarize this contract clause.").content)Vercel AI SDK
Create a provider instance pinned to Sable, then use it like any model.
import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";
const sable = createOpenAI({
baseURL: "https://api.buildsable.com/v1",
apiKey: process.env.SABLE_API_KEY,
});
const { text } = await generateText({
model: sable("sable-llama-3.3-70b"),
prompt: "Draft a reply to this email.",
});
console.log(text);LlamaIndex
Use OpenAILike for OpenAI-compatible endpoints — it skips the model-name
allowlist that the stock OpenAI class enforces.
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(
model="sable-llama-3.3-70b",
api_base="https://api.buildsable.com/v1",
api_key="sk-sable_...",
is_chat_model=True,
)
print(llm.complete("Extract the action items from these notes."))CrewAI
CrewAI routes through LiteLLM. Prefix the model with openai/ so LiteLLM uses
the OpenAI-compatible path, and point it at Sable.
from crewai import LLM
llm = LLM(
model="openai/sable-llama-3.3-70b",
base_url="https://api.buildsable.com/v1",
api_key="sk-sable_...",
)
# Pass llm=llm to any Agent(...) you construct.Anything else
If a tool takes an OpenAI base URL, it takes Sable. The official OpenAI SDKs,
Instructor, Continue, Cline, OpenWebUI, the openai CLI: point the base URL at
https://api.buildsable.com/v1, use your Sable key, and you're done. The
Sable SDKs (@sable-network/sdk, sable-network) are thin
wrappers that fill in the base URL for you.
Whichever framework makes the call, it still comes back with a signed receipt and still respects your per-key controls: spend caps, model allowlists, and expiry.