google / google/dotprompt

[FR] Part Helpers

Open
#304 0 comments 1 reaction 0 assignees View on GitHub
feature
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.