Spaces:
Runtime error
Runtime error
#!/usr/bin/env python | |
# coding: utf-8 | |
""" | |
@Time : 2023/7/11 10:03 | |
@Author : chengmaoyu | |
@File : action_output | |
@From : https://github.com/geekan/MetaGPT/blob/main/metagpt/actions/action_output.py | |
""" | |
from typing import Dict, Type | |
from pydantic import BaseModel, create_model, root_validator, validator | |
class ActionOutput: | |
content: str | |
instruct_content: BaseModel | |
def __init__(self, content: str, instruct_content: BaseModel): | |
self.content = content | |
self.instruct_content = instruct_content | |
def create_model_class(cls, class_name: str, mapping: Dict[str, Type]): | |
new_class = create_model(class_name, **mapping) | |
def check_name(v, field): | |
if field.name not in mapping.keys(): | |
raise ValueError(f'Unrecognized block: {field.name}') | |
return v | |
def check_missing_fields(values): | |
required_fields = set(mapping.keys()) | |
missing_fields = required_fields - set(values.keys()) | |
if missing_fields: | |
raise ValueError(f'Missing fields: {missing_fields}') | |
return values | |
new_class.__validator_check_name = classmethod(check_name) | |
new_class.__root_validator_check_missing_fields = classmethod(check_missing_fields) | |
return new_class | |