青训营X豆包MarsCode 技术训练营笔记(3) | 豆包MarsCode AI刷题

88 阅读4分钟

这是对LangChain学习的总结第 7-10 课。

第7课:预训练+微调

  • 预训练:在大规模无标注的数据集上进行训练,模型有很强的泛化能力,拥有基础的语义知识。
  • 微调:在预训练模型的基础上,根据特点的下游任务(情感,医疗,翻译等)进行微调参数,适合具体的垂类领域
  • 预训练—微调的优势:预训练模型有大量的通用知识库,微调模型可以减少数据量和训练时间,根据特定的任务进行优化,简化模型的部署的难度,并且有很强的扩展性。

第8课:输出解析

输出解析器是处理和构建语言模型的响应类。一个合格的输出解释器需要实现2个核心方法:

  • get_format_instructions:返回字符串,指导语言模型的输出格式,告诉模型如何组织和构建回答。
  • parse:接收字符串(语言模型的输出),解析为特定的数据结构。确保模型的输出符合我们的预期。
  • parse_with_prompt:和parse类似,多了一个prompt参数(用于生成这个输出的提示)。

介绍几种解析器:

  • Pydantic(JSON)解析器:处理模型的输出,使用场景是模型的输出是符合JSON格式。
  • 自动修复解析器:自动修复某些模型的输出错误,纠正输出文本中的语法和拼写错误。
  • 重试解析器:该解析器的适用场景在首次输出不符合预期时,重新生成新的输出。

Pydantic(JSON)解析器: 首先需要创建模型实例,选择一个大语言模型。接下来,定义输出数据的格式(数据结构),然后创建输出解析器,并获取输出格式的指示。然后创建提示模板,并加入输出解析器,最终我们生成提示传入模型,并解析输出。

输出的数据:
[{'flower_type': 'Rose', 'price': 50, 'description': '玫瑰是最浪漫的花,它具有柔和的粉红色,有着浓浓的爱意,价格实惠,50元就可以拥有一束玫瑰。', 'reason': '玫瑰代表着爱情,是最浪漫的礼物,以实惠的价格,可以让您尽情体验爱的浪漫。'}, 
{'flower_type': '百合', 'price': 30, 'description': '这支百合,柔美的花蕾,在你的手中摇曳,仿佛在与你深情的交谈', 'reason': '营造浪漫氛围'}, 
{'flower_type': 'Carnation', 'price': 20, 'description': '艳丽缤纷的康乃馨,带给你温馨、浪漫的气氛,是最佳的礼物选择!', 'reason': '康乃馨是一种颜色鲜艳、芬芳淡雅、具有浪漫寓意的鲜花,非常适合作为礼物,而且20元的价格比较实惠。'}]
  • 自动修复解析器:举个例子:如果字符串的内容如下(使用单引号"{'name': '康乃馨', 'colors': ['粉红色','白色','红色','紫色','黄色']}"),解析器会自动修复为'{"name": "康乃馨", "colors": ["粉红色","白色","红色","紫色","黄色"]}'。这样JSON字符串就是正确的格式可以被模型正确解析。主要处理格式问题。

  • 重试解析器:当程序中的错误不只是简单的格式问题,而是有内容缺失,该解析可以重新与模型交互,输出更完整。

第9-10课:

链:就像是搭积木,把提示词和大语言模型封装成一个模块,并且不同的模块之间可以相互调用。链的调用方式有:

  • 直接调用:llm_chain("玫瑰")
  • 使用run方法llm_chain.run("玫瑰")
  • 使用predict方法llm_chain.predict(flower="玫瑰")
  • 使用apply方法input_list = [{"flower": "玫瑰",'season': "夏季"},{"flower": "百合",'season': "春季"},{"flower": "郁金香",'season': "秋季"} ]result = llm_chain.apply(input_list)
  • 使用generate方法llm_chain.generate(input_list)

顺序链Vs路由链

  • 顺序链:顾名思义,就是每一个链都是串联的
  • 路由链:动态选择用于给定输入的下一个链,根据用户具体的需求,优先使用路由链确定用户的问题适合哪一个处理模板,然后将问题发送给该处理模板,若问题不适合已定义的任何模板,他会被发送到默认链。

第十一课:

Memory记忆 使用记忆机制可以让大模型记住前文进行的对话。这些记忆机制都含有如下两个参数:

  • {history}  是存储会话记忆的地方,也就是人类和人工智能之间对话历史的信息。
  • {input}  是新输入的地方,你可以把它看成是和ChatGPT对话时,文本框中的输入。

image.png