0.0.7 • Published 5 months ago

typesafe-openai v0.0.7

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

typesafe-openai

npm version License

WARNING:

This package is currently being worked on and the API is subject to change. Please do not use this package in production until it is stable.

Description

This package provides a subclass of the openAI that ensures type safety for function calling using zod. It does so by taking in a zod schema and converting it to a JSON schema that can be understood by the openAI API. It the arguments are also checked against the zod schema to ensure they are valid.

Installation

npm:

npm install typesafe-openai

yarn:

yarn add typesafe-openai

pnpm:

pnpm add typesafe-openai

Usage

Before using this package, you must have an openAI API key. You can get one here.

Force a function call return

Using functionForce will force a function call to be returned and will only return the arguments that are defined. This is useful if you want to force your data to be returned in a certain format.

import z from "zod";
import { TypeSafeOpenAIApi } from "typesafe-openai";

// TypeSafeOpenAIApi extends "OpenAI"
const openai = new TypeSafeOpenAIApi({
  apiKey: process.env.OPENAI_API_KEY,
});

const args = await openai.createChatCompletionTypeSafe({
  messages: [
    {
      role: "user",
      content: "What is the weather like today in Washington DC?",
    },
  ],
  model: "gpt-3.5-turbo-0613",
  functionForce: {
    name: "getWeather",
    description: "Get the current weather",
    parameters: z.object({
      location: z.string().describe("The location to get the weather for"),
      format: z
        .enum(["F", "C"])
        .describe("The format to return the weather in."),
    }),
  },
});
console.dir(args, { depth: null });
// Outputs: {location: "Washington DC", format: "F"}

This is the same as:

import { Configuration, OpenAIApi } from "openai";
const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

openai.createChatCompletion({
  messages: [{ role: "user", content: "What is the weather like today?" }],
  function_call: { name: "getWeather" },
  model: "gpt-3.5-turbo-0613",
  functions: [
    {
      name: "weather",
      description: "Get the current weather",
      parameters: {
        type: "object",
        properties: {
          location: {
            type: "string",
            description: "The location to get the weather for",
          },
        },
      },
    },
  ],
});

API Reference

TODO:

Examples

TODO:

Contributing

TODO:

Issues

TODO:

License

TODO:

Credits

TODO:

Frequently Asked Questions (FAQ)

TODO:

0.0.7

5 months ago

0.0.6

5 months ago

0.0.5

10 months ago

0.0.4

10 months ago

0.0.3

10 months ago

0.0.1

10 months ago