npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@chinmaymk/aikit

v0.0.40

Published

Lightweight generation abstraction for OpenAI, Anthropic and Google Gemini

Readme

CI

AIKit is a minimal TypeScript wrapper that gives you unified access to the generation APIs of OpenAI, Anthropic, and Google Gemini—complete with streaming, multimodal inputs, and tool calling. No extra runtime packages: just the fetch that ships with modern Node and browsers.


Features

Use AIKit for: Generation & streaming, multimodal prompts (text + images + audio), tool/function calling, embeddings, and usage tracking.

Use the official provider SDKs for everything else (fine-tuning, file management, etc.).

| Feature | What That Means | | ----------------------- | ---------------------------------------------------------------------- | | Zero Dependencies | Uses only the built-in fetch; no freeloaders. | | No Surprises | Every provider option is right there—no secret sauce. | | Multimodal | Text, images, and audio get equal treatment. | | Embeddings Included | Vectors are first-class citizens. | | Tool-Friendly | Utilities for tool and function calls, ready to go. | | Reasoning Support | Access model reasoning for Claude and OpenAI o-series models. | | Usage Tracking | Monitor token consumption, costs, and timing across all providers. | | Unified API | Same call shape for OpenAI, Anthropic & Gemini. | | Type-Safe | Exhaustive TypeScript types for requests & responses. | | Streaming | for await over tokens or deltas. | | Utility Functions | Helper functions for messages, tools, and content, and stream handling |


Installation

npm install @chinmaymk/aikit

Quick Start

Text Generation

import { createProvider, userText, printStream } from '@chinmaymk/aikit';

const openai = createProvider('openai', {
  apiKey: process.env.OPENAI_API_KEY!,
});

const messages = [userText('Hello!')];

// Simple approach - print directly to console
await printStream(openai(messages, { model: 'gpt-4o' }));

// Or use the classic streaming approach
for await (const chunk of openai(messages, { model: 'gpt-4o' })) {
  process.stdout.write(chunk.delta);
}

Embeddings

import { createOpenAIEmbeddings } from '@chinmaymk/aikit';

const embeddings = createOpenAIEmbeddings({
  apiKey: process.env.OPENAI_API_KEY!,
});

// Turn text into vectors
const result = await embeddings(['Hello, world!', 'How are you?']);
console.log(result.embeddings[0].values); // [0.123, -0.456, ...]

FAQ

AIKit directly calls apis of underlying llm providers, and maps responses to a unified result stream and consistent types.

AIKit focuses only on generation features across providers. That narrow focus lets us ship a smaller, unified API surface. If you need file uploads, fine-tuning, vector stores, etc., use the vendor SDK.

Vendor generation endpoints rarely break. When they occasionally do, we publish a new major AIKit version right away so you can upgrade with minimal fuss. We follow semantic versioning and document any change in the changelog.

When you want streaming, multimodal inputs, consistent typings across providers, tool calls, environment-agnostic execution, or when you're simply interested in the generative features of large models, AIKit makes it easy—all in just a few lines.


Documentation

📚 Full docs & API reference: https://chinmaymk.github.io/aikit/


License

MIT © 2025