ts-chat
v0.0.15
Published
`ts-chat` is a TypeScript plugin that adds support for generating OpenAI's GPT Functions from native TypeScript functions, types and comments.
Downloads
21
Readme
ts-chat
ts-chat
is a TypeScript plugin that adds support for generating OpenAI's GPT Functions from native TypeScript functions, types and comments.
import { ChatClient, system, user } from "ts-chat";
const client = new ChatClient({
apiKey: process.env.OPEN_AI_KEY,
});
await client.chat(
{
/**
* Adds two numbers.
*
* @param a the first number
* @param b the second number
*/
add: (a: number, b: number) => a + b,
},
{
messages: [
system`You are a calculator.`,
user`what is the sum of 1 and 2?`,
],
}
);
Types and comments can be used fluidly and natively. E.g. here's how we can define integers and natural numbers. Constraints are parsed from the comments and can be extended/overriden:
/**
* @type int
*/
type int = number;
/**
* @min 1
*/
type nat = int;
Use interfaces to describe well-typed structured data with well-constrained properties:
interface Person {
/**
* @pattern [a-zA-z]+
* @minLength 3
*/
name: string;
}
Installation
First, install ts-chat
:
npm install ts-chat
Next, you need to configure ts-patch
to enable plugin support in the TypeScript compiler and configure the ts-chat/plugin
.
There are two options for this set up:
- permanently patch using the NPM
prepare
script - patch when you run (e.g. when running
ts-node
,tsc
,jest
, etc.)
Option 1 - permanently patch
Run the setup
script to install ts-patch
, configure prepare
and install ts-chat/plugin
in tsconfig.json
npx ts-chat setup
This script performs the following steps:
- Installs
ts-node
andts-patch
- Add the
prepare
script to yourpackage.json
to run thets-patch install
whenever you install dependencies:
"scripts": {
"prepare": "ts-patch install"
}
- Add the
ts-chat/plugin
to yourtsconfig.json
- without this, thechat
function can not receive the JSON schema and descriptions of your functions.
{
"compilerOptions": {
"plugins": [
{
"transform": "ts-chat/plugin"
}
]
}
}
Option 2 - "Live Compiler"
From ts-patch
's documentation on "Live Compilation":
The live compiler patches on-the-fly, each time it is run.
Via commandline: Simply use
tspc
(instead oftsc
)With tools such as
ts-node
,webpack
,ts-jest
, etc: specify the compiler as ts-patch/compiler
Example:
ts-node-esm --compiler ts-patch/compiler ./src/index.ts
How it Works
Functions are converted into their corresponding OpenAI Function definition:
{
"name": "add",
"description": "Adds two numbers",
"parameters": {
"type": "object",
"properties": {
"a": { "type": "number", "description": "first argument" },
"b": { "type": "number", "description": "second arguments" }
}
}
}
The description
s are derived from the typedoc comments and the parameters
JSON schema is derived from the types of the Function's arguments.