- Change keyword
USE
toMODEL VARIANT
- Allow to specify exact model eg.
MODEL NAME gpt-4-1106-preview
- Add postprocessing function
trimEndOfCodeBlock
replaceParameters
works with inlined JSONs
- You are able to send markdown code block in prompts (without traces of escaping)
- Postprocessing function
trimEndOfCodeBlock
is not working with escaped code blocks JUST with markdown code blocks - Rename
extractBlocksFromMarkdown
toextractAllBlocksFromMarkdown
- Add postprocessing function
trimCodeBlock
- Add
EXPECT
command to promptbooks - Add
ExecutionReport
- Add
parseNumber
utility function PtbkExecutor
returns richer result and does not throw, just returnsisSuccessful=false
, You can useassertsExecutionSuccessful
utility function to check if the execution was successful- Add
assertsExecutionSuccessful
utility function
CreatePtbkExecutorSettings
are not mandatory anymore
- Add
EXPECT JSON
command to promptbooks - Split internal representation
EXPECT
intoEXPECT_AMOUNT
andEXPECT_FORMAT
Moving logic from promptbookStringToJson
to createPtbkExecutor
- Allow postprocessing and expectations in all execution types
- Postprocessing is happening before checking expectations
- In
PromptbookJson
postprocessing is represented internally in eachPromptTemplateJson
not as separatePromptTemplateJson
- Introduce
ExpectError
- Rename
maxNaturalExecutionAttempts
tomaxExecutionAttempts
(because now it is not just for natural execution) - If title in promptbook contains emojis, pass it innto report
- Fix
description
in report - Asking user infinite times for input if the input not matches the expectations
Better execution report in markdown format
- Add
JOKER {foo}
as a way how to skip part of the promptbook - Split
UserInterfaceToolsPromptDialogOptions.prompt
intopromptTitle
andpromptMessage
- Add
UserInterfaceToolsPromptDialogOptions.priority
- Add timing information to report
- Maximum must be higher than minimum in
EXPECT
statement - Maximum 0 is not valid, should be at least 1 in
EXPECT
statement
- Allow to use custom postprocessing functions
- Allow async postprocessing functions
- Remove
Promptbook
(just using JSONPromptbookJson
format)CreatePtbkExecutorOptions
hasPromptbookJson
- Promptbooks are executed in parallel
PromptTemplateJson
containsdependentParameterNames
validatePromptbookJson
is checking for circular dependencies- Test that joker is one of the dependent parameters
Better execution reports
- Filter out voids in
executionReportJsonToString
- Add timing information to
ExecutionReportJson
(In both text and chart format) - Add money cost information to
ExecutionReportJson
(In both text and chart format) - Escape code blocks in markdown
- Do not export
replaceParameters
utility function
Export less functions from @promptbook/utils
Iterating over parameters
Parameters can be bothstring
andArray<string>
Array<string>
will itterate over all valuesYou can use postprocessing functions orEXECUTE SCRIPT
to split string into array and vice versa
- Do not remove emojis or formatting from task title in progress
- You can use
prettifyMarkdown
for postprocessing
- Add Mermaid graph to sample promptbooks
- Fix spelling errors in OpenAI error messages
Cleanup and renaming
- Cleanup the project
- Do not export unused types from
@promptbook/types
- Rename "Prompt template pipelines" to more meaningful "Promptbooks"
- Remove
DEFAULT_MODEL_REQUIREMENTS
- You need to explicitly specify the requirements - Rename
PromptTemplatePipelineLibrary
->PromptbookLibrary
- Rename
RemoteServerOptions
.ptbkLibrary
->library
- Add
RemoteServerOptions
.ptbkNames
- Rename
RemoteServerOptions
.getPtp
->getPtbkByName
- Do not use shortcut "Ptbk" but full "Promptbook" name in the code, classes, methods, etc.
- Change command
PTBK_URL
toPROMPTBOOK_URL
(but keep backward compatibility and preserve aliasPTBK
) - Change command
PTBK_NAME
toPROMPTBOOK_NAME
(but keep backward compatibility and preserve aliasPTBK
) - Rename
runRemoteServer
->startRemoteServer
and returnDestroyable
object
Explicit output parameters
- Every promptbook has to have
OUTPUT PARAMETER
property in header
Remove "I" prefix from interfaces and change interfaces to types.
- Rename
IAutomaticTranslator
->AutomaticTranslator
- Rename
ITranslatorOptions
->TranslatorOptions
- Rename
IGoogleAutomaticTranslatorOptions
->GoogleAutomaticTranslatorOptions
- Rename
ILindatAutomaticTranslatorOptions
->LindatAutomaticTranslatorOptions
- Remove unused
IPersonProfile
- Remove unused
ILicense
- Remove unused
IRepository
Note: Keeping "I" prefix in internal tooling like IEntity
, IExecCommandOptions
, IExecCommandOptions
Note: Also keeping stuff imported from external libraries like IDestroyable
Working on Promptbook Library. Identify promptbooks by URL.
- Change
PromptbookLibrary
class to interface - Add
SimplePromptbookLibrary
class which implementsPromptbookLibrary
- Rename
PromptbookLibrary.promptbookNames
toPromptbookLibrary.promptbookUrls
- Remove
PromptbookLibrary.createExecutor
to separate responsibility - Make more renamings and reorganizations in
PromptbookLibrary
- Make
PromptbookLibrary.listPromptbooks
async method - Make
PromptbookLibrary.getPromptbookByUrl
async method
Multiple factories for PromptbookLibrary
, Custom errors, enhance templating
- Throwing
NotFoundError
- Throwing
PromptbookSyntaxError
- Throwing
PromptbookLogicError
- Throwing
PromptbookExecutionError
- Throwing
PromptbookReferenceError
- Throwing
UnexepctedError
- Preserve col-chars in multi-line templates, See more in
replaceParameters
unit test - Change static methods of
PromptbookLibrary
to standalone functions - Static method
createPromptbookLibraryFromSources
receives spreaded argumentsArray
instead ofRecord
- Add factory function
createPromptbookLibraryFromPromise
More options to create PromptbookLibrary
- Utility
createPromptbookLibraryFromDirectory
- Utility
createPromptbookLibraryFromUrl
- Add
extractBlock
to build-in functions - Remove problematic usage of
chalk
and usecolors
instead - Export
replaceParameters
from@promptbook/utils
Better logo and branding of Promptbook.
CLI utils exported from @promptbook/cli
After install you can use promptbook
command in terminal:
npm i @promptbook/utils
npx promptbook prettify promptbook/**/*.ptbk.md
- Lower bundle size
- Normalization library
n12
is not used and all its functions are bringed to@promptbook/utils
- Better error names
- Better error used
- Make
ExpectError
private @promptbook/core
is not be peer dependency of@promptbook/utils
- Rename
expectAmount
in json toexpectations
- Expectations are passed into prompt object and used in natural tools
- Add
MockedFackedLlmExecutionTools
- Add utils
checkExpectations
andisPassingExpectations
- Better error messages from
JavascriptEvalExecutionTools
- Each exported NPM package has full README
spaceTrim
is re-exported from@promptbook/utils
More direct usage of OpenAI API, Refactoring
- Pass directly Open AI otpions to
OpenAiExecutionTools
- Change
openAiApiKey
->apiKey
when creating newOpenAiExecutionTools
- Change
- Change all import statements to import type when importing just types
Reorganize packages
💡 Now you can just install
promptbook
orptbk
as alias for everything
- New package
promptbook
as a link to all other packages - New package
ptbk
as an alias topromptbook
- New package
@promptbook/mock
- Move there
MockedEchoLlmExecutionTools
andMockedFackedLlmExecutionTools
from@promptbook/core
- Move there
- New package
@promptbook/langtail
to prepare for Langtail integration
Tools refactoring
- Rename "natural" -> "llm"
- Allow to pass multiple
llm
intoExecutionTools
container - Export
renderPromptbookMermaid
through@promptbook/utils
Better utilities (for Promptbase app)
- Add reverse utility the
promptbookJsonToString
- Allow to put link callback into
renderPromptbookMermaid
- Better prompt template identification
- Add function
titleToName
exported from@promptbook/utils
- Add function
renameParameter
exported from@promptbook/utils
- Rename "Script Template" to just "Script"
Was accidentally released as earlier, re-released fully completed as 0.51.0
Add new OpenaAI models gpt-4o
and gpt-4o-2024-05-13
- Add model
gpt-4o
- Add model
gpt-4o-2024-05-13
- Classes that implements
LlmExecutionTools
must expose compatible models - List OpenAI models dynamically
- All GPT models have pricing information
- Export
OPENAI_MODELS
from@promptbook/openai
- Export types
LlmTemplateJson
,SimpleTemplateJson
,ScriptJson
,PromptDialogJson
,Expectations
from@promptbook/types
ModelRequirements.modelName
is not required anymorePromptbookExecutor
does not requireonProgress
anymoreExecutionTools
does not requireuserInterface
anymore, when not set, the user interface is disabled and promptbook which requires user interaction will fail- Export
extractParameters
,extractVariables
andextractParametersFromPromptTemplate
from@promptbook/utils
- Add and export set operations
difference
,intersection
andunion
from@promptbook/utils
- Export
POSTPROCESSING_FUNCTIONS
from@promptbook/execute-javascript
Add support for Claude \ Anthropic models via package @promptbook/anthropic-claude
and add Azure OpenAI models via package @promptbook/azure-openai
- Export
MultipleLlmExecutionTools
from@promptbook/core
- Always use "modelName" not just "model"
- Standartization of model providers
- Delete
@promptbook/wizzard
- Move
assertsExecutionSuccessful
,checkExpectations
,executionReportJsonToString
,ExecutionReportStringOptions
,ExecutionReportStringOptionsDefaults
,isPassingExpectations
,prettifyPromptbookString
from@promptbook/utils
to@promptbook/core
Better expectation format in PromptbookJson
Allow to split parameters into multiple values and iterate over them
- Allow to specify model creativity eg.
MODEL CREATIVITY EXTREME
Better script execution
- Gettings rid of
JavascriptEvalExecutionTools
and implement propper isolated script execution inJavascriptExecutionTools
- List all default postprocessing functions in
@promptbook/utils
README - Implement
PythonExecutionTools
for executing Python scripts
More options to create PromptbookLibrary
Intagration with Langtail
-
TODO: Add splitInto functions to
@promptbook/utils
besides all thecount
functions -
Add
countCharacters
->splitIntoCharacters
-
Add
countLines
->splitIntoLines
-
Add
countPages
->splitIntoPages
-
Add
countParagraphs
->splitIntoParagraphs
-
Add
countSentences
->splitIntoSentences
-
Add
CountUtils
->splitIntoUtils
-
Add
countWords
->splitIntoWords
More expect variations
- Add command
EXPECT "..."
<-[🥤] - Add command
EXPECT /.../i
<-[🥤] - Add command
EXPECT "...{foo}..."
<-[🥤] - Add command
EXPECT /...{foo}.../i
<-[🥤] - Add command
EXPECT JSON ARRAY
andEXPECT JSON OBJECT
(In future this will be suggar code forEXPECT JSON SCHEMA
) <-[🥤]
- When postprocessing fails, retry in same way as failed expectations
- When making next attempt for
PROMPT DIALOG
, preserve the previous user input <-[🌹]
Across the repository there are marked [🍓] places that are required to be done before 1.0.0
release