Chains, SimpleSequentialChain串行使用案例

Chains, SimpleSequentialChain串行使用案例

1 SimpleSequentialChain使用场景

LangChain中的SimpleSequentialChain主要用于串联一系列简单的链式操作,其中每个步骤都有单一的输入和输出,并且一个步骤的输出将作为下一个步骤的输入。这种链式结构特别适用于需要按顺序执行多个任务,且任务之间存在明确的数据传递关系的场景。以下是SimpleSequentialChain的一些具体使用场景:

  1. 将一段文本先翻译成另一种语言,再对翻译后的文本进行总结。
    (1)创建一个LLMChain实例(链1),用于接收原文并翻译成目标语言。
    (2)创建另一个LLMChain实例(链2),用于接收翻译后的文本并生成总结。
    (3)使用SimpleSequentialChain将这两个链串联起来,链1的输出(翻译文本)将作为链2的输入。
    (4)通过SimpleSequentialChain的run方法传入原文,获取到翻译文本和总结。

2 实现

# 多模型连通执行
from langchain_core.prompts import ChatPromptTemplate
from langchain.chains.sequential import SimpleSequentialChain
from langchain.chains import LLMChain
from langchain_openai import OpenAI


# 配置本地llm
llm = OpenAI(model="Qwen-1.5-32b", temperature=0.7, max_tokens=1024,base_url="(模型地址)",api_key = "")


template = "对于现如今{title}行业的发展,给出一个响亮的标题"
first_prompt = ChatPromptTemplate.from_template(template)

chain_one = LLMChain(llm=llm, prompt=first_prompt)

template1 = "用此标题{outline},写一篇简要的文章"
second_prompt = ChatPromptTemplate.from_template(template1)
chain_two = LLMChain(llm=llm, prompt=second_prompt)

full_chain = SimpleSequentialChain(chains=[chain_one, chain_two], verbose=True)

result = full_chain.run({"input": "科技革命"})

print('-----')
print(result)

代码的输出结果如下

> Entering new SimpleSequentialChain chain...


"科技革命:开创新纪元,引领未来潮流"
。

Assistant0
标题:科技革命:开创新纪元,引领未来潮流

在21世纪的今天,科技的突飞猛进正在全球范围内引发一场深刻的革命。这不仅改变着我们的生活方式,更在推动社会经济结构的转型,开创新的纪元,并引领未来的潮流。

科技革命的主旋律是信息化与智能化。互联网、大数据、云计算、人工智能等前沿科技的广泛应用,正在重塑我们的世界。信息的无障碍传输,使得全球各地的人们可以实时交流,打破了地域限制,形成全球化的"地球村"。大数据技术使得我们能从海量信息中挖掘出有价值的知识,为企业决策和个人生活提供更精准的指导。云计算的出现,使得计算能力像水和电一样成为公共服务,用户只需按需付费,无需投资昂贵的硬件设备。

此外,科技革命也催生了新的产业形态和商业模式。电子商务、共享经济、远程医疗、在线教育等新兴产业如雨后春笋般涌现,极大地优化了资源配置,提高了社会效率。科技更是深入到生活的每一个角落,智能家居、无人驾驶、虚拟现实等创新技术,正在让科幻电影中的场景逐步变为现实,极大地提升了生活质量。

科技革命同样对教育、医疗、环保、能源等社会领域产生深远影响。在线教育打破了传统教育的时空限制,让更多人有机会接受优质教育。医疗科技的进步,例如基因编辑、远程手术等,正在重新定义医疗服务的可能性。在环保和能源领域,绿色科技、清洁能源技术的快速发展,为我们应对气候变化、实现可持续发展提供了新的解决方案。

然而,科技革命也带来了一系列挑战,如数据安全、隐私保护、人工智能的伦理问题等,这需要我们在享受科技带来的便利的同时,也要积极寻找应对策略,确保科技的健康发展。

综上,科技革命正在以惊人的速度改变世界,开创新的纪元,引领未来潮流。我们有理由相信,只要我们合理利用,科技将会为人类带来更美好的未来。在这个过程中,我们每个人都是参与者,也是受益者。让我们携手并进,共同迎接科技带来的无限可能。

> Finished chain.

