Security News
The Risks of Misguided Research in Supply Chain Security
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
@promptbook/utils
Advanced tools
It's time for a paradigm shift. The future of software in plain English, French or Latin
npx ptbk run path/to/your/book
.docx
, .doc
and .pdf
documents⚠ Warning: This is a pre-release version of the library. It is not yet ready for production use. Please look at latest stable release.
@promptbook/utils
@promptbook/utils
is one part of the promptbook ecosystem.To install this package, run:
# Install entire promptbook ecosystem
npm i ptbk
# Install just this package to save space
npm install @promptbook/utils
Utility functions used in the library but also useful for individual use in preprocessing and postprocessing LLM inputs and outputs
Here is a overview of the functions which are exported from the @promptbook/utils
package and can be used in your own projects:
Sometimes you need to postprocess the output of the LLM model, every postprocessing function that is available through POSTPROCESS
command in promptbook is exported from @promptbook/utils
. You can use:
spaceTrim
extractAllBlocksFromMarkdown
, <- Note: Exported from @promptbook/markdown-utils
extractAllListItemsFromMarkdown
<- Note: Exported from @promptbook/markdown-utils
extractBlock
extractOneBlockFromMarkdown
<- Note: Exported from @promptbook/markdown-utils
prettifyPipelineString
removeMarkdownComments
removeEmojis
removeMarkdownFormatting
<- Note: Exported from @promptbook/markdown-utils
removeQuotes
trimCodeBlock
trimEndOfCodeBlock
unwrapResult
Very often you will use unwrapResult
, which is used to extract the result you need from output with some additional information:
import { unwrapResult } from '@promptbook/utils';
unwrapResult('Best greeting for the user is "Hi Pavol!"'); // 'Hi Pavol!'
There is a function templateParameters
which is used to replace the parameters in given template optimized to LLM prompt templates.
import { templateParameters } from '@promptbook/utils';
templateParameters('Hello, {name}!', { name: 'world' }); // 'Hello, world!'
And also multiline templates with blockquotes
import { templateParameters, spaceTrim } from '@promptbook/utils';
templateParameters(
spaceTrim(`
Hello, {name}!
> {answer}
`),
{
name: 'world',
answer: spaceTrim(`
I'm fine,
thank you!
And you?
`),
},
);
// Hello, world!
//
// > I'm fine,
// > thank you!
// >
// > And you?
Theese functions are usefull to count stats about the input/output in human-like terms not tokens and bytes, you can use
countCharacters
, countLines
, countPages
, countParagraphs
, countSentences
, countWords
import { countWords } from '@promptbook/utils';
console.log(countWords('Hello, world!')); // 2
Splitting functions are similar to counting but they return the splitted parts of the input/output, you can use
splitIntoCharacters
, splitIntoLines
, splitIntoPages
, splitIntoParagraphs
, splitIntoSentences
, splitIntoWords
import { splitIntoWords } from '@promptbook/utils';
console.log(splitIntoWords('Hello, world!')); // ['Hello', 'world']
Normalization functions are used to put the string into a normalized form, you can use
kebab-case
PascalCase
SCREAMING_CASE
snake_case
kebab-case
import { normalizeTo } from '@promptbook/utils';
console.log(normalizeTo['kebab-case']('Hello, world!')); // 'hello-world'
capitalize
, decapitalize
, removeDiacritics
,...POSTPROCESS
command in promptbookSee also the documentation for all the functions in the @promptbook/utils
package, every function is documented by jsdoc, typed by typescript and tested by jest.
assertsExecutionSuccessful
,
checkExpectations
,
executionReportJsonToString
,
isPassingExpectations
,
isValidJsonString
,
parseNumber
Rest of the documentation is common for entire promptbook ecosystem:
It's time for a paradigm shift! The future of software is in plain English, French or Latin.
During the computer revolution, we have seen multiple generations of computer languages, from the physical rewiring of the vacuum tubes through low-level machine code to the high-level languages like Python or JavaScript. And now, we're on the edge of the next revolution!
It's a revolution of writing software in plain human language that is understandable and executable by both humans and machines – and it's going to change everything!
The incredible growth in power of microprocessors and the Moore's Law have been the driving force behind the ever-more powerful languages, and it's been an amazing journey! Similarly, the large language models (like GPT or Claude) are the next big thing in language technology, and they're set to transform the way we interact with computers.
This shift is going to happen, whether we are ready for it or not. Our mission is to make it excellently, not just good.
Join us in this journey!
Take a look at the simple starter kit with books integrated into the Hello World sample applications:
Promptbook project is ecosystem of multiple projects and tools, following is a list of most important pieces of the project:
Project | Description | Link |
---|---|---|
Core | Promptbook Core is a description and documentation of the basic concepts, ideas and inner workings of how Promptbook should be implemented, and defines what features must be describable by book language. | https://github.com/webgptorg/book |
Book language | Book is a markdown-like language to define core entities like projects, pipelines, knowledge,.... It is designed to be understandable by non-programmers and non-technical people | |
Promptbook typescript project | Promptbook implementation in TypeScript released as multiple NPM packages | https://github.com/webgptorg/promptbook + Multiple packages published on NPM |
Promptbook studio | Studio to write Books and instantly publish them as miniapps |
https://promptbook.studio https://github.com/hejny/promptbook-studio |
Hello World | Simple starter kit with Books integrated into the sample applications |
https://github.com/webgptorg/hello-world https://github.com/webgptorg/hello-world-node-js https://github.com/webgptorg/hello-world-next-js |
We also have a community of developers and users of Promptbook:
And Promptbook.studio branded socials:
And Promptujeme sub-brand:
/Subbrand for Czech clients/
And Promptbook.city branded socials:
/Sub-brand for images and graphics generated via Promptbook prompting/
Following is the documentation and blueprint of the Book language.
# 🌟 My first Book
- PERSONA Jane, marketing specialist with prior experience in writing articles about technology and artificial intelligence
- KNOWLEDGE https://ptbk.io
- KNOWLEDGE ./promptbook.pdf
- EXPECT MIN 1 Sentence
- EXPECT MAX 1 Paragraph
> Write an article about the future of artificial intelligence in the next 10 years and how metalanguages will change the way AI is used in the world.
> Look specifically at the impact of Promptbook on the AI industry.
-> {article}
File is designed to be easy to read and write. It is strict subset of markdown. It is designed to be understandable by both humans and machines and without specific knowledge of the language.
It has file with .book.md
or .book
extension with UTF-8
non BOM encoding.
As it is source code, it can leverage all the features of version control systems like git and does not suffer from the problems of binary formats, proprietary formats, or no-code solutions.
But unlike programming languages, it is designed to be understandable by non-programmers and non-technical people.
Book is divided into sections. Each section starts with heading. The language itself is not sensitive to the type of heading (h1
, h2
, h3
, ...) but it is recommended to use h1
for header section and h2
for other sections.
Header is the first section of the book. It contains metadata about the pipeline. It is recommended to use h1
heading for header section but it is not required.
Foo bar
Reserved words:
PERSONA
, EXPECT
, KNOWLEDGE
, etc.content
context
knowledge
examples
modelName
currentDate
Todo todo
Todo todo
Todo todo
This library is divided into several packages, all are published from single monorepo. You can install all of them at once:
npm i ptbk
Or you can install them separately:
⭐ Marked packages are worth to try first
ptbk
.pdf
documents.docx
, .odt
,….doc
, .rtf
,…The following glossary is used to clarify certain concepts:
Note: Thos section is not complete dictionary, more list of general AI / LLM terms that has connection with Promptbook
If you have a question start a discussion, open an issue or write me an email.
See CHANGELOG.md
Promptbook by Pavol Hejný is licensed under CC BY 4.0
See TODO.md
I am open to pull requests, feedback, and suggestions. Or if you like this utility, you can ☕ buy me a coffee or donate via cryptocurrencies.
You can also ⭐ star the promptbook package, follow me on GitHub or various other social networks.
FAQs
It's time for a paradigm shift. The future of software in plain English, French or Latin
The npm package @promptbook/utils receives a total of 500,459 weekly downloads. As such, @promptbook/utils popularity was classified as popular.
We found that @promptbook/utils demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.