写点什么

软件测试 / 人工智能|探究 LangChain 核心模块:PromptsModelsParsers

  • 2023-11-27
    北京
  • 本文字数:2100 字

    阅读完需:约 7 分钟

简介

LangChain 是一种新兴的语言处理平台,其核心模块之一即 PromptsModelsParsers。这一模块扮演着关键的角色,为 LangChain 的功能和性能提供了坚实的基础。在这篇文章中,我们将深入探讨 PromptsModelsParsers 模块的工作原理、功能和其对语言处理的重要性。

什么是 PromptsModelsParsers?

在 LangChain 中,PromptsModelsParsers 模块被设计成一个整合了多种功能的模块,它涵盖了语言提示(prompts)、模型(models)和解析器(parsers)。这个模块集合了自然语言处理中的关键要素,以便有效地解析用户输入并产生准确的输出。如下图所示:



  • Prompts:负责请求数据的准备步骤。

  • Model:负责具体请求和参数。

  • Parser:负责请求结果返回后的处理步骤。


三者共同作用,完整的覆盖了整个大模型请求。

工作原理

  1. 语言提示(Prompts):


PromptsModelsParsers 模块通过使用预先定义的语言提示(例如,问题模板或任务指令)来引导用户输入。这些提示是为了激活特定类型的语言处理任务,使得模型能够更好地理解用户意图。


  1. 模型(Models):


该模块整合了多种语言模型,这些模型经过训练,能够处理各种语言任务,如文本生成、语义理解、情感分析等。PromptsModelsParsers 利用这些模型来处理用户输入,并生成相应的输出。


  1. 解析器(Parsers):


解析器是模块中的关键组成部分,它负责解析和理解用户输入。这包括对输入进行结构化分析,提取关键信息并将其传递给适当的模型进行处理。解析器的优化可以大幅提高系统的准确性和效率。

功能与应用

PromptsModelsParsers 模块的功能涵盖了广泛的应用领域:


  • 自然语言理解(NLU):模块能够理解用户提出的问题、命令或需求,并进行语义分析,使系统能够准确地回应用户。

  • 智能交互:LangChain 借助这一模块实现了智能对话功能,使得系统能够更加自然地与用户交流。

  • 任务处理:通过语言提示的引导和模型的支持,模块可以帮助处理各种任务,如日程安排、搜索、语言翻译等。

使用示例

下面是我们的应用例子:


# LangChain相关模块的导入from langchain.output_parsers import ResponseSchema, StructuredOutputParserfrom langchain.chat_models import ChatOpenAIfrom langchain.prompts import ChatPromptTemplatekey = 'open_ai_key'# 创建OpenAI调用实例# temperature用来设置大模型返回数据的随机性和创造性,较低的数值返回的数据就更贴近现实。chat = ChatOpenAI(temperature=0.0, openai_api_key=key)# 可复用的模板字符串,注意不要使用 f字符串 ,LangChain会在运行时自动替换template_str = """\  text: {text}  {format_instructions}"""# 针对prompt中的每个想要提取的属性,创建ResponseSchema记录字段名称和描述,用于后续解析返回数据time_schema = ResponseSchema(name="时间", description="事件发生的准确时间")location_schema = ResponseSchema(name="地点", description="事情发生时,讲述人所处的城市名称")event_schema = ResponseSchema(name="事件", description="文中主要讲述的具体事件是发生了什么事件")situation_schema = ResponseSchema(    name="现象",    description="列举出事件发生时,出现的每个现象,每个现象作为列表中的单独一项")# 将全部的属性描述schema组装成列表,生成相应值结构化解析器response_schemas = [time_schema, location_schema, event_schema, situation_schema]output_parser = StructuredOutputParser.from_response_schemas(response_schemas)# 根据schema格式定义,自动生成一个支持格式化输出的promptformat_instructions = output_parser.get_format_instructions()
# 根据模板和数据,生成完整成prompt请求数据prompt_template = ChatPromptTemplate.from_template(template_str)custom_message = prompt_template.format_messages( text="2023年11月11日下午16:29分,我在北京坐在沙发上看比赛,S13全球总决赛半决赛第一天,TheShy的兰博在天崩开局之下,成功反杀对面,我瞬间感觉我也被兰博烤红了,TheShy就是神!", format_instructions=format_instructions)# 调用大模型发起请求customer_res = chat(custom_message)# 根据结构化解析器,解析返回数据,获取类型正确的数据结果result = output_parser.parse(customer_res.content)print(result)print(type(result))
--------返回结果如下:{'时间':'2023年11月11日下午16:29分', '地点':'北京', '事件':'S13全球总决赛半决赛', '现象':['TheShy兰博天崩开局', '成功反杀对面', '我也被烤红了', 'TheShy就是神']}
复制代码

未来展望

LangChainPromptsModelsParsers 模块是语言处理技术不断发展的一部分。随着深度学习和自然语言处理领域的进步,预计这一模块将会不断演进和优化,为用户提供更加智能、高效的语言处理体验。

总结

本文主要介绍了LangChainPromptsModelsParsers 模块,介绍了它的原理以及功能运用,并且举例说明了它们的工作步骤,总的来说,PromptsModelsParsers 模块是 LangChain 中不可或缺的一环,它的高效运作为整个平台的功能提供了坚实的基础,为用户带来了更加智能和便捷的语言处理体验。


获取更多技术资料,请点击!



用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
软件测试/人工智能|探究 LangChain 核心模块:PromptsModelsParsers_霍格沃兹测试开发学社_InfoQ写作社区