Raw LLM Clients

For agents that call a provider's SDK directly, with no framework in between. In Python, govern_client() wraps the client once and hands back the same object — use it exactly as before. TypeScript doesn't have a per-provider wrapper yet, so gate manually with checkPrompt() / checkResponse() around the call.

See Custom Agents first if you haven't installed the SDK or called start() yet.

OpenAI

from netzilo.openai_sdk import govern, govern_client
from openai import OpenAI

govern()
client = govern_client(OpenAI())

resp = client.chat.completions.create(
    model="gpt-4o", messages=[{"role": "user", "content": "..."}]
)

Anthropic

from netzilo.anthropic_sdk import govern, govern_client
from anthropic import Anthropic

govern()
client = govern_client(Anthropic())

resp = client.messages.create(
    model="claude-sonnet-4-6", max_tokens=1024,
    messages=[{"role": "user", "content": "..."}],
)

AWS Bedrock

from netzilo.bedrock import govern, govern_client
import boto3

govern()
client = govern_client(boto3.client("bedrock-runtime"))

resp = client.converse(
    modelId="anthropic.claude-sonnet-4-6-v1:0",
    messages=[{"role": "user", "content": [{"text": "..."}]}],
)

Google Gemini

from netzilo.gemini import govern, govern_client
from google import genai

govern()
client = govern_client(genai.Client())

resp = client.models.generate_content(model="gemini-2.5-flash", contents="...")

Mistral

from netzilo.mistral import govern, govern_client
from mistralai import Mistral

govern()
client = govern_client(Mistral(api_key="..."))

resp = client.chat.complete(
    model="mistral-large-latest", messages=[{"role": "user", "content": "..."}]
)