mellea.stdlib.base
mellea.stdlib.base.blockify(s: str | CBlock | Component)
blockify
is a helper function that turns raw strings into CBlocks.
class mellea.stdlib.base.CBlock(value: str | None, meta: dict[str, Any] | None = None)
CBlock
is a block of content that can serve as input to or output from an LLM.
mellea.stdlib.base.CBlock.value()
mellea.stdlib.base.CBlock.value(v: str)
mellea.stdlib.base.CBlock.__str__()
mellea.stdlib.base.CBlock.__repr__()
class mellea.stdlib.base.Component()
Component
is a composite data structure that is intended to be represented to an LLM.
mellea.stdlib.base.Component.parts()
Component
.
mellea.stdlib.base.Component.format_for_llm()
Component
into a TemplateRepresentation
or string.
class mellea.stdlib.base.ModelOutputThunk(value: str | None, meta: dict[str, Any] | None = None, parsed_repr: CBlock | Component | Any | None = None, tool_calls: dict[str, ModelToolCall] | None = None)
ModelOutputThunk
is a special type of CBlock
that we know came from a model’s output. It is possible to instantiate one without the output being computed yet.
mellea.stdlib.base.ModelOutputThunk.is_computed()
class mellea.stdlib.base.ContextTurn()
class mellea.stdlib.base.Context()
Context
is used to track the state of a MelleaSession
.
mellea.stdlib.base.Context.reset()
Session
.
mellea.stdlib.base.Context.insert(value: CBlock | Component, key: Any | None = None, generate_logs: list[GenerateLog] | None = None)
Context
must define its own semantics for inserting something into the context.
value
: CBlock | Component
: the thing to insert.key
: Optional[Any]
: a key by which the value is indexed to. This is optional and only needed for fairly sophisticated Context types. Note that this is NOT necessarily a key that can be used for KV cache lookups!generate_logs
: Adding log information about the insertion. Should only be used for output objects.mellea.stdlib.base.Context.insert_turn(turn: ContextTurn, generate_logs: list[GenerateLog] | None = None)
turn
: the turn to insert.generate_logs
: Adding log information about the insertion. Will be bound to the output part of the turn.mellea.stdlib.base.Context.copy()
mellea.stdlib.base.Context._hash_for_kv_cache()
Context
is responsible for maintaining a hash representation of itself. This hash is used by backends to refer to a Context’s state.
mellea.stdlib.base.Context.linearize()
mellea.stdlib.base.Context.last_output()
mellea.stdlib.base.Context.last_turn()
mellea.stdlib.base.Context.logs()
mellea.stdlib.base.Context.get_logs_by_index(index: int)
GenerateLog
for the given index.
mellea.stdlib.base.Context.last_output_and_logs(all_intermediate_results: bool = False)
ModelOutputThunk
for the last output and the corresponding GenerateLog
.
all_intermediate_results
: if False (default), only returns the Log for the that led to the final output, if True, a list of all intermediate results (including the final one) is returned.class mellea.stdlib.base.BasicContext()
mellea.stdlib.base.BasicContext.last_output()
mellea.stdlib.base.BasicContext.logs()
mellea.stdlib.base.BasicContext.get_logs_by_index(index: int)
mellea.stdlib.base.BasicContext.last_output_and_logs(all_intermediate_results: bool = False)
mellea.stdlib.base.BasicContext.last_turn()
mellea.stdlib.base.BasicContext.__str__()
class mellea.stdlib.base.LinearContext(window_size: int | None = None, log_window_size: int | None = 10, is_chat_context = True)
mellea.stdlib.base.LinearContext.reset()
Session
.
mellea.stdlib.base.LinearContext.insert(value: CBlock | Component, key: Any | None = None, generate_logs: list[GenerateLog] | None = None)
mellea.stdlib.base.LinearContext.insert_turn(turn: ContextTurn, generate_logs: list[GenerateLog] | None = None)
mellea.stdlib.base.LinearContext.linearize()
mellea.stdlib.base.LinearContext.is_chat_history()
Message
.
mellea.stdlib.base.LinearContext._hash_for_kv_cache()
mellea.stdlib.base.LinearContext.copy()
class mellea.stdlib.base.SimpleContext()
SimpleContext
is a context in which each interaction is a separate and independent turn. The history of all previous turns is NOT saved.
This context is intended for applications where each LLM call is (mostly) a stand-alone request. Patterns like instruct-validate-repair fall into this category.
It is possible for a single turn to have many different CBlocks/Components. This can happen for a variety of reasons:
mellea.stdlib.base.SimpleContext.linearize()
mellea.stdlib.base.SimpleContext.reset()
Session
.
mellea.stdlib.base.SimpleContext.insert(value: CBlock | Component, key: Any | None = None, generate_logs: list[GenerateLog] | None = None)
mellea.stdlib.base.SimpleContext.insert_turn(turn: ContextTurn, generate_logs: list[GenerateLog] | None = None)
mellea.stdlib.base.SimpleContext._hash_for_kv_cache()
mellea.stdlib.base.SimpleContext.copy()
class mellea.stdlib.base.TemplateRepresentation()
class mellea.stdlib.base.GenerateLog()
class mellea.stdlib.base.ModelToolCall()
mellea.stdlib.base.ModelToolCall.call_func()