大模型应用的最佳实践Chains, Chain代码剖析、llmchain示例

各种chain的介绍

  • 串联式编排调用链:SequentialChain

    • 流水线 胶水代码逻辑处理
    • 具备编排逻辑 串行 one by one的调用
    • 上一个chain的输出 作为 下一个chain的输入
  • 超长文本的转换 Transform Chain

    • pdf文件处理
    • 提供了套壳的能力 将python处理字符串的能力 套用进来 完成数据的格式化处理
  • 实现条件判断的路由链:RouterChain

    • 复杂逻辑 条件判断
    • 组合routerchain 目标链 通过条件判断 选择对应的目标链进行调用

LangChain 核心模块学习:Chains

对于简单的大模型应用,单独使用语言模型(LLMs)是可以的。

但更复杂的大模型应用需要将 LLMsChat Models 链接在一起 - 要么彼此链接,要么与其他组件链接。

LangChain 为这种“链式”应用程序提供了 Chain 接口。

LangChain 以通用方式定义了 Chain,它是对组件进行调用序列的集合,其中可以包含其他链

Chain Class 基类

类继承关系:

bash
复制代码
Chain --> <name>Chain  # Examples: LLMChain, MapReduceChain, RouterChain

代码实现:github.com/langchain-a…

python
复制代码# 定义一个名为Chain的基础类
class Chain(Serializable, Runnable[Dict[str, Any], Dict[str, Any]], ABC):"""为创建结构化的组件调用序列的抽象基类。链应该用来编码对组件的一系列调用,如模型、文档检索器、其他链等,并为此序列提供一个简单的接口。Chain接口使创建应用程序变得容易,这些应用程序是:- 有状态的:给任何Chain添加Memory可以使它具有状态,- 可观察的:向Chain传递Callbacks来执行额外的功能,如记录,这在主要的组件调用序列之外,- 可组合的:Chain API足够灵活,可以轻松地将Chains与其他组件结合起来,包括其他Chains。链公开的主要方法是:- `__call__`:链是可以调用的。`__call__`方法是执行Chain的主要方式。它将输入作为一个字典接收,并返回一个字典输出。- `run`:一个方便的方法,它以args/kwargs的形式接收输入,并将输出作为字符串或对象返回。这种方法只能用于一部分链,不能像`__call__`那样返回丰富的输出。"""# 调用链def invoke(self, input: Dict[str, Any], config: Optional[runnableConfig] = None) -> Dict[str, Any]:"""传统调用方法。"""return self(input, **(config or {}))# 链的记忆,保存状态和变量memory: Optional[BaseMemory] = None"""可选的内存对象,默认为None。内存是一个在每个链的开始和结束时被调用的类。在开始时,内存加载变量并在链中传递它们。在结束时,它保存任何返回的变量。有许多不同类型的内存,请查看内存文档以获取完整的目录。"""# 回调,可能用于链的某些操作或事件。callbacks: Callbacks = Field(default=None, exclude=True)"""可选的回调处理程序列表(或回调管理器)。默认为None。在对链的调用的生命周期中,从on_chain_start开始,到on_chain_end或on_chain_error结束,都会调用回调处理程序。每个自定义链可以选择调用额外的回调方法,详细信息请参见Callback文档。"""# 是否详细输出模式verbose: bool = Field(default_factory=_get_verbosity)"""是否以详细模式运行。在详细模式下,一些中间日志将打印到控制台。默认值为`langchain.verbose`。"""# 与链关联的标签tags: Optional[List[str]] = None"""与链关联的可选标签列表,默认为None。这些标签将与对这个链的每次调用关联起来,并作为参数传递给在`callbacks`中定义的处理程序。你可以使用这些来例如识别链的特定实例与其用例。"""# 与链关联的元数据metadata: Optional[Dict[str, Any]] = None"""与链关联的可选元数据,默认为None。这些元数据将与对这个链的每次调用关联起来,并作为参数传递给在`callbacks`中定义的处理程序。你可以使用这些来例如识别链的特定实例与其用例。"""

LLMChain

LLMChain 是agent调用的基本单元

LLMChain 是 LangChain 中最简单的链,作为其他复杂 Chains 和 Agents 的内部调用,被广泛应用。

一个LLMChain由PromptTemplate和语言模型(LLM or Chat Model)组成。它使用直接传入(或 memory 提供)的 key-value 来规范化生成 Prompt Template(提示模板),并将生成的 prompt (格式化后的字符串)传递给大模型,并返回大模型输出。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

示例-LLMChain 公司取名

代码示例

ini
复制代码
import os
from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain.prompts import PromptTemplate
from langchain_openai import OpenAI
from langchain.chains import LLMChainapi_key = 'sk-xxx'
os.environ["OPENAI_API_KEY"] = api_keyserp_api = 'xxx'
os.environ["SERPAPI_API_KEY"] = serp_apioutput_parser = CommaSeparatedListOutputParser()# 模版
template = """给制造{product}的有限公司 取10个名字, 给出完整的公司名称。{format_instructions}"""# 预定义提示词
format_instructions = output_parser.get_format_instructions()# prompt提示词
prompt = PromptTemplate(input_variables=["product"],partial_variables={"format_instructions": format_instructions},template=template)chain = LLMChain(prompt=prompt, llm=OpenAI())
output = chain.run("笔记本电脑")
result = output_parser.parse(output)print(result)
#输出内容 ['1. Lenovo Limited\n2. Dell Technologies Co.\n3. HP Inc.\n4. Acer Incorporated\n5. AsusTek Computer Inc.\n6. Apple Inc.\n7. Toshiba Corporation\n8. Samsung Electronics Co.', 'Ltd.\n9. Microsoft Corporation\n10. Fujitsu Limited']

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

