在LangChain 0.2中,输出解析器(Output Parsers)提供了一些预定义的类,帮助用户将生成模型的输出转换为结构化数据。这些类可以直接使用,也可以作为自定义解析器的基础。这些类包括但不限于以下几种:
1. BaseOutputParser
这是所有输出解析器的基类。所有具体的解析器类都应该继承自这个基类,并实现其接口。
from langchain.output_parsers import BaseOutputParser
class CustomOutputParser(BaseOutputParser):
def parse(self, text):
# 自定义解析逻辑
pass
2. RegexOutputParser
这个类使用正则表达式来解析生成的文本。用户可以定义正则表达式模式,将文本中的特定部分提取出来。
from langchain.output_parsers import RegexOutputParser
# 定义正则表达式模式
pattern = r"name: (\w+)\nversion: (\d+\.\d+)"
# 创建解析器实例
parser = RegexOutputParser(pattern=pattern)
# 解析文本
text = "name: ChatGPT\nversion: 4.0\n"
parsed_output = parser.parse(text)
print(parsed_output)
# 输出: ('ChatGPT', '4.0')
3. JSONOutputParser
这个类用于解析生成的JSON格式的文本。它可以将生成的JSON字符串转换为Python字典。
from langchain.output_parsers import JSONOutputParser
# 创建解析器实例
parser = JSONOutputParser()
# 解析文本
text = '{"name": "ChatGPT", "version": "4.0"}'
parsed_output = parser.parse(text)
print(parsed_output)
# 输出: {'name': 'ChatGPT', 'version': '4.0'}
4. DelimitedOutputParser
这个类用于解析特定分隔符分隔的文本。用户可以定义分隔符,将文本中的各部分提取出来。
from langchain.output_parsers import DelimitedOutputParser
# 定义分隔符
delimiter = "\n"
# 创建解析器实例
parser = DelimitedOutputParser(delimiter=delimiter)
# 解析文本
text = "name: ChatGPT\nversion: 4.0\n"
parsed_output = parser.parse(text)
print(parsed_output)
# 输出: ['name: ChatGPT', 'version: 4.0']
5. ListOutputParser
这个类用于解析生成的列表格式的文本。它可以将文本中的每一行作为列表的一项。
from langchain.output_parsers import ListOutputParser
# 创建解析器实例
parser = ListOutputParser()
# 解析文本
text = "name: ChatGPT\nversion: 4.0\n"
parsed_output = parser.parse(text)
print(parsed_output)
# 输出: ['name: ChatGPT', 'version: 4.0']
这些预定义的解析器类提供了常见的解析需求,用户可以根据具体情况选择合适的解析器。如果这些预定义的解析器不能满足需求,用户还可以继承BaseOutputParser
类,定义自己的解析逻辑。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。