Chatoyant - v0.9.0
    Preparing search index...

    Class LocalClient

    Client for local OpenAI-compatible inference servers.

    Supports chat, streaming, tool calling, and structured output via the same interface as OpenAIClient. The server is expected to implement the OpenAI Chat Completions API at the given baseUrl.

    // From env vars (LOCAL_BASE_URL + LOCAL_API_KEY)
    const client = createLocalClient({
    baseUrl: process.env.LOCAL_BASE_URL!,
    apiKey: process.env.LOCAL_API_KEY,
    defaultModel: 'Qwen3.5-9B-MLX-4bit',
    });

    // Chat
    const reply = await client.chatSimple([
    { role: 'user', content: 'Hello!' }
    ]);

    // Stream
    for await (const delta of client.streamContent([
    { role: 'user', content: 'Tell me a story' }
    ])) {
    process.stdout.write(delta.content);
    }

    // List models served by the local server
    const ids = await client.listModelIds();

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    cosineSimilarity: (a: number[], b: number[]) => number = cosineSimilarity

    Calculate cosine similarity between two vectors.

    Type Declaration

      • (a: number[], b: number[]): number
      • Calculate cosine similarity between two vectors.

        Parameters

        • a: number[]

          First vector

        • b: number[]

          Second vector

        Returns number

        Cosine similarity (-1 to 1)

    findSimilar: <T>(
        query: number[],
        candidates: { embedding: number[]; data: T }[],
        topK?: number,
    ) => { data: T; score: number }[] = findSimilar

    Find similar items from a corpus.

    Type Declaration

      • <T>(
            query: number[],
            candidates: { embedding: number[]; data: T }[],
            topK?: number,
        ): { data: T; score: number }[]
      • Find most similar items from a list of embeddings.

        Type Parameters

        • T

        Parameters

        • query: number[]

          Query embedding

        • candidates: { embedding: number[]; data: T }[]

          Array of candidate embeddings with associated data

        • topK: number = 5

          Number of results to return

        Returns { data: T; score: number }[]

        Top K most similar items with scores

    Methods

    • Create a chat completion.

      Parameters

      • messages: Message[]
      • Optionaloptions: Partial<ChatOptions>

      Returns Promise<ChatCompletion>

    • Create a chat completion and return just the content.

      Parameters

      • messages: Message[]
      • Optionaloptions: Partial<ChatOptions>

      Returns Promise<string>

    • Chat with tool handling.

      Parameters

      • messages: Message[]
      • tools: Tool[]
      • Optionaloptions: Partial<ChatOptions>

      Returns Promise<
          | { type: "content"; content: string; usage: Usage }
          | { type: "tool_calls"; toolCalls: ToolCall[]; usage: Usage },
      >

    • Chat with structured output.

      Type Parameters

      • T

      Parameters

      • messages: Message[]
      • schema: {
            name: string;
            description?: string;
            schema: Record<string, unknown>;
            strict?: boolean;
        }
      • Optionaloptions: Partial<ChatOptions>

      Returns Promise<T>

    • Stream chat completion chunks.

      Parameters

      • messages: Message[]
      • Optionaloptions: Partial<ChatStreamOptions>

      Returns AsyncGenerator<ChatCompletionChunk, void, undefined>

    • Stream content deltas.

      Parameters

      • messages: Message[]
      • Optionaloptions: Partial<ChatStreamOptions>

      Returns AsyncGenerator<StreamDelta, void, undefined>

    • Stream and accumulate full response.

      Parameters

      • messages: Message[]
      • Optionaloptions: Partial<ChatStreamOptions>
      • OptionalonChunk: (delta: { content: string; chunk: ChatCompletionChunk }) => void

      Returns Promise<
          {
              content: string;
              toolCalls: {
                  id: string;
                  type: "function";
                  function: { name: string; arguments: string };
              }[];
              finishReason: string
              | null;
              usage: Usage | null;
              model: string;
              id: string;
          },
      >

    • Create a readable stream of content.

      Parameters

      • messages: Message[]
      • Optionaloptions: Partial<ChatStreamOptions>

      Returns ReadableStream<string>

    • Create embeddings.

      Parameters

      • input: string | string[]
      • Optionaloptions: Partial<EmbeddingOptions>

      Returns Promise<EmbeddingResponse>

    • Create embedding for single text.

      Parameters

      • input: string
      • Optionaloptions: Partial<EmbeddingOptions>

      Returns Promise<number[]>

    • Create embeddings for multiple texts.

      Parameters

      • inputs: string[]
      • Optionaloptions: Partial<EmbeddingOptions>

      Returns Promise<number[][]>

    • Generate images.

      Parameters

      • prompt: string
      • Optionaloptions: Partial<ImageGenerationOptions>

      Returns Promise<ImageGenerationResponse>

    • Generate a single image URL.

      Parameters

      • prompt: string
      • Optionaloptions: Partial<ImageGenerationOptions>

      Returns Promise<string>

    • Generate a single image as base64.

      Parameters

      • prompt: string
      • Optionaloptions: Partial<ImageGenerationOptions>

      Returns Promise<string>

    • Generate multiple images.

      Parameters

      • prompt: string
      • count: number
      • Optionaloptions: Partial<ImageGenerationOptions>

      Returns Promise<ImageData[]>