Skip to main content

op

weaveDocs


weave / op

Function: op()

op(fn, options)

op<T>(fn, options?): Op<(...args) => Promise<Awaited<ReturnType<T>>>>

A wrapper to weave op-ify a function or method that works on sync and async functions.

Wrapped functions:

  1. Take the same inputs and return the same outputs as the original function.
  2. Will automatically track calls in the Weave UI.

If you don't call weave.init then the function will behave as if it were not wrapped.

Type Parameters

T extends (...args) => any

Parameters

fn: T

The function to wrap

options?: OpOptions<T>

Optional configs like call and param naming

Returns

Op<(...args) => Promise<Awaited<ReturnType<T>>>>

The wrapped function

Example

// Basic usage
import OpenAI from 'openai';
import * as weave from 'weave';

const client = await weave.init({ project: 'my-project' });
const oaiClient = weave.wrapOpenAI(new OpenAI());

const extract = weave.op(async function extract() {
return await oaiClient.chat.completions.create({
model: 'gpt-4-turbo',
messages: [{ role: 'user', content: 'Create a user as JSON' }],
});
});

await extract();

// You can also wrap methods by passing the object as the first argument.
// This will bind the method to the object and wrap it with op.
class MyModel {
private oaiClient: OpenAI;

constructor() {
this.oaiClient = weave.wrapOpenAI(new OpenAI());
this.invoke = weave.op(this, this.invoke);
}

async invoke() {
return await this.oaiClient.chat.completions.create({
model: 'gpt-4-turbo',
messages: [{ role: 'user', content: 'Create a user as JSON' }],
});
}
}

const model = new MyModel();
const res = await model.invoke();

Defined in

op.ts:58

op(thisArg, fn, options)

op<T>(thisArg, fn, options?): Op<(...args) => Promise<Awaited<ReturnType<T>>>>

Type Parameters

T extends (...args) => any

Parameters

thisArg: any

fn: T

options?: OpOptions<T>

Returns

Op<(...args) => Promise<Awaited<ReturnType<T>>>>

Defined in

op.ts:62