functhem
TypeScript icon, indicating that this package has built-in type declarations

12024.5.6 • Public • Published

functhem

ease the integration of hermes function calling prompt format into typescript ecosystem with typed function calls

what it can do

  • generate system message prompt with your defined tools, zod to json schema
  • parse tool call output -> typed

installation

pnpm add functhem

usage

import { z } from "zod"
import { Tool, Functhem } from "functhem"

const happySchema = z.object({
  name: z.literal("isHappy"),
  arguments: z.object({
    isHappy: z.boolean(),
  }),
})

const happyTool = new Tool<typeof happySchema>({
  name: "isHappy",
  description: "Is the user happy?",
  schema: happySchema,
})

const movieSchema = z.object({
  name: z.literal("watchMovie"),
  arguments: z.object({
    genre: z.string(),
  }),
})

const movieTool = new Tool<typeof movieSchema>({
  name: "watchMovie",
  description:
    "Does the user express that they want to see a movie, if so, which genre?",
  schema: movieSchema,
})

const functhem = new Functhem([happyTool, movieTool])

const sysMsg = functhem.getSysMsg()

const output = await yourInferenceFunction({
    messages: [
      {
        role: "system",
        content: functhem.getSysMsg(), // <-- HERE
      },
      {
        role: "user",
        content: `Input: so stressed, just want to see a funny movie\nProcess the user input with your tools.`,
      },
    ],
})

const outCalls = functhem.parseOut(output) // <-- HERE

outCalls.forEach((one) => {
  switch (one.name) {
    case "isHappy": {
      console.log(one.arguments.isHappy)
      break
    }
    case "watchMovie": {
      console.log(one.arguments.genre)
      break
    }
  }
})

Readme

Keywords

none

Package Sidebar

Install

npm i functhem

Weekly Downloads

62

Version

12024.5.6

License

none

Unpacked Size

21.2 kB

Total Files

19

Last publish

Collaborators

  • devidw