Skip to content

Quick Start

Basic chat

import { ChunkType, OpenAIChatService } from "@johannes.latzel/llm-chat";

const service = OpenAIChatService.builder()
    .model("your-model")
    .systemPrompt("You are a concise assistant.")
    .create();

service.stream()
    .hook()
    .chunks(ChunkType.Content)
    .do((chunk) => process.stdout.write(chunk.text));

service.chat().user("What can you do?");
await service.send();

OPENAI_API_KEY and OPENAI_BASE_URL configure the OpenAI client. The builder covers common options; withOpenAIConfig() and withServiceConfig() cover advanced settings. See Environment Variables.

With tools

import {
    OpenAIChatService,
    ResultStatus,
    Tool,
    ToolParameterProperty,
    ToolParameters
} from "@johannes.latzel/llm-chat";

class GreetTool extends Tool {
    constructor() {
        super(
            "greet",
            "Greets a person by name.",
            new ToolParameters({ name: ToolParameterProperty.string("Name") }, ["name"])
        );
    }

    protected async onExecute(args: Record<string, unknown>) {
        const name = args.name;
        return typeof name === "string"
            ? { result: `Hello, ${name}!`, status: ResultStatus.Success }
            : { result: "name must be a string", status: ResultStatus.Error };
    }
}

const service = OpenAIChatService.builder()
    .model("your-model")
    .create();
service.tools().add(new GreetTool());

service.chat().user("Greet Ada.");
await service.send();