langchain RunableBranch 分类判断选择不同链

本文介绍了如何使用Python编程构建一个基于LangChain的模型,该模型可以对用户的问题进行分类(关于LangChain或其他),然后针对不同类别提供相应的详细回答或一般性答案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os
from dotenv import load_dotenv
from langchain_community.llms import Tongyi
load_dotenv('key.env')  # 指定加载 env 文件
key = os.getenv('DASHSCOPE_API_KEY')  # 获得指定环境变量
DASHSCOPE_API_KEY = os.environ["DASHSCOPE_API_KEY"]  # 获得指定环境变量
model = Tongyi(temperature=1)

from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnableBranch

# 构建分类判断链:识别用户的问题应该属于哪个(指定的)分类
chain = (
        PromptTemplate.from_template(
            """Given the user question below, classify it as either being about `LangChain` or `Other`.
    
    Do not respond with more than one word.
    
    <question>
    {question}
    </question>
    
    Classification:"""
        )
        | model
        | StrOutputParser()
)

# 构建内容问答链和默认应答链
langchain_chain = (
        PromptTemplate.from_template(
            """You are an expert in LangChain. Respond to the following question in one sentence:
    
    Question: {question}
    Answer:"""
        )
        | model
)
general_chain = (
        PromptTemplate.from_template(
            """Respond to the following question in one sentence:
    
    Question: {question}
    Answer:"""
        )
        | model
)

# 通过 RunnableBranch 构建条件分支并附加到主调用链上
branch = RunnableBranch(
    (lambda x: "langchain" in x["topic"].lower(), langchain_chain),
    general_chain,
)
full_chain = {"topic": chain, "question": lambda x: x["question"]} | branch

print(full_chain.invoke({"question": "什么是 LangChain?"}))
print(full_chain.invoke({"question": "1 + 2 = ?"}))

### LangChain库的功能分类及应用场景 LangChain 是一种专为开发基于大型语言模型 (LLM) 应用而设计的框架,其主要目标是简化开发者的工作流程并提升效率。以下是关于 LangChain 功能分类及其具体应用场景的详细介绍: #### 一、功能分类 1. **式操作支持** - LangChain 提供了一种称为“条”的机制,允许用户将多个 LLM 调用串联起来形成复杂的逻辑流[^1]。这种特性非常适合处理多阶段的任务,例如问答系统中的上下文理解与响应生成。 2. **索引创建能力** - 利用内置工具如 `VectorStoreIndexWrapper` 和 `VectorstoreIndexCreator` 类型的支持,可以高效地管理文档集合以及执行语义检索任务[^2]。这使得从大量非结构化数据源提取有用信息变得更为便捷。 3. **外部资源集成接口** - 支持多种数据库连接器以及其他第三方服务API接入点,从而增强了系统的互操作性和灵活性。通过这种方式,企业能够轻松扩展已有基础设施来适应新的AI需求。 4. **无模型训练选项** - 值得注意的是,尽管专注于利用预训练好的LLMs解决问题,但LangChain并不直接涉及任何具体的机器学习算法实现或者参数调整过程;相反,它推荐使用者借助像 Hugging Face 这样的平台来进行必要的定制化工作[^3]。 #### 二、典型应用场景 - **智能客服机器人**: 结合自然语言处理技术和实时对话历史记录分析,为企业客户提供全天候自动化咨询服务。 - **个性化教育辅助软件**: 根据学生的学习进度和个人偏好动态生成练习题目或讲解材料。 - **法律文件解析引擎**: 自动识别合同条款中的关键要素,并给出相应的风险评估建议。 - **医疗健康咨询平台**: 协助医生快速查阅最新研究成果的同时也为患者提供基础病症查询服务。 ```python from langchain.chains import LLMChain from langchain.prompts import PromptTemplate from langchain.llms import OpenAI llm = OpenAI(temperature=0.9) prompt_template = "What is a good name for a company that makes {product}?" prompt = PromptTemplate(input_variables=["product"], template=prompt_template) chain = LLMChain(llm=llm, prompt=prompt) print(chain.run(product="colorful socks")) ``` 上述代码片段展示了如何使用 LangChain 构建简单的命名生成器,体现了该库在实际项目中的易用性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值