在这里插入图片描述

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/701074.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二、服务器配置修改

二、服务器配置修改 1 防火墙相关配置 systemctl status firewalld systemctl enable firewalld systemctl start firewalld firewall-cmd --reload firewall-cmd --list-all# 开启端口 firewall-cmd --zonepublic --add-port6030-6060/tcp --permanent firewall-cmd --zonep…

自动驾驶中的神经辐射场:综述

24年4月清华大学论文“Neural Radiance Field in Autonomous Driving: A Survey”。 神经辐射场&#xff08;NeRF&#xff09;由于其固有的优势&#xff0c;特别是其隐式表示和新视图合成能力&#xff0c;引起了学术界和工业界的广泛关注。 随着深度学习的快速发展&#xff0c…

Linux的命令(第二篇)

昨天学习到了第17个命令到 rm 命令&#xff08;作用删除目录和文件&#xff09;&#xff0c;今天继续往下里面了解其他命令以及格式、选项&#xff1a; &#xff08;17&#xff09;wc命令&#xff08;此wc非wc&#xff09; 作用&#xff1a;统计行数、单词数、字符分数。 格…

Leetcode—100296. 两个字符串的排列差【简单】

2024每日刷题&#xff08;135&#xff09; Leetcode—100296. 两个字符串的排列差 实现代码 class Solution { public:int findPermutationDifference(string s, string t) {int maps[26];int mapt[26];for(int i 0; i < s.size(); i) {int idxs s[i] - a;int idxt t[i…

由于安全设置错误,远程桌面连接失败怎么办?

问题&#xff1a;远程桌面安全设置错误&#xff1f; “我是一名IT经理&#xff0c;需要经常使用远程桌面连接到办公室的电脑。近期&#xff0c;我在使用远程桌面时&#xff0c;远程桌面提示‘由于安全设置错误&#xff0c;客户端无法连接到远程计算机。’我不清楚是什么原因所…

GPT-4o: 从最难的“大海捞针”基准看起

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在阅读过程中有些知识点存在盲区&#xff0c;可以回到如何优雅的谈论大模型重新阅读。另外斯坦福2024人工智能报告解读为通识性读物。若对于如果…

CS144 Checkpoint 4: interoperating in the world(2024)

分析网络路径和性能&#xff1a; mtr命令 mtr 输出的详细分析&#xff1a; mtr 162.105.253.58 命令用于结合 traceroute 和 ping 的功能&#xff0c;实时监测并分析从你的计算机到目标主机&#xff08;IP 地址 162.105.253.58&#xff0c;北京大学计算中心&#xff09;之间…

如何压缩图片大小?7个实用软件教你快速压缩图片大小

如何压缩图片大小&#xff1f;7个实用软件教你快速压缩图片大小 以下是七个实用的软件&#xff0c;可以帮助您快速压缩图片大小&#xff1a; 图片编辑助手&#xff1a;这是一款功能强大的图像处理软件&#xff0c;其中包含了图像压缩功能。您可以打开需要压缩的图片&#xf…

MyBatis缓存的概念

缓存回顾 什么是缓存&#xff1f; 缓存就是内存中的数据&#xff0c;常常来自对数据库查询结果的保存。使用缓存可以避免频繁与数据库交互&#xff0c;进而提高 响应速度 。 MyBatis 对缓存的支持 MyBatis 也提供了对缓存的支持&#xff0c;分为 一级缓存 和 二级缓存。可以…

【数据可视化01】matplotlib实例介绍4之六边形分箱图

目录 一、引言二、实例介绍 一、引言 hexbin是一个二维直方图&#xff0c;其中箱子是六边形&#xff0c;颜色表示每个箱子内的数据点数。 二、实例介绍 import matplotlib.pyplot as plt import numpy as np# Fixing random state for reproducibility np.random.seed(19680…

LLM Agent智能体综述(超详细)

前言 &#x1f3c6;&#x1f3c6;&#x1f3c6;在上一篇文章中&#xff0c;我们介绍了如何部署MetaGPT到本地&#xff0c;获取OpenAI API Key并配置其开发环境&#xff0c;并通过一个开发小组的多Agent案例感受了智能体的强大&#xff0c;在本文中&#xff0c;我们将对AI Agent…

draw.io 网页版二次开发(2):开始修改代码

目录 一 说明 二 打开开发环境 1. 代码调整 2. 修改访问链接 3. 注意 三 部分功能的代码汇总 1. 保存功能 2. 菜单栏折叠按钮功能 3. 顶部菜单栏 4.在顶部菜单栏中的【文件】菜单中新增选项 &#xff08;1&#xff09; 方法一&#xff1a;单独增加 &#xff08;…