Skip to content

llms-sdk

A unified SDK for calling LLM APIs in Rust, TypeScript, and Python.

Updated View as Markdown
llms-sdk logo

A single interface for OpenAI-compatible chat completions and the Anthropic Messages API, with native bindings for Rust, TypeScript, and Python.

Features

  • One request model for OpenAI and Anthropic.
  • Multimodal input — text, image, audio (OpenAI), and document (Anthropic) message parts.
  • Structured JSON output via JSON Schema.
  • Tool / function calling with provider-specific serialization.
  • Streaming responses with text, tool, and reasoning deltas.
  • Configurable retry policy for transient failures.
  • Optional CLI (llms) for quick testing.

Supported providers

Provider Endpoint style
OpenAI https://api.openai.com/v1
Anthropic https://api.anthropic.com/v1

Pick your language

Quick example

use llms_sdk::{LLM, LLMRequest, Message};

let request = LLMRequest::builder()
    .api_key(std::env::var("OPENAI_API_KEY")?)
    .messages(vec![
      Message::from_prompt("Hello!")
      // This is equivalent to:
      // Message {
      //    role: MessageRole::User,
      //    content: vec![MessagePart::Text(TextPart::new("Hello!"))],
      // }
    ])
    .model("gpt-5.4-mini")
    .build();

let llm = LLM::default();
let response = llm.respond(request).await?;
import { Llm, ApiType, MessageRole } from '@cle-does-things/llms-sdk'

const request = {
  apiType: ApiType.OpenAI,
  apiKey: process.env.OPENAI_API_KEY!,
  model: 'gpt-5.4-mini',
  messages: [
    textMessage("Hello!")
    // This is equivalent to:
    // {
    //  role: MessageRole.User,
    //  content: [{ text: 'Hello!', type: 'text' }],
    // }
  ],
  stream: false,
  parallelToolCalls: false,
}

const llm = new Llm()
const response = await llm.respond(request)
from llms_sdk_py import LLMRequest, Message, TextPart, LLM

request = LLMRequest(
    model="gpt-5.4-mini",
    api_key="sk-...",
    messages=[
      Message.from_prompt("Hello!"),
      # This is equivalent to:
      # Message("user", [TextPart("Hello, world!")])
    ],
    stream=False,
)

client = LLM()
response = await client.respond(request)
import init, { chat } from "@cle-does-things/llms-sdk-wasm";

await init();

const response = await chat({
  api_type: "openai",
  api_key: "sk-...",
  model: "gpt-5.4-mini",
  messages: [
    textmessage("Hello!")
    // This is equivalent to:
    // { role: "user", content: [{ type: "text", text: "Hello!" }] }
  ],
  stream: false,
  parallel_tool_calls: false,
}, true);

console.log(response.message.content);
Navigation

Type to search…

↑↓ navigate↵ selectEsc close