0.1.3 • Published 2 years ago

@prosaic/sampling v0.1.3

Weekly downloads
-
License
INTERNAL
Repository
-
Last release
2 years ago

sampling

Common library for model sampling.

Installation:

Run

yarn add @prosaic/sampling

Usage:

For the most basic usage, the following is enough:

import { createSamplingStream, defaultModelParams } from '@prosaic/sampling';

// createSamplingStream returns an object containing the WebSocket instance:
const { client } = createSamplingStream({
  basicAuth: `Basic ${someAccessToken}`,
  convo: conversation,
  template: 'default',
  model: {
    // The `defaultModelParams` object is provided for convenience, with
    // a set of sane defaults for model params:
    ...defaultModelParams,
    name: 'model-name',
  },
  onSampleComplete: (data) => {
    console.log('Model says:', data.sampleResult);
  },
});

Additional options are available for the method:

createSamplingStream({
  basicAuth,
  convo,
  template,
  model,

  // A full url to be used for the WebSocket connection:
  url: 'https://foo.bar/foo/bar',

  // A WebSocket instance. This causes url above to be ignored completely:
  ws: new WebSocket('http://foo/bar),

  onSampleComplete,

  // Called every time new sampling data arrives, with the same signature as onSampleComplete:
  //
  // Returning `false` from this method will stop sampling, and cause `onSampleComplete` to be
  // called with `stopReason` set to `stopCallback`.
  onSampleChange: (data) => {},

  // Called with an Error object, if one arises during sampling:
  onError: (error) => {},

  // Called whenever the client internally logs something. If unset, `console.log/info/warn` is
  // used instead.
  onLog: (type: 'info' | 'warn', message) => {},
});

A promise-based interface is also available, which resolves once sampling is complete:

const sampleResult = await createSamplingStreamPromise({
  /* same options as above */,
  rejectOnError: true
});

If provided, callback methods will still be called, before the promise returns/rejects (if appropriate).