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 🙏

© 2024 – Pkg Stats / Ryan Hefner

zodchat

v1.1.0

Published

Typechat, but with Zod!

Downloads

29

Readme

Zodchat is a GPT-4 interface that allows you to get well-typed and structured data It is like TypeChat but with Zod and function calls

Example

see more in examples/

const Song = zod
  .object({
    name: zod.string().describe('Name of the song to play'),
    artist: zod.string().describe('Name of the artist of the song'),
    genre: zod
      .string()
      .array()
      .describe('Genre of the song using whimsical words'),
    vibe: zod
      .string()
      .describe('General vibe of the song using whimsical words'),
  })
  .describe('A song to play')

  await prompt({
    output_schema: Playlist,
    system_prompt: 'Please give a chill instrumental song',
  })

How to use

With bun:

bun add zodchat

Or yarn:

yarn add zodchat

Generate an API key, then put it in your local .env.local file:

OPENAI_API_KEY=your_key_here

or use ```sh export OPENAI_API_KEY=your_key_here


Then you can directly import and use the library:

```ts
import { prompt } from 'zodchat'

Tip for prompting

  • Telling GPT-4 to use whimsical words usually leads it to produce more diverse object-level outputs. In examples/song for instance, asking for "whimsical words" genres makes it output different genres than just the one asked for.
  • GPT will use the output schema to prompt itself, therefore it is often useful to ask it for more information than is needed. For instance, in examples/songs, asking for just {name, artist} would make it match on title (Eruption of Ignorance would lead it to suggest many fire-related titles). Including genre and vibes in the requested output lead it to actually match on them.
  • Be careful about token consumption, as the whole schema is passed, it can be very resource expensive