return func_call["arguments"]
def _parse_tag(inputs: dict) -> dict:
    args = _get_function_arguments(inputs)
    return {"output": json.loads(args)}
def _parse_tag_pydantic(inputs: dict, pydantic_schema: Any) -> dict:
    args = _get_function_arguments(inputs)
    args = pydantic_schema.parse_raw(args)
    return {"output": args}
def _parse_entities(inputs: dict) -> dict:
    args = _get_function_arguments(inputs)
    return {"output": json.loads(args)["info"]}
def _parse_entities_pydantic(inputs: dict, pydantic_schema: Any) -> dict:
    args = _get_function_arguments(inputs)
    pydantic_args = pydantic_schema.parse_raw(args)
    return {"output": pydantic_args.info}
class OpenAIFunctionsChain(Chain):
    prompt: BasePromptTemplate
    llm: BaseLanguageModel
    functions: List[Dict]
    kwargs: Dict = Field(default_factory=dict)
    @property
    def input_keys(self) -> List[str]:
        return self.prompt.input_variables
    @property
    def output_keys(self) -> List[str]:
        return ["output"]
    def _call(
        self,
        inputs: Dict[str, Any],
        run_manager: Optional[CallbackManagerForChainRun] = None,
    ) -> Dict[str, Any]:
        _inputs = {k: v for k, v in inputs.items() if k in self.prompt.input_variables}
        prompt = self.prompt.format_prompt(**_inputs)
        messages = prompt.to_messages()
        _run_manager = run_manager or CallbackManagerForChainRun.get_noop_manager()
        callbacks = _run_manager.get_child()
rtdocs_stable/api.python.langchain.com/en/stable/_modules/langchain/chains/openai_functions.html