[FR] Part Helpers
- Dominant language
- Starlark
- Stars
- 563
- Forks
- 68
- Avg merge
- 6m
- Merged PRs (30d)
- 2
Description
I've found myself sometimes wanting to directly pass `Part[]` content to a template when I'm doing advanced composition. Right now this is more or less impossible which means everything has to be converted to a string.
I want to add an `rawParts` helper:
```handlebars
Hello before parts.
{{ rawParts partsToRender }}
```
```ts
dotprompt.render(templateAbove, {
input: {
partsToRender: [
{text: 'Next'},
{media: {url: 'https://example.com'}}
]
}
}
})
// result
[
{text: "Hello before parts.\n"},
{text: "Next"},
{media: {url: "https://example.com"}},
]
```
While we're at it, we can also add a `rawMessages` helper for whole-message insertion:
```handlebars
{{ rawMessages preambleMessages }}
Then the main message.
```
```ts
dotprompt.render(templateAbove, {
input: {
preambleMessages: [{role: "system", content: [{text: "Hello from system."}]}],
}
});
// result
[
{role: "system", content: [{text: :"Hello from system."}]},
{role: "user", content: [{text: "Then then main message."}]},
]
```
Note that `rawParts` should append parts to the current message, while `rawMessages` should start a new message wherever it is inserted.
Contributor guide
Assessment
This issue has not been assessed yet.