Lagent / lagent /prompts /parsers /str_parser.py
FaYo
agent
e3d4122
import string
from typing import Any
class StrParser:
def __init__(
self,
template: str = '',
**format_field,
):
fields = {item[1] for item in string.Formatter().parse(template) if item[1] is not None}
if not fields.issubset(format_field.keys()):
raise ValueError(
'not all required fields of "template" are provided, missing '
f'{fields - format_field.keys()}. Please pass them as keyword arguments.'
)
self.template = template
self.format_field = format_field
def format_instruction(self) -> Any:
format_data = {key: self.format_to_string(value) for key, value in self.format_field.items()}
return self.template.format(**format_data)
def format_to_string(self, format_model: Any) -> str:
return format_model
def format_response(self, parsed: dict) -> str:
raise NotImplementedError
def parse_response(self, data: str) -> str:
return data