Instrumenting a Single Method

By default, weflayr_instrument wraps a full LLM client. When you only need to observe one specific call or instrument a plain function there are two patterns.

Wrapping a plain function

Pass any async function to weflayr_instrument. The name in methods must match the function’s .name property.

const { weflayr_setup, weflayr_instrument } = require('weflayr');

async function generateSummary(text) {
  const res = await fetch('https://api.openai.com/v1/chat/completions', {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ model: 'gpt-4o-mini', messages: [{ role: 'user', content: text }] }),
  });
  return res.json();
}

weflayr_setup({
  intake_url:    process.env.WEFLAYR_INTAKE_URL,
  client_id:     process.env.WEFLAYR_CLIENT_ID,
  client_secret: process.env.WEFLAYR_CLIENT_SECRET,
  methods: [
    {
      call: 'generateSummary'
    },
  ],
});

const trackedSummary = weflayr_instrument(generateSummary);

const result = await trackedSummary('Summarise this document', {
  __weflayr_tags: { feature: 'summarize', customer_id: '42' },
});
import os
import httpx
from weflayr import weflayr_setup, weflayr_instrument

def generate_summary(text, **kwargs):
    with httpx.Client() as client:
        res = client.post(
            "https://api.openai.com/v1/chat/completions",
            headers={"Authorization": f"Bearer {os.environ['OPENAI_API_KEY']}"},
            json={"model": "gpt-4o-mini", "messages": [{"role": "user", "content": text}]},
        )
        return res.json()

weflayr_setup({
    "intake_url":    os.environ["WEFLAYR_INTAKE_URL"],
    "client_id":     os.environ["WEFLAYR_CLIENT_ID"],
    "client_secret": os.environ["WEFLAYR_CLIENT_SECRET"],
    "methods": [
        {"call": "generate_summary"},
    ],
})

tracked_summary = weflayr_instrument(generate_summary)

result = tracked_summary(
    "Summarise this document",
    __weflayr_tags={"feature": "summarize", "customer_id": "42"},
)