API Reference

Adapter Types

OpenRouter adapter and EmbedFn type for semantic routing and convergence.

EmbedFn

Batch embedding function that maps N texts to N vectors. Used by semanticSwitch, embeddingMatch, and until.converged.

type EmbedFn = (texts: readonly string[]) => Promise<readonly number[][]>;

OpenRouter Adapter

Factory functions that create CallModelFn and EmbedFn implementations backed by the @openrouter/sdk.

createOpenRouterCallModel(client)

Creates a CallModelFn from an existing OpenRouter client instance.

import { OpenRouter } from '@openrouter/sdk';
import { createOpenRouterCallModel } from '@noetic/core';

const client = new OpenRouter({ apiKey: process.env.OPENROUTER_API_KEY });
const callModel = createOpenRouterCallModel(client);
ParameterTypeRequiredDescription
clientOpenRouterYesAn initialized @openrouter/sdk client

createOpenRouterEmbed(apiKey, embeddingModel?)

Creates an EmbedFn that calls the OpenRouter embeddings endpoint.

import { createOpenRouterEmbed } from '@noetic/core';

const embed = createOpenRouterEmbed(process.env.OPENROUTER_API_KEY);
ParameterTypeRequiredDescription
apiKeystringYesOpenRouter API key
embeddingModelstringNoEmbedding model ID. Defaults to openai/text-embedding-3-small.

Usage with Semantic Routing

import { OpenRouter } from '@openrouter/sdk';
import { branch, createOpenRouterCallModel, createOpenRouterEmbed, semanticSwitch, step } from '@noetic/core';

const client = new OpenRouter({ apiKey: process.env.OPENROUTER_API_KEY });
const callModel = createOpenRouterCallModel(client);
const embed = createOpenRouterEmbed(process.env.OPENROUTER_API_KEY);

const router = branch({
  id: 'semantic-router',
  route: semanticSwitch({
    embed,
    cases: {
      'greeting or salutation': step.llm({ id: 'greet', model: 'gpt-4o-mini' }),
      'technical question': step.llm({ id: 'tech', model: 'gpt-4o' }),
    },
    threshold: 0.7,
  }),
});

On this page