08|链(上):写一篇完美鲜花推文?用SequencialChain链接不同的组件
什么是 Chain
- 深入了解
- 翻译
- 解释
- 总结
LangChain中的文章介绍了如何使用SequentialChain和LLMChain来创建一个完美的鲜花推文。文章首先解释了Chain的概念,然后详细介绍了LLMChain的基本用法,包括直接调用、run方法、predict方法、apply方法和generate方法。接着,文章引入了SequentialChain,展示了如何将多个LLMChain串联起来,形成一个顺序链,以实现一个完整的任务流程。最后,文章提供了示例代码,演示了如何使用SequentialChain来生成鲜花的知识性介绍、评论和运营文案。整篇文章结构清晰,通过具体的示例代码帮助读者理解了LangChain中链的使用方法。LangChain为读者提供了好用的“链”,帮助将多个组件连接起来,还介绍了其他类型的链,如RouterChain。读者可以根据开发需求选择不同的链,同时还提供了思考题,引导读者进一步学习和尝试使用LangChain中的链。
《LangChain 实战课》,新⼈⾸单¥59
全部留言(9)
- 最新
- 精选
- 在路上Chain有三个能力,有状态,可观测,可组合。 有状态:Chain类定义了memory: Optional[BaseMemory]成员变量,记录了chain执行过程的状态。调用chain._call(inputs)可得到输出对象outputs,之后会调用chain.prep_outputs(inputs, outputs)加输入和输出对象成对放入memory对象。 可观测:Chain类定义了callbacks: Callbacks成员变量,在chain执行过程中回调on_xxx()方法。 可组合:比如SequentialChain类定义了chains: List[Chain]成员变量,会遍历chains列表调用,将初始输入inputs和已调用的chain的outputs合并到一个字典,作为当前chain的inputs,具体可阅读SequentialChain._call()。
作者回复: 非常棒的思考!!! 也总结的很精辟! Memory - 让对话拥有了状态 SequentialChain - 可以组合一系列的链 Callback - 提供了回调机制,可以生成Log
2023-09-21归属地:广东3 - Nikola上面的例子是不是也可以用思维链来实现?这样可以只调用一次模型。 思维链和langChain的chain组件的使用场景上有区别?
作者回复: 当然可以通过思维链实现。不管黑猫白猫,能够激发LLM的思考,让LLM完成你的需求就是好猫。
2023-10-03归属地:上海2 - 悟尘from langchain import PromptTemplate, OpenAI, LLMChain 这行代码,为什么会有warning呢? 换成下面的import后,就没有告警了 from langchain.prompts import PromptTemplate from langchain.llms import OpenAI from langchain.chains import LLMChain
作者回复: 因为LangChain觉得以后它不想从根目录直接支持内部模块的导入了!
2023-11-09归属地:北京2 - 一面湖水为什么生成的文案不完整呢?看起来是被截断了。
作者回复: 具体是哪个程序啊?有没有具体代码?有几个可能的原因: 1. 生成的文本超过了字符限制,被强制截断。可以尝试增加字符限制。max_tokens --- 这个是OpenAI API最大Token数限制的参数。 2. 或者是输出解析器配置错误,截断了内容。可以检查输出解析器的实现。 3. 可以在提示语里面要求模型说话简短一点点。
2023-10-17归属地:四川 - 在路上# -*- coding: utf-8 -*- import os # 设置网络代理 os.environ["http_proxy"] = "http://127.0.0.1:7890" os.environ["https_proxy"] = "http://127.0.0.1:7890" # 通过.env管理api_token from dotenv import load_dotenv load_dotenv() from langchain.llms import OpenAI from langchain.chains import LLMChain from langchain.prompts import PromptTemplate llm = OpenAI(temperature=.7, verbose=True) # 导入结构化输出解析器和ResponseSchema from langchain.output_parsers import StructuredOutputParser, ResponseSchema # 定义我们想要接收的响应模式 response_schemas = [ ResponseSchema(name="description", description="鲜花的描述文案"), ResponseSchema(name="reason", description="问什么要这样写这个文案") ] # 创建输出解析器 output_parser = StructuredOutputParser.from_response_schemas(response_schemas) print(output_parser.get_format_instructions()) # 创建原始提示模板 prompt_template = """ 您是一位专业的鲜花店文案撰写员。 对于售价为 {price} 元的 {flower} ,您能提供一个吸引人的简短描述吗? 输出格式: {format_instructions} """ prompt = PromptTemplate( template=prompt_template, input_variables=["flower", "price"], partial_variables={"format_instructions": output_parser.get_format_instructions()}, output_parser=output_parser) chain = LLMChain(llm=llm, prompt=prompt) # 数据准备 flowers = ["玫瑰", "百合", "康乃馨"] prices = ["50", "30", "20"] for flower, price in zip(flowers, prices): result = chain.run({ "flower": flower, "price": price }) print(result)
作者回复: 🈵
2023-09-21归属地:广东 - 赤色闪电老师,您好!在文中构造顺序链的过程中,chains=[introduction_chain, review_chain, social_post_chain]中的social_post_chain是从哪里定义的?
作者回复: 好的,同学。谢谢你提出的问题,目前代码中,经过了三轮LLM的构建,social_post_chain也已经构建出来了。最后的顺序链把它们串在一起输出。
2023-09-21归属地:北京2 - .。。。老师,您好!学习了langchain后,实现了咱们课程中讲的case,但是有个疑问请假下,通过langchain框架调用的模型,如何对正在运行的模型进行停止呢?
作者回复: 当你得到了模型的返回结果之后,模型就自动停止了,这好像SaaS一样。模型给你提供的是云端服务。本地模型也是一样。随着你的调用结束,模型就不再一直倾听你了,因此,模型自己没有Memory!它不是一个一直侦听响应的进程,没有状态。这就是为什么,我们在应用程序设计的时候,要增加Memory这个内容,你可以把Memory视为记忆或者内存。 对于模型调用来说,它在乎的是你一次Pass给他多少个Token,以及你一分钟调用它多少次。太多Token不行,过多次也不行。
2023-09-21归属地:陕西 - 冬青今日加更,快冲快冲!!!2023-09-21归属地:北京2
- 黎楚萱为什么我的result会把所有的prompt都拼接在一起?有谁遇到同样的情况吗 我的输出是这样的: introduction:\n你是一个植物学家,给定花的名称和类型,你需要为这种花写一个100字左右的介绍。\n花名:玫瑰\n颜色:red\n植物学家:这是关于上述花的介绍:\n玫瑰是一种美丽的花卉,通常被种植在花园或庭院中。它们通常有红色的花朵,通常有五到六片花瓣。玫瑰花的花瓣通常有五到六片,它们通常有红色的花粉,这使得它们成为一种非常受欢迎的花卉。玫瑰花通常需要充足的阳光和水分,以保持其健康和美丽。 review:\n你是一个鲜花评论家,给定一种花的介绍,你需要为这种花写一个200字左右的评论。\n鲜花介绍:\n\n你是一个植物学家,给定花的名称和类型,你需要为这种花写一个100字左右的介绍。\n花名:玫瑰\n颜色:red\n植物学家:这是关于上述花的介绍:\n玫瑰是一种美丽的花卉,通常被种植在花园或庭院中。它们通常有红色的花朵,通常有五到六片花瓣。玫瑰花的花瓣通常有五到六片,它们通常有红色的花粉,这使得它们成为一种非常受欢迎的花卉。玫瑰花通常需要充足的阳光和水分,以保持其健康和美丽。\n花评人对上述花的评论:\n玫瑰是一种非常美丽的花卉,它们通常有红色的花朵,通常有五到六片花瓣。玫瑰花的花瓣通常有五到六片,它们通常有红色的花粉,这使得它们成为一种非常受欢迎的花卉。玫瑰花通常需要充足的阳光和水分,以保持其健康和美丽。 ...2024-03-07归属地:泰国