/**
* message.
*
* @effects: []
* @allocation: heap
* @errors: []
* @api_stability: stable
* @example: message(role, content)
*/
pub fn message(role, content) {
return {role: role, content: content}
}
/**
* prompt_order_permutation.
*
* @effects: []
* @allocation: heap
* @errors: []
* @api_stability: stable
* @example: prompt_order_permutation(options)
*/
pub fn prompt_order_permutation(options = nil) {
let seed = options?.seed ?? 0
return {
name: "prompt_order_permutation",
label: "prompt_order_permutation(seed: " + to_string(seed) + ")",
seed: seed,
}
}
/**
* doubled_prompt.
*
* @effects: []
* @allocation: heap
* @errors: []
* @api_stability: stable
* @example: doubled_prompt()
*/
pub fn doubled_prompt() {
return {name: "doubled_prompt", label: "doubled_prompt"}
}
/**
* chain_of_draft.
*
* @effects: []
* @allocation: heap
* @errors: []
* @api_stability: stable
* @example: chain_of_draft()
*/
pub fn chain_of_draft() {
return {name: "chain_of_draft", label: "chain_of_draft"}
}
/**
* inverted_system.
*
* @effects: []
* @allocation: heap
* @errors: []
* @api_stability: stable
* @example: inverted_system()
*/
pub fn inverted_system() {
return {name: "inverted_system", label: "inverted_system"}
}
/**
* custom.
*
* @effects: []
* @allocation: heap
* @errors: []
* @api_stability: stable
* @example: custom(label, transform, args)
*/
pub fn custom(label, transform, args = nil) {
return {name: label, label: label, args: args ?? {}, transform: transform}
}
/**
* latest_string_user_message.
*
* @effects: []
* @allocation: heap
* @errors: []
* @api_stability: stable
* @example: latest_string_user_message(messages)
*/
pub fn latest_string_user_message(messages) {
var idx = len(messages)
while idx > 0 {
idx = idx - 1
let msg = messages[idx]
if msg?.role == "user" && type_of(msg?.content) == "string" {
return {index: idx, message: msg}
}
}
return nil
}
/**
* replace_message.
*
* @effects: []
* @allocation: heap
* @errors: []
* @api_stability: stable
* @example: replace_message(messages, index, message)
*/
pub fn replace_message(messages, index, message) {
var out = []
var idx = 0
while idx < len(messages) {
out = out
+ [
if idx == index {
message
} else {
messages[idx]
},
]
idx = idx + 1
}
return out
}
/**
* prepend_message.
*
* @effects: []
* @allocation: heap
* @errors: []
* @api_stability: stable
* @example: prepend_message(messages, msg)
*/
pub fn prepend_message(messages, msg) {
return [msg] + messages
}
/**
* append_message.
*
* @effects: []
* @allocation: heap
* @errors: []
* @api_stability: stable
* @example: append_message(messages, msg)
*/
pub fn append_message(messages, msg) {
return messages + [msg]
}