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

@gptsafe/promptguard

v0.2.0

Published

Prevent GPT prompt attacks for Node.js & TypeScript

Downloads

5

Readme

PromptGuard

What is PromptGuard?

PromptGuard helps you build production ready GPT apps for Node.js and TypeScript applications.

Project Goals

The goal of the PromptGuard project is to provide the features necessary to deploy GPT-based applications to production. This includes:

  • Detecting and mitigating prompt attacks
  • Caching to improve performance and reduce the cost of GPT queries
  • Content filtering
  • Language filtering
  • Token limiting
  • GPT ready encoded outputs
  • Prompt Obfuscation

PromptGuard is still a fairly young project and would love your contributions. If you wish to contribute, please read the contribution guide and code of conduct first.

Feature requests and bug reports are welcome!

Configuration Options

Option | Default Value | Description ---|:---:|---| maxTokens | 4096 | The maximum amount of tokens the prompt can contain. Restricting the maximum amount of tokens can reduce the cost of the GPT query and the opportunity for prompt attacks. You can read more information about tokens here. If the prompt exceeds the maximum tokens, PromptGuard will reject the prompt with the following output: { pass: false, output: EXCEEDS_MAX_TOKEN_THRESHOLD } denyList | [""] | An array of string literals that should not appear in the prompt text. If PromptGuard finds a deny list match, it will reject with the following output: { pass: false, output: CONTAINS_DENY_LIST_ITEM } disableAttackMitigation | false | A list of known prompt attacks and injections that are checked against the prompt. In the future, this will become more sophisticated. If PromptGuard finds a default deny list match, it will reject the prompt with the following output: { pass: false, output: CONTAINS_KNOWN_ATTACK } encodeOutput | false | Encodes the output as GPT-3 tokens. You can read more information about tokens here.

Usage

Install

npm install @gtpsafe/promptguard

Configure

import { PromptGuard } from "@gtpsafe/promptguard"

const promptGuard = new PromptGuard({
  maxTokens: 200,
  denyList:['baz'],
});

Process a Prompt

const output = await promptGuard.process("This is my awesome prompt. There are many like it, but this one is mine.")

Output

{
  pass: true,
  output: "This is my awesome prompt. There are many like it, but this one is mine."
}