Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
requests_chain.py63 linesDownload Raw Back to openapi
1"""request parser."""2 3import json4import re5from typing import Any6 7from langchain_classic.chains.api.openapi.prompts import REQUEST_TEMPLATE8from langchain_classic.chains.llm import LLMChain9from langchain_core.language_models import BaseLanguageModel10from langchain_core.output_parsers import BaseOutputParser11from langchain_core.prompts.prompt import PromptTemplate12 13 14class APIRequesterOutputParser(BaseOutputParser):15    """Parse the request and error tags."""16 17    def _load_json_block(self, serialized_block: str) -> str:18        try:19            return json.dumps(json.loads(serialized_block, strict=False))20        except json.JSONDecodeError:21            return "ERROR serializing request."22 23    def parse(self, llm_output: str) -> str:24        """Parse the request and error tags."""25 26        json_match = re.search(r"```json(.*?)```", llm_output, re.DOTALL)27        if json_match:28            return self._load_json_block(json_match.group(1).strip())29        message_match = re.search(r"```text(.*?)```", llm_output, re.DOTALL)30        if message_match:31            return f"MESSAGE: {message_match.group(1).strip()}"32        return "ERROR making request"33 34    @property35    def _type(self) -> str:36        return "api_requester"37 38 39class APIRequesterChain(LLMChain):40    """Get the request parser."""41 42    @classmethod43    def is_lc_serializable(cls) -> bool:44        return False45 46    @classmethod47    def from_llm_and_typescript(48        cls,49        llm: BaseLanguageModel,50        typescript_definition: str,51        verbose: bool = True,52        **kwargs: Any,53    ) -> LLMChain:54        """Get the request parser."""55        output_parser = APIRequesterOutputParser()56        prompt = PromptTemplate(57            template=REQUEST_TEMPLATE,58            output_parser=output_parser,59            partial_variables={"schema": typescript_definition},60            input_variables=["instructions"],61        )62        return cls(prompt=prompt, llm=llm, verbose=verbose, **kwargs)63 
codekingpro/portable-devtools · Team Ai