Skip to content

Index

BaseOutputParser #

Bases: Protocol

Output parser class.

Source code in llama-index-core/llama_index/core/types.py
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
@runtime_checkable
class BaseOutputParser(Protocol):
    """Output parser class."""

    @classmethod
    def __modify_schema__(cls, schema: Dict[str, Any]) -> None:
        """Avoids serialization issues."""
        schema.update(type="object", default={})

    @abstractmethod
    def parse(self, output: str) -> Any:
        """Parse, validate, and correct errors programmatically."""

    def format(self, query: str) -> str:
        """Format a query with structured output formatting instructions."""
        return query

    def format_messages(self, messages: List[ChatMessage]) -> List[ChatMessage]:
        """Format a list of messages with structured output formatting instructions."""
        # NOTE: apply output parser to either the first message if it's a system message
        #       or the last message
        if messages:
            if messages[0].role == MessageRole.SYSTEM:
                messages[0].content = self.format(messages[0].content or "")
            else:
                messages[-1].content = self.format(messages[-1].content or "")

        return messages

parse abstractmethod #

parse(output: str) -> Any

Parse, validate, and correct errors programmatically.

Source code in llama-index-core/llama_index/core/types.py
38
39
40
@abstractmethod
def parse(self, output: str) -> Any:
    """Parse, validate, and correct errors programmatically."""

format #

format(query: str) -> str

Format a query with structured output formatting instructions.

Source code in llama-index-core/llama_index/core/types.py
42
43
44
def format(self, query: str) -> str:
    """Format a query with structured output formatting instructions."""
    return query

format_messages #

format_messages(messages: List[ChatMessage]) -> List[ChatMessage]

Format a list of messages with structured output formatting instructions.

Source code in llama-index-core/llama_index/core/types.py
46
47
48
49
50
51
52
53
54
55
56
def format_messages(self, messages: List[ChatMessage]) -> List[ChatMessage]:
    """Format a list of messages with structured output formatting instructions."""
    # NOTE: apply output parser to either the first message if it's a system message
    #       or the last message
    if messages:
        if messages[0].role == MessageRole.SYSTEM:
            messages[0].content = self.format(messages[0].content or "")
        else:
            messages[-1].content = self.format(messages[-1].content or "")

    return messages