tnblog
首页
视频
资源
登录

LangChain 链(学习笔记)

3053人阅读 2023/9/11 14:34 总访问:3467347 评论:0 收藏:0 手机
分类: python

LangChain 链(学习笔记)


单一的LLM对于简单的应用场景已经足够,但是更复杂的应用程序需要将LLM串联在一起,需要多LLM协同工作。

简介


LangChain提出了 链 的概念,为这种“链式”应用程序提供了 Chain 接口。
Chain 定义组件的调用序列,其中可以包括其他链。
链大大简化复杂应用程序的实现,并使其模块化,这也使调试、维护和改进应用程序变得更容易。

最基础的链 LLMChain


LLMChainLangChain 中最基础的链。
本课就从 LLMChain 开始,学习链的使用。

LLMChain 接受如下组件:

  • LLM
  • 提示词模版


LLMChain 返回LLM的回复。
第二讲中我们学习了OpenAI LLM的使用。
现在我们基于OpenAI LLM,利用 LLMChain 尝试构建自己第一个链。
1.准备必要的组件

  1. from langchain.llms import OpenAI
  2. from langchain.prompts import PromptTemplate
  3. llm = OpenAI(temperature=0, openai_api_key="您的有效openai ai key")
  4. prompt = PromptTemplate(
  5. input_variables=["color"],
  6. template="What is the hex code of color {color}?",
  7. )


2.基于组件创建 LLMChain 实例
我们要创建的链,基于提示词模版,提供基于颜色名字询问对应的16进制代码的能力。

  1. from langchain.chains import LLMChain
  2. chain = LLMChain(llm=llm, prompt=prompt)


3.基于链提问
现在我们利用创建的 LLMChain 实例提问。

注意:提问中我们只需要提供第一步中创建的提示词模版变量的值。
我们分别提问green,cyan,magento三种颜色的16进制代码。

  1. print(chain.run("green"))
  2. print(chain.run("cyan"))
  3. print(chain.run("magento"))

你应该期望如下输出:

LangChainHub


LangChainHub 收集并分享用于处理 LangChain 基本元素(提示词,链,和代理等)。
本讲,我们介绍 LangChainHub 中分享的链的使用。

Hello World链


代码仓库:https://github.com/hwchase17/langchain-hub/blob/master/chains/hello-world/
链定义:https://github.com/hwchase17/langchain-hub/blob/master/chains/hello-world/chain.json
定义的原始内容:

  1. {
  2. "memory": null,
  3. "verbose": false,
  4. "prompt": {
  5. "input_variables": [
  6. "topic"
  7. ],
  8. "output_parser": null,
  9. "template": "Tell me a joke about {topic}:",
  10. "template_format": "f-string",
  11. "_type": "prompt"
  12. },
  13. "llm": {
  14. "model_name": "text-davinci-003",
  15. "temperature": 0.9,
  16. "max_tokens": 256,
  17. "top_p": 1,
  18. "frequency_penalty": 0,
  19. "presence_penalty": 0,
  20. "n": 1,
  21. "best_of": 1,
  22. "request_timeout": null,
  23. "logit_bias": {},
  24. "_type": "openai"
  25. },
  26. "output_key": "text",
  27. "_type": "llm_chain"
  28. }


这条链,使用如下组件:
1.提示词模版 - 请求LLM回答一个 topic 参数指定的话题的笑话
2.LLM - OpenAI的 text-davince-003 模型(包括模型相关参数的设置)

从LangChainHub加载链


本课以链LLM-Math为例,介绍如何从 LangChainHub 加载链并使用它。
这是一个使用LLM和Python REPL来解决复杂数学问题的链。

加载


使用 load_chain 函数从hub加载。

  1. from langchain.chains import load_chain
  2. import os
  3. os.environ['OPENAI_API_KEY'] = "您的有效openai api key"
  4. chain = load_chain("lc://chains/llm-math/chain.json")

注:
1.OpenAI类允许通过参数 openai_api_key 指定API Key,也可以通过环境变量 OPENAI_API_KEY 自动加载。
在本例中,load_chain函数完成加载,OpenAI的实例化由框架完成,因此在这里我们用了环境变量来指定API Key。
2.load_chain 函数的参数是hub中分享的链的json定义。参数格式:lc://<链json文件在LangChainHub的相对路径>

提问


现在我们可以基于这个链提问。

  1. # 半径为2的圆的面积是多少?
  2. chain.run("whats the area of a circle with radius 2?")


你应该期望如下输出:

总结


本节课程中,我们学习了LangChain 提出的最重要的概念 - 链(Chain) ,介绍了如何使用链,并分享了如何利用开源社区的力量 - 从 LangChainHub 加载链,让LLM开发变得更加轻松。

相关文档资料链接


Python Langchain官方文档
LangChain Hub
五里墩茶社


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

LangChain 简单应用(学习笔记)

LangChain 简单应用(学习笔记)[TOC] Langchain 简介大型语言模型(LLM)正在成为一种具有变革性的技术,使开发人员能够构...

LangChain 模型(学习笔记)

LangChain 模型(学习笔记)[TOC] Langchain 模型简介Langchain所封装的模型分为两类:——大语言模型 (LLM)——聊天模型 (C...

LangChain 数据连接(学习笔记)

LangChain 数据连接(学习笔记)[TOC] 什么是数据连接?LLM应用往往需要用户特定的数据,而这些数据并不属于模型的训练集。L...

LangChain 提示词(学习笔记)

LangChain 提示词(学习笔记)[TOC] 什么是提示词?提示词(Prompt)是指向模型提供的输入。这个输入通常由多个元素构成。La...

LangChain 输出解析器(学习笔记)

LangChain 输出解析器(学习笔记)[TOC] 简介LLM的输出为文本,但在程序中除了显示文本,可能希望获得更结构化的数据。这就...

LangChain 记忆组件(学习笔记)

LangChain 记忆组件(学习笔记)[TOC] 单一的LLM对于简单的应用场景已经足够,但是更复杂的应用程序需要将LLM串联在一起,需...

LangChain 代理 Agent(学习笔记)

LangChain 代理 Agent(学习笔记)[TOC] 简介Agent 也就是代理,它的核心思想是利用一个语言模型来选择一系列要执行的动作。...

LangChain 回调 (Callback)

LangChain 回调 (Callback)[TOC] 简介Callback 是 LangChain 提供的回调机制,允许我们在 LLM 应用程序的各个阶段使用 Hoo...

LangChain 一个完整的例子

LangChain 一个完整的例子[TOC] 简介这是该 LangChain 极简入门系列的最后一讲。我们将利用过去9讲学习的知识,来完成一个...
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术