Source code for langchain.agents.conversational.output_parser

import re
from typing import Union

from langchain_core.agents import AgentAction, AgentFinish
from langchain_core.exceptions import OutputParserException

from langchain.agents.agent import AgentOutputParser
from langchain.agents.conversational.prompt import FORMAT_INSTRUCTIONS


[docs]class ConvoOutputParser(AgentOutputParser): """对话代理的输出解析器。""" ai_prefix: str = "AI" """AI输出前使用的前缀。""" format_instructions: str = FORMAT_INSTRUCTIONS """默认格式指令"""
[docs] def get_format_instructions(self) -> str: """返回给定输出解析器的格式化指令。""" return self.format_instructions
[docs] def parse(self, text: str) -> Union[AgentAction, AgentFinish]: if f"{self.ai_prefix}:" in text: return AgentFinish( {"output": text.split(f"{self.ai_prefix}:")[-1].strip()}, text ) regex = r"Action: (.*?)[\n]*Action Input: ([\s\S]*)" match = re.search(regex, text, re.DOTALL) if not match: raise OutputParserException(f"Could not parse LLM output: `{text}`") action = match.group(1) action_input = match.group(2) return AgentAction(action.strip(), action_input.strip(" ").strip('"'), text)
@property def _type(self) -> str: return "conversational"