Documentation ¶
Overview ¶
Package prompts contains types, prompt templates, loading utilities, output parsers, example selectors, and other utilities for working with LLM prompts.
Index ¶
- Variables
- func CheckValidTemplate(template string, templateFormat TemplateFormat, inputVariables []string) error
- func RenderTemplate(tmpl string, tmplFormat TemplateFormat, values map[string]any) (string, error)
- type AIMessagePromptTemplate
- type ChatPromptTemplate
- func (p ChatPromptTemplate) Format(values map[string]any) (string, error)
- func (p ChatPromptTemplate) FormatMessages(values map[string]any) ([]schema.ChatMessage, error)
- func (p ChatPromptTemplate) FormatPrompt(values map[string]any) (schema.PromptValue, error)
- func (p ChatPromptTemplate) GetInputVariables() []string
- type ChatPromptValue
- type ExampleSelector
- type FewShotPrompt
- type FormatPrompter
- type Formatter
- type GenericMessagePromptTemplate
- type HumanMessagePromptTemplate
- type MessageFormatter
- type MessagesPlaceholder
- type PromptTemplate
- type StringPromptValue
- type SystemMessagePromptTemplate
- type TemplateFormat
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNoExample is returned when none of the Examples and ExampleSelector are provided. ErrNoExample = errors.New("no example is provided") // ErrExamplesAndExampleSelectorProvided is returned when there are no Examples and ExampleSelector. ErrExamplesAndExampleSelectorProvided = errors.New("only one of 'Examples' and 'example_selector' should be" + " provided") )
var ( // ErrInputVariableReserved is returned when there is a conflict with a reserved variable name. ErrInputVariableReserved = errors.New("conflict with reserved variable name") // ErrInvalidPartialVariableType is returned when the partial variable is not a string or a function. ErrInvalidPartialVariableType = errors.New("invalid partial variable type") // ErrNeedChatMessageList is returned when the variable is not a list of chat messages. ErrNeedChatMessageList = errors.New("variable should be a list of chat messages") )
var ErrInvalidTemplateFormat = errors.New("invalid template format")
ErrInvalidTemplateFormat is the error when the template format is invalid and not supported.
Functions ¶
func CheckValidTemplate ¶
func CheckValidTemplate(template string, templateFormat TemplateFormat, inputVariables []string) error
CheckValidTemplate checks if the template is valid through checking whether the given TemplateFormat is available and whether the template can be rendered.
func RenderTemplate ¶
RenderTemplate renders the template with the given values.
Types ¶
type AIMessagePromptTemplate ¶
type AIMessagePromptTemplate struct {
Prompt PromptTemplate
}
AIMessagePromptTemplate is a message formatter that returns an AI message.
func NewAIMessagePromptTemplate ¶
func NewAIMessagePromptTemplate(template string, inputVariables []string) AIMessagePromptTemplate
NewAIMessagePromptTemplate creates a new AI message prompt template.
func (AIMessagePromptTemplate) FormatMessages ¶
func (p AIMessagePromptTemplate) FormatMessages(values map[string]any) ([]schema.ChatMessage, error)
FormatMessages formats the message with the values given.
func (AIMessagePromptTemplate) GetInputVariables ¶
func (p AIMessagePromptTemplate) GetInputVariables() []string
GetInputVariables returns the input variables the prompt expects.
type ChatPromptTemplate ¶
type ChatPromptTemplate struct { // Messages is the list of the messages to be formatted. Messages []MessageFormatter // PartialVariables represents a map of variable names to values or functions // that return values. If the value is a function, it will be called when the // prompt template is rendered. PartialVariables map[string]any }
ChatPromptTemplate is a prompt template for chat messages.
func NewChatPromptTemplate ¶
func NewChatPromptTemplate(messages []MessageFormatter) ChatPromptTemplate
NewChatPromptTemplate creates a new chat prompt template from a list of message formatters.
func (ChatPromptTemplate) Format ¶
func (p ChatPromptTemplate) Format(values map[string]any) (string, error)
Format formats the messages with values given and returns the messages as a string.
func (ChatPromptTemplate) FormatMessages ¶
func (p ChatPromptTemplate) FormatMessages(values map[string]any) ([]schema.ChatMessage, error)
FormatMessages formats the messages with the values and returns the formatted messages.
func (ChatPromptTemplate) FormatPrompt ¶
func (p ChatPromptTemplate) FormatPrompt(values map[string]any) (schema.PromptValue, error)
FormatPrompt formats the messages into a chat prompt value.
func (ChatPromptTemplate) GetInputVariables ¶
func (p ChatPromptTemplate) GetInputVariables() []string
GetInputVariables returns the input variables the prompt expect.
type ChatPromptValue ¶
type ChatPromptValue []schema.ChatMessage
ChatPromptValue is a prompt value that is a list of chat messages.
func (ChatPromptValue) Messages ¶
func (v ChatPromptValue) Messages() []schema.ChatMessage
Messages returns the ChatMessage slice.
func (ChatPromptValue) String ¶
func (v ChatPromptValue) String() string
String returns the chat message slice as a buffer string.
type ExampleSelector ¶
type ExampleSelector interface { AddExample(example map[string]string) string SelectExamples(inputVariables map[string]string) []map[string]string }
ExampleSelector is an interface for example selectors. It is equivalent to BaseExampleSelector in langchain and langchainjs.
type FewShotPrompt ¶
type FewShotPrompt struct { // Examples to format into the prompt. Either this or ExamplePrompt should be provided. Examples []map[string]string // ExampleSelector to choose the examples to format into the prompt. Either this or Examples should be provided. ExampleSelector ExampleSelector // ExamplePrompt is used to format an individual example. ExamplePrompt PromptTemplate // A prompt template string to put before the examples. Prefix string // A prompt template string to put after the examples. Suffix string // A list of the names of the variables the prompt template expects. InputVariables []string // Represents a map of variable names to values or functions that return values. If the value is a function, it will // be called when the prompt template is rendered. PartialVariables map[string]any // String separator used to join the prefix, the examples, and suffix. ExampleSeparator string // The format of the prompt template. Options are: 'f-string', 'jinja2'. TemplateFormat TemplateFormat // Whether to try validating the template. ValidateTemplate bool }
FewShotPrompt contains fields for a few-shot prompt.
func NewFewShotPrompt ¶
func NewFewShotPrompt(examplePrompt PromptTemplate, examples []map[string]string, exampleSelector ExampleSelector, prefix string, suffix string, input []string, partialInput map[string]interface{}, exampleSeparator string, templateFormat TemplateFormat, validateTemplate bool, ) (*FewShotPrompt, error)
NewFewShotPrompt creates a new few-shot prompt with the given input. It returns error if there is no example, both examples and exampleSelector are provided, or CheckValidTemplate returns err when ValidateTemplate is true.
func (*FewShotPrompt) AssemblePieces ¶
func (p *FewShotPrompt) AssemblePieces(exampleStrings []string) string
AssemblePieces assembles the pieces of the few-shot prompt.
func (*FewShotPrompt) Format ¶
func (p *FewShotPrompt) Format(values map[string]interface{}) (string, error)
Format assembles and formats the pieces of the prompt with the given input values and partial values.
func (*FewShotPrompt) FormatPrompt ¶
func (p *FewShotPrompt) FormatPrompt(values map[string]any) (schema.PromptValue, error)
func (*FewShotPrompt) GetInputVariables ¶
func (p *FewShotPrompt) GetInputVariables() []string
type FormatPrompter ¶
type FormatPrompter interface { FormatPrompt(values map[string]any) (schema.PromptValue, error) GetInputVariables() []string }
FormatPrompter is an interface for formatting a map of values into a prompt.
type GenericMessagePromptTemplate ¶
type GenericMessagePromptTemplate struct { Prompt PromptTemplate Role string }
GenericMessagePromptTemplate is a message formatter that returns message with the specified speaker.
func NewGenericMessagePromptTemplate ¶
func NewGenericMessagePromptTemplate(role, template string, inputVariables []string) GenericMessagePromptTemplate
NewGenericMessagePromptTemplate creates a new generic message prompt template.
func (GenericMessagePromptTemplate) FormatMessages ¶
func (p GenericMessagePromptTemplate) FormatMessages(values map[string]any) ([]schema.ChatMessage, error)
FormatMessages formats the message with the values given.
func (GenericMessagePromptTemplate) GetInputVariables ¶
func (p GenericMessagePromptTemplate) GetInputVariables() []string
GetInputVariables returns the input variables the prompt expects.
type HumanMessagePromptTemplate ¶
type HumanMessagePromptTemplate struct {
Prompt PromptTemplate
}
HumanMessagePromptTemplate is a message formatter that returns a human message.
func NewHumanMessagePromptTemplate ¶
func NewHumanMessagePromptTemplate(template string, inputVariables []string) HumanMessagePromptTemplate
NewHumanMessagePromptTemplate creates a new human message prompt template.
func (HumanMessagePromptTemplate) FormatMessages ¶
func (p HumanMessagePromptTemplate) FormatMessages(values map[string]any) ([]schema.ChatMessage, error)
FormatMessages formats the message with the values given.
func (HumanMessagePromptTemplate) GetInputVariables ¶
func (p HumanMessagePromptTemplate) GetInputVariables() []string
GetInputVariables returns the input variables the prompt expects.
type MessageFormatter ¶
type MessageFormatter interface { FormatMessages(values map[string]any) ([]schema.ChatMessage, error) GetInputVariables() []string }
MessageFormatter is an interface for formatting a map of values into a list of messages.
type MessagesPlaceholder ¶ added in v0.1.4
type MessagesPlaceholder struct {
VariableName string
}
func (MessagesPlaceholder) FormatMessages ¶ added in v0.1.4
func (p MessagesPlaceholder) FormatMessages(values map[string]any) ([]schema.ChatMessage, error)
FormatMessages formats the messages from the values by variable name.
func (MessagesPlaceholder) GetInputVariables ¶ added in v0.1.4
func (p MessagesPlaceholder) GetInputVariables() []string
GetInputVariables returns the input variables the prompt expect.
type PromptTemplate ¶
type PromptTemplate struct { // Template is the prompt template. Template string // A list of variable names the prompt template expects. InputVariables []string // TemplateFormat is the format of the prompt template. TemplateFormat TemplateFormat // OutputParser is a function that parses the output of the prompt template. OutputParser schema.OutputParser[any] // PartialVariables represents a map of variable names to values or functions // that return values. If the value is a function, it will be called when the // prompt template is rendered. PartialVariables map[string]any }
PromptTemplate contains common fields for all prompt templates.
func NewPromptTemplate ¶
func NewPromptTemplate(template string, inputVars []string) PromptTemplate
NewPromptTemplate returns a new prompt template.
func (PromptTemplate) Format ¶
func (p PromptTemplate) Format(values map[string]any) (string, error)
Format formats the prompt template and returns a string value.
func (PromptTemplate) FormatPrompt ¶
func (p PromptTemplate) FormatPrompt(values map[string]any) (schema.PromptValue, error)
FormatPrompt formats the prompt template and returns a string prompt value.
func (PromptTemplate) GetInputVariables ¶
func (p PromptTemplate) GetInputVariables() []string
GetInputVariables returns the input variables the prompt expect.
type StringPromptValue ¶
type StringPromptValue string
StringPromptValue is a prompt value that is a string.
func (StringPromptValue) Messages ¶
func (v StringPromptValue) Messages() []schema.ChatMessage
Messages returns a single-element ChatMessage slice.
func (StringPromptValue) String ¶
func (v StringPromptValue) String() string
type SystemMessagePromptTemplate ¶
type SystemMessagePromptTemplate struct {
Prompt PromptTemplate
}
SystemMessagePromptTemplate is a message formatter that returns a system message.
func NewSystemMessagePromptTemplate ¶
func NewSystemMessagePromptTemplate(template string, inputVariables []string) SystemMessagePromptTemplate
NewSystemMessagePromptTemplate creates a new system message prompt template.
func (SystemMessagePromptTemplate) FormatMessages ¶
func (p SystemMessagePromptTemplate) FormatMessages(values map[string]any) ([]schema.ChatMessage, error)
FormatMessages formats the message with the values given.
func (SystemMessagePromptTemplate) GetInputVariables ¶
func (p SystemMessagePromptTemplate) GetInputVariables() []string
GetInputVariables returns the input variables the prompt expects.
type TemplateFormat ¶
type TemplateFormat string
TemplateFormat is the format of the template.
const ( // TemplateFormatGoTemplate is the format for go-template. TemplateFormatGoTemplate TemplateFormat = "go-template" // TemplateFormatJinja2 is the format for jinja2. TemplateFormatJinja2 TemplateFormat = "jinja2" // TemplateFormatFString is the format for f-string. TemplateFormatFString TemplateFormat = "f-string" )