mirror of
https://github.com/hwchase17/langchain.git
synced 2025-07-03 03:38:06 +00:00
openapi/planner.py: Deal with json in markdown output cases (#13576)
- **Description:** In openapi/planner deal with json in markdown output cases - **Issue:** In some cases LLMs could return json in markdown which can't be loaded. - **Dependencies:** - **Tag maintainer:** @eyurtsev - **Twitter handle:** --------- Co-authored-by: Harrison Chase <hw.chase.17@gmail.com>
This commit is contained in:
parent
8eab4d95c0
commit
abbba6c7d8
@ -36,6 +36,7 @@ from langchain.callbacks.base import BaseCallbackManager
|
|||||||
from langchain.chains.llm import LLMChain
|
from langchain.chains.llm import LLMChain
|
||||||
from langchain.llms.openai import OpenAI
|
from langchain.llms.openai import OpenAI
|
||||||
from langchain.memory import ReadOnlySharedMemory
|
from langchain.memory import ReadOnlySharedMemory
|
||||||
|
from langchain.output_parsers.json import parse_json_markdown
|
||||||
from langchain.tools.base import BaseTool
|
from langchain.tools.base import BaseTool
|
||||||
from langchain.tools.requests.tool import BaseRequestsTool
|
from langchain.tools.requests.tool import BaseRequestsTool
|
||||||
from langchain.utilities.requests import RequestsWrapper
|
from langchain.utilities.requests import RequestsWrapper
|
||||||
@ -80,7 +81,7 @@ class RequestsGetToolWithParsing(BaseRequestsTool, BaseTool):
|
|||||||
|
|
||||||
def _run(self, text: str) -> str:
|
def _run(self, text: str) -> str:
|
||||||
try:
|
try:
|
||||||
data = json.loads(text)
|
data = parse_json_markdown(text)
|
||||||
except json.JSONDecodeError as e:
|
except json.JSONDecodeError as e:
|
||||||
raise e
|
raise e
|
||||||
data_params = data.get("params")
|
data_params = data.get("params")
|
||||||
@ -110,7 +111,7 @@ class RequestsPostToolWithParsing(BaseRequestsTool, BaseTool):
|
|||||||
|
|
||||||
def _run(self, text: str) -> str:
|
def _run(self, text: str) -> str:
|
||||||
try:
|
try:
|
||||||
data = json.loads(text)
|
data = parse_json_markdown(text)
|
||||||
except json.JSONDecodeError as e:
|
except json.JSONDecodeError as e:
|
||||||
raise e
|
raise e
|
||||||
response = self.requests_wrapper.post(data["url"], data["data"])
|
response = self.requests_wrapper.post(data["url"], data["data"])
|
||||||
@ -139,7 +140,7 @@ class RequestsPatchToolWithParsing(BaseRequestsTool, BaseTool):
|
|||||||
|
|
||||||
def _run(self, text: str) -> str:
|
def _run(self, text: str) -> str:
|
||||||
try:
|
try:
|
||||||
data = json.loads(text)
|
data = parse_json_markdown(text)
|
||||||
except json.JSONDecodeError as e:
|
except json.JSONDecodeError as e:
|
||||||
raise e
|
raise e
|
||||||
response = self.requests_wrapper.patch(data["url"], data["data"])
|
response = self.requests_wrapper.patch(data["url"], data["data"])
|
||||||
@ -168,7 +169,7 @@ class RequestsPutToolWithParsing(BaseRequestsTool, BaseTool):
|
|||||||
|
|
||||||
def _run(self, text: str) -> str:
|
def _run(self, text: str) -> str:
|
||||||
try:
|
try:
|
||||||
data = json.loads(text)
|
data = parse_json_markdown(text)
|
||||||
except json.JSONDecodeError as e:
|
except json.JSONDecodeError as e:
|
||||||
raise e
|
raise e
|
||||||
response = self.requests_wrapper.put(data["url"], data["data"])
|
response = self.requests_wrapper.put(data["url"], data["data"])
|
||||||
@ -198,7 +199,7 @@ class RequestsDeleteToolWithParsing(BaseRequestsTool, BaseTool):
|
|||||||
|
|
||||||
def _run(self, text: str) -> str:
|
def _run(self, text: str) -> str:
|
||||||
try:
|
try:
|
||||||
data = json.loads(text)
|
data = parse_json_markdown(text)
|
||||||
except json.JSONDecodeError as e:
|
except json.JSONDecodeError as e:
|
||||||
raise e
|
raise e
|
||||||
response = self.requests_wrapper.delete(data["url"])
|
response = self.requests_wrapper.delete(data["url"])
|
||||||
|
Loading…
Reference in New Issue
Block a user