Crusoe
Crusoe provides managed inference for leading open-weight language models on renewable-powered GPU infrastructure. Crusoe Managed Inference is accessible through OpenAI’s SDK via full API compatibility, allowing easy and portable integration with the Strands Agents SDK using the familiar OpenAI interface.
Installation
Section titled “Installation”The Strands Agents SDK provides access to Crusoe Managed Inference models through the OpenAI compatibility layer, configured as an optional dependency. To install, run:
pip install 'strands-agents[openai]' strands-agents-toolsAfter installing the openai package, you can import and initialize the Strands Agents’ OpenAI-compatible provider for Crusoe models as follows:
import astimport operator
from strands import Agent, toolfrom strands.models.openai import OpenAIModel
@tooldef calculator(expression: str) -> str: """Evaluate an arithmetic expression such as "144 ** 0.5" or "450 / 120".
Args: expression: The arithmetic expression to evaluate. """ ops = {ast.Add: operator.add, ast.Sub: operator.sub, ast.Mult: operator.mul, ast.Div: operator.truediv, ast.USub: operator.neg}
def ev(n): if isinstance(n, ast.Constant) and isinstance(n.value, (int, float)): return n.value if isinstance(n, ast.BinOp) and isinstance(n.op, ast.Pow): base, exp = ev(n.left), ev(n.right) if abs(exp) > 64: raise ValueError(f"exponent too large in {expression!r}: {exp}") return base**exp if isinstance(n, ast.BinOp) and type(n.op) in ops: return ops[type(n.op)](ev(n.left), ev(n.right)) if isinstance(n, ast.UnaryOp) and type(n.op) in ops: return ops[type(n.op)](ev(n.operand)) raise ValueError( f"{expression!r} is not arithmetic; supported: + - * / ** and parentheses over numbers" )
return str(ev(ast.parse(expression, mode="eval").body))
model = OpenAIModel( client_args={ "api_key": "<CRUSOE_API_KEY>", "base_url": "https://api.inference.crusoecloud.com/v1/", }, model_id="zai/GLM-5.2", # or see https://docs.crusoecloud.com/managed-inference/overview params={ "max_tokens": 5000, "temperature": 0.1 })
agent = Agent(model=model, tools=[calculator])agent("What is 2+2?")Configuration
Section titled “Configuration”Client Configuration
Section titled “Client Configuration”The client_args configure the underlying OpenAI-compatible client. When using Crusoe Managed Inference, you must set:
api_key: Your Crusoe Inference API key. Generate one in the Security tab of the Crusoe Cloud Console.base_url:https://api.inference.crusoecloud.com/v1/
Refer to OpenAI Python SDK GitHub for full client options.
Model Configuration
Section titled “Model Configuration”The model_config specifies which Crusoe model to use and any additional parameters.
| Parameter | Description | Example | Options |
|---|---|---|---|
model_id | Model name | zai/GLM-5.2 | See Crusoe Managed Inference models |
params | Model-specific parameters | {"max_tokens": 5000, "temperature": 0.7, "top_p": 0.9} | OpenAI-compatible chat completion parameters |
Troubleshooting
Section titled “Troubleshooting”ModuleNotFoundError: No module named 'openai'
Section titled “ModuleNotFoundError: No module named 'openai'”You must install the openai dependency to use this provider:
pip install 'strands-agents[openai]'Unexpected model behavior?
Section titled “Unexpected model behavior?”Ensure you’re using a model ID available on Crusoe Managed Inference (e.g., zai/GLM-5.2, nvidia/Nemotron-3-Super-120B-A12B, google/gemma-4-31b-it), and your base_url is set to https://api.inference.crusoecloud.com/v1/.