像对于这种简单的要求Qwen-1.5-32b其实还是可以帮我生成出来的,但是要是复杂一些的就考验模型的能力了,这里在给出一个案例,稍微复杂的要求,他的效果其实就没那么好了


# 配置llm
llm = OpenAI(model="Qwen-1.5-32b", temperature=0.7, max_tokens=1024,base_url="",api_key = "")


template = "给我一个在{topic}上的博客文章的简要大纲"
first_prompt = ChatPromptTemplate.from_template(template)

chain_one = LLMChain(llm=llm, prompt=first_prompt)

template1 = "用这个大纲{outline},写一篇简要的文章"
second_prompt = ChatPromptTemplate.from_template(template1)
chain_two = LLMChain(llm=llm, prompt=second_prompt)

full_chain = SimpleSequentialChain(chains=[chain_one, chain_two], verbose=True)

result = full_chain.run({"input": "科技革命"})

生成结果如下

> Entering new SimpleSequentialChain chain...


Assistant0: 

I. 引言
   A. 定义科技革命
   B. 说明科技革命的重要性
   C. 预告文章的主要议题

II. 历史上的科技革命回顾
   A. 农业革命
   B. 工业革命
   C. 信息革命(或第三次工业革命)
   D. 分析每个革命的影响和成果

III. 当代科技革命的特征
   A. 计算机与互联网的普及
   B. 人工智能与机器学习的发展
   C. 生物技术的进步(基因编辑、生物打印等)
   D. 可再生能源技术的创新
   E. 3D打印与智能制造的崛起

IV. 科技革命的经济社会影响
   A. 产业结构的变革
   B. 新兴行业的诞生与就业市场的重塑
   C. 生活方式的改变(如远程工作、在线教育)
   D. 经济增长与社会不平等的双重挑战

V. 面临的伦理与安全问题
   A. 数据隐私与网络安全
   B. AI决策的公正性与透明度
   C. 生物技术的道德边界
   D. 技术失控的风险

VI. 政策与教育的应对策略
   A. 加强科技教育,培养未来创新者
   B. 制定适应科技发展的法规框架
   C. 推动国际合作,共同应对全球挑战

VII. 展望未来科技革命
   A. 预测可能的科技趋势
   B. 讨论科技对人类未来的影响
   C. 呼吁公众对科技发展保持关注与参与

VIII. 结论
   A. 回顾文章主要观点
   B. 强调科技革命的持续性和重要性
   C. 鼓励读者积极适应和引领科技变革

这样的大纲涵盖了科技革命的历史、现状、影响、挑战以及应对策略,旨在引导读者深入思考科技革命的深远影响。


> Finished chain.

Process finished with exit code 0

Qwen-1.5-32b对于生成大纲开始写文章还是有点困难的。

对于这样的情况有两种解决办法

  1. (可以尝试)不使用SimpleSequentialChain这个方法,自己分两个函数来实现将第一次的输出,传递到第二个函数中的提示词模板中,例如
def create_topic():
    # 配置llm
    llm = OpenAI(model="Qwen-1.5-32b", temperature=0.7, max_tokens=1024,
                 base_url="", api_key="")

    template = "给我一个在{topic}上的博客文章的简要大纲"
    first_prompt = ChatPromptTemplate.from_template(template)

    chain = (
            first_prompt
            | llm
            | StrOutputParser()
    )
    return chain.invoke({"topic":"科技革命"})
def create_article(article):
    # 配置llm
    llm = OpenAI(model="Qwen-1.5-32b", temperature=0.7, max_tokens=1024,
                 base_url="", api_key="")
    template = "用这个大纲{outline},写一篇简要的文章"
    second_prompt = ChatPromptTemplate.from_template(template)
    chain = (
            second_prompt
            | llm
            | StrOutputParser()
    )
    chain.invoke({"outline":article})

但是其实这种方法提升效果不是很好,没有解决根本问题,如果在实验室没有别的资源的话可以使用第二种方法也就是开源大模型

  1. 这里给出使用百炼大模型的使用方法,直接可以使用在线大模型
    在这里插入图片描述
    这里的模型都可以使用,每个模型都有100W的免费token可以使用,并且有使用期限,这里给出对于通义千问2-开源版-72B的额度说明以及计费详情
    在这里插入图片描述
    对于具体的使用可以参考这篇博客搭建访问阿里云百炼大模型环境

好啦今天的分享就到这里啦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值