Spaces:
Runtime error
Runtime error
| from enum import Enum | |
| from typing import Any, Dict, List, Type | |
| from langchain_core.exceptions import OutputParserException | |
| from langchain_core.output_parsers import BaseOutputParser | |
| from langchain_core.pydantic_v1 import root_validator | |
| class EnumOutputParser(BaseOutputParser): | |
| """Parse an output that is one of a set of values.""" | |
| enum: Type[Enum] | |
| """The enum to parse. Its values must be strings.""" | |
| def raise_deprecation(cls, values: Dict) -> Dict: | |
| enum = values["enum"] | |
| if not all(isinstance(e.value, str) for e in enum): | |
| raise ValueError("Enum values must be strings") | |
| return values | |
| def _valid_values(self) -> List[str]: | |
| return [e.value for e in self.enum] | |
| def parse(self, response: str) -> Any: | |
| try: | |
| return self.enum(response.strip()) | |
| except ValueError: | |
| raise OutputParserException( | |
| f"Response '{response}' is not one of the " | |
| f"expected values: {self._valid_values}" | |
| ) | |
| def get_format_instructions(self) -> str: | |
| return f"Select one of the following options: {', '.join(self._valid_values)}" | |