LangChain框架的输入输出

LangChain框架的输入输出(I/O)流程是一个标准化的数据处理管道,主要由提示、语言模型和输出解析器三个核心组件构成,它们协同工作实现与语言模型的交互。

8.2.1  提示

提示(Prompt)是向语言模型提供的输入文本,用于引导模型生成特定类型的回答。LangChain提供了多种提示模板,让你可以动态地构建提示。提示的关键特性包括模板化和多类型支持。

(1)模板化:使用PromptTemplate将用户输入(如变量)动态嵌入预定义的文本模板(如“解释{term}的概念”)。

(2)多类型支持:包括少量示例提示(FewShotPromptTemplate)和对话提示(ChatPromptTemplate)等。

【示例8.1】提示。

from langchain.prompts import PromptTemplate

# 创建一个提示模板

prompt = PromptTemplate(

    input_variables=["topic"],

    template="请简要解释一下{topic}的基本概念。"

)

# 格式化提示

formatted_prompt = prompt.format(topic="量子计算")

print(formatted_prompt)  # 输出: "请简要解释一下量子计算的基本概念。"

输出:

请简要解释一下量子计算的基本概念。

8.2.2  语言模型

LangChain支持多种语言模型(Language Model),包括OpenAI、Hugging Face等。你可以直接调用这些模型来处理提示并生成回答。语言模型接收提示并生成文本输出,主要分为大语言模型(LLM)和聊天模型(Chat Model)。

(1)大语言模型:如OpenAI的text-davinci-003,生成非结构化文本。

(2)聊天模型:如GPT-3.5-Turbo,专为多轮对话设计,输入/输出为结构化消息(HumanMessage、AIMessage)。

【示例8.2】语言模型Qwen+LangChain。

from modelscope import AutoModelForCausalLM, AutoTokenizer

from langchain.prompts import PromptTemplate

import os

# 设置镜像和缓存路径

#os.environ['MODELSCOPE_CACHE'] = './model_cache' #直接使用示例2.1下载的模型Qwen3-1.7B

os.environ['MODELSCOPE_MIRROR'] = 'https://www.modelscope.cn'

# 创建提示模板

prompt = PromptTemplate(

    input_variables=["topic"],

    template="请简要解释一下{topic}的基本概念。"

)

formatted_prompt = prompt.format(topic="量子计算")

print(formatted_prompt)

try:

    # 尝试初始化模型

    model_id = "qwen/Qwen3-1.7B"

    tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)

    model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", trust_remote_code=True)

    # 生成回答

    inputs = tokenizer(formatted_prompt, return_tensors="pt").to("cuda")

    outputs = model.generate(**inputs, max_new_tokens=200)

    response = tokenizer.decode(outputs[0], skip_special_tokens=True)

    print(response)

except Exception as e:

    print(f"加载模型时出错: {e}")

    print("请检查网络连接或尝试使用离线模式")

输出:

请简要解释一下量子计算的基本概念。

量子计算是一种基于量子力学原理进行信息处理的计算方式。与传统计算机使用二进制位(01)不同,量子计算使用量子比特(qubit),它可以处于01的叠加态,并且多个量子比特之间可以形成纠缠关系。这使得量子计算机在解决某些特定问题(如大数分解、数据库搜索、量子模拟等)时,能够展现出远超传统计算机的计算能力,有望在密码学、材料科学、人工智能等领域带来革命性突破。

8.2.3  输出解析器

输出解析器(Output Parser)用于处理语言模型的输出,将其转换为结构化的数据(如JSON、列表等)。因此,它在需要特定格式回答的场景中特别有用。输出解析器的常用类型包括:

(1)结构化解析器:强制输出为指定格式(如PydanticOutputParser)。

(2)列表解析器:拆分逗号分隔的字符串为列表(CommaSeparatedListOutputParser)。

(3)重试解析器:自动修复格式错误的输出。

【示例8.3】输出解析器。

from langchain.output_parsers import CommaSeparatedListOutputParser

# 初始化输出解析器

output_parser = CommaSeparatedListOutputParser()

# 假设模型输出是一个逗号分隔的列表

model_output = "人工智能,机器学习,深度学习"

# 解析输出

parsed_output = output_parser.parse(model_output)

print(parsed_output)  # 输出: ['人工智能', '机器学习', '深度学习']

输出:

['人工智能', '机器学习', '深度学习']

### LangChain Framework vs OpenWebUI Framework #### 特点与区别 LangChain框架由多个核心组件构成,包括Components组件、User Input Component用户输入组件、Language Model Component语言模型组件以及Output Formatter Component输出格式化程序组件和Chains链[^3]。这些特性使得LangChain非常适合处理复杂的自然语言理解和生成任务。 OpenWebUI是一个专注于构建现代化Web界面的应用开发工具包。它利用了Flutter的小部件体系结构来创建响应式的用户界面[^1]。这意味着开发者可以轻松设计出既美观又高效的前端应用,而无需担心底层渲染逻辑的变化影响到整体性能表现。 #### 应用场景 对于需要强大文本分析能力的企业级项目来说,LangChain无疑是更好的选择。通过集成先进的AI算法和技术栈,能够实现诸如聊天机器人、智能客服等功能模块;同时支持自定义扩展接口以便接入第三方服务或内部系统数据源。 相比之下,当目标是快速搭建具有交互性的网站或是移动应用程序时,则更推荐采用OpenWebUI作为主要的技术方案之一。由于其基于React的设计理念,在面对频繁更新的状态变化情况下仍能保持高效稳定的运行状态,并且易于维护和发展壮大现有产品线。 ```python # 示例代码展示如何使用LangChain中的chains功能 from langchain import Chains conversation_chain = Chains() conversation_chain.add_message("你好啊") response = conversation_chain.generate_reply() print(response) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值