mirror of
https://github.com/hwchase17/langchain.git
synced 2025-06-24 15:43:54 +00:00
feat: temp fixed Could not parse LLM output on agents folder (#7746)
--------- Co-authored-by: Bagatur <baskaryan@gmail.com>
This commit is contained in:
parent
125ae6d9de
commit
e58b1d7073
@ -8,21 +8,45 @@ from langchain.output_parsers.json import parse_json_markdown
|
|||||||
from langchain.schema import AgentAction, AgentFinish, OutputParserException
|
from langchain.schema import AgentAction, AgentFinish, OutputParserException
|
||||||
|
|
||||||
|
|
||||||
|
# Define a class that parses output for conversational agents
|
||||||
class ConvoOutputParser(AgentOutputParser):
|
class ConvoOutputParser(AgentOutputParser):
|
||||||
"""Output parser for the conversational agent."""
|
"""Output parser for the conversational agent."""
|
||||||
|
|
||||||
def get_format_instructions(self) -> str:
|
def get_format_instructions(self) -> str:
|
||||||
|
"""Returns formatting instructions for the given output parser."""
|
||||||
return FORMAT_INSTRUCTIONS
|
return FORMAT_INSTRUCTIONS
|
||||||
|
|
||||||
def parse(self, text: str) -> Union[AgentAction, AgentFinish]:
|
def parse(self, text: str) -> Union[AgentAction, AgentFinish]:
|
||||||
|
"""Attempts to parse the given text into an AgentAction or AgentFinish.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
OutputParserException if parsing fails.
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
|
# Attempt to parse the text into a structured format (assumed to be JSON
|
||||||
|
# stored as markdown)
|
||||||
response = parse_json_markdown(text)
|
response = parse_json_markdown(text)
|
||||||
action, action_input = response["action"], response["action_input"]
|
|
||||||
if action == "Final Answer":
|
# If the response contains an 'action' and 'action_input'
|
||||||
return AgentFinish({"output": action_input}, text)
|
if "action" in response and "action_input" in response:
|
||||||
|
action, action_input = response["action"], response["action_input"]
|
||||||
|
|
||||||
|
# If the action indicates a final answer, return an AgentFinish
|
||||||
|
if action == "Final Answer":
|
||||||
|
return AgentFinish({"output": action_input}, text)
|
||||||
|
else:
|
||||||
|
# Otherwise, return an AgentAction with the specified action and
|
||||||
|
# input
|
||||||
|
return AgentAction(action, action_input, text)
|
||||||
else:
|
else:
|
||||||
return AgentAction(action, action_input, text)
|
# If the necessary keys aren't present in the response, raise an
|
||||||
|
# exception
|
||||||
|
raise OutputParserException(
|
||||||
|
f"Missing 'action' or 'action_input' in LLM output: {text}"
|
||||||
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
# If any other exception is raised during parsing, also raise an
|
||||||
|
# OutputParserException
|
||||||
raise OutputParserException(f"Could not parse LLM output: {text}") from e
|
raise OutputParserException(f"Could not parse LLM output: {text}") from e
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
Loading…
Reference in New Issue
Block a user