1.1.0 • Published 4 months ago

humanloop-type-generator v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

Humanloop Type Generator

A strongly typed SDK generator for Humanloop that creates TypeScript interfaces and a client for your Humanloop project. It preserves the folder structure of your prompts and provides autocompletion for your inputs and outputs.

Installation

npm install humanloop-type-generator
# or
yarn add humanloop-type-generator
# or
pnpm add humanloop-type-generator

Usage

CLI

The generator provides a simple CLI for generating your client:

# Generate using environment variables
npx humanloop generate

# Or with command-line arguments
npx humanloop generate --apiKey YOUR_API_KEY --environmentId YOUR_ENVIRONMENT_ID

# Specify a custom output directory
npx humanloop generate --outputDir ./custom-output-dir

# Display help
npx humanloop help

You can also set up a .env file with your Humanloop credentials:

HUMANLOOP_API_KEY=your_api_key
HUMANLOOP_ENVIRONMENT=your_environment_id

Generated Client Usage

The generated client will match your folder structure in Humanloop. For example:

In Humanloop:

  • 8 - Prospecting/Get Apollo Search
  • Get X Reply

Becomes in code:

import { TypedHumanloopClient } from "./humanloop-client/client";

const client = new TypedHumanloopClient({
  apiKey: "your_api_key",
  environmentId: "your_environment_id",
});

// Using namespaced prompt from a folder
const apolloResult = await client.prospecting.getApolloSearch.call({
  inputs: {
    // Type-safe inputs
    query: "search term",
  },
});

// Using root-level prompt
const xReply = await client.root.getXReply.call({
  inputs: {
    // Type-safe inputs
    username: "johndoe",
  },
});

// Type-safe outputs
console.log(apolloResult.people);

Features

  • 🌳 Preserves your Humanloop folder structure
  • 📝 Generates TypeScript types for inputs and outputs
  • 🖊️ Converts prompt names to camelCase method names
  • 🔄 Handles input and output type conversion
  • ⚡ Fast concurrent processing of prompts
  • 📄 Supports workspaces with large numbers of prompts through pagination
  • 🧩 Creates type-safe interfaces based on your prompt definitions

Command Line Options

  • --apiKey: Your Humanloop API key
  • --environmentId: Your Humanloop environment ID
  • --outputDir: Directory to output generated files (default: ./humanloop-client)
  • --config: Path to a config file

Environment Variables

  • HUMANLOOP_API_KEY: Your Humanloop API key
  • HUMANLOOP_ENVIRONMENT: Your Humanloop environment ID
  • OUTPUT_DIR: Directory to output generated files

Performance

The generator processes all prompts concurrently, making it highly efficient even for workspaces with many prompts.

Requirements

This package requires:

  • Node.js 14 or higher
  • Humanloop API access
  • Prompts with defined tool schemas for optimal type generation

License

MIT