Raw SDK

Use Fuze with raw OpenAI or Anthropic SDK calls — no framework required.

TypeScript

import { guard } from 'fuze-ai'
import OpenAI from 'openai'

const client = new OpenAI()

const tools = {
  search: guard(async (query: string) => {
    return await vectorDb.search(query)
  }),
  send_email: guard(
    async (to: string, body: string) => {
      return await ses.sendEmail(to, body)
    },
    { sideEffect: true, compensate: recallEmail }
  ),
}

async function handleToolCall(toolCall: any) {
  const fn = tools[toolCall.function.name]
  const args = JSON.parse(toolCall.function.arguments)
  return await fn(...Object.values(args))
}

Python

from fuze_ai import guard
from anthropic import Anthropic

client = Anthropic()

@guard
def search(query: str):
    return vector_db.search(query)

@guard(side_effect=True, compensate=recall_email)
def send_email(to: str, body: str):
    return ses.send_email(to, body)

tools = {"search": search, "send_email": send_email}

def handle_tool_use(tool_use):
    fn = tools[tool_use.name]
    return fn(**tool_use.input)

Batch wrapping

from fuze_ai import guard_all

guarded = guard_all(
    {"search": search_fn, "calculate": calc_fn, "send_email": email_fn},
    side_effects=["send_email"]
)