harn-stdlib 0.8.26

Embedded Harn standard library source catalog
Documentation
/**
 * 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]
}