LangChain——模型Model I/O:输入提示、调用模型、解析输出

langchain模型I/O:输入提示、调用模型、解析输出 模型,位于LangChain框架的最底层,它是基于语言模型构建的应用的,因为所谓LangChain应用开发,就是以LangChain作为框架,通过API调用大模型来解决具体问题的过程。可以说,整个LangChain框架的逻辑都是由LLM这个发动机来驱动的。没有模型,LangChain这个框架也就失去了它存在的意义。 阅读详情

在这里插入图片描述
任何语言模型应用的核心要素是…模型。LangChain为您提供了与任何语言模型进行接口的构建块。

  • Prompts提示:模板化,动态选择和管理模型输入
  • Chat models聊天模型:由语言模型支持,但接受聊天消息列表作为输入并返回聊天消息的模型
  • LLMs:接受文本字符串作为输入并返回文本字符串的模型
  • Output parsers输出解析器:从模型输出中提取信息

1. Model I/O 的template以及批量运用

这段代码演示了如何使用一个预定义的文案模板,结合OpenAI的GPT-3模型,为不同的水果和它们的价格生成吸引人的描述。以下是对代码的逐行注释和解释model_io_for_loop.py:

# 导入Langchain库中的OpenAI模块,该模块提供了与OpenAI语言模型交互的功能
from langchain.llms import OpenAI  

# 导入Langchain库中的PromptTemplate模块,用于创建和管理提示模板
from langchain.prompts import PromptTemplate  

# 导入Langchain库中的LLMChain模块,它允许构建基于大型语言模型的处理链
from langchain.chains import LLMChain  

# 导入dotenv库,用于从.env文件加载环境变量,这对于管理敏感数据如API密钥很有用
from dotenv import load_dotenv  

# 调用load_dotenv函数来加载.env文件中的环境变量
load_dotenv()  

# 定义一个文案模板,用于生成关于水果的描述。
# {price} 和 {fruit_name} 是占位符,稍后将被具体的价格和水果名称替换。
template = """您是一位专业的水果店文案撰写员。\n
对于售价为 {price} 元的 {fruit_name} ,您能提供一个吸引人的简短描述吗?
"""

# 使用PromptTemplate类的from_template方法创建一个基于上述模板的prompt对象。
# 这个对象可以用来格式化具体的水果名称和价格。
prompt = PromptTemplate.from_template(template)
print(prompt)

# 使用OpenAI类创建一个名为llm的实例。
# 这个实例配置了用于生成文本的模型参数:"text-davinci-003"是一个高级的GPT-3模型。
# temperature设置为0.5,用于控制生成文本的随机性和创造性。
# max_tokens设置为60,用于限制生成文本的最大长度。
llm = OpenAI(
    model="text-davinci-003",
    temperature=0.5,
    max_tokens=60
)

# 定义两个列表:fruits包含不同的水果名称,prices包含相应的价格。
fruits = ["葡萄", "草莓", "樱桃"]
prices = ["10", "20", "30"]

# 使用zip函数将fruits和prices中的元素配对,并在每一对元素上迭代。
for fruit, price in zip(fruits, prices):
    # 使用format方法和prompt模板生成具体的输入文本。
    # 这里将占位符替换为具体的水果名称和价格。
    input_prompt = prompt.format(price=price, fruit_name=fruit)
    # 使用llm实例生成文案描述。
    response = llm(input_prompt)
    # 打印生成的文案描述。
    print(response)

这里LLM也可以替换为别的,比如HuggingFaceHub

os.environ['HUGGINGFACEHUB_API_TOKEN'] = 'HUGGINGFACEHUB API Token'
# 导入LangChain中的OpenAI模型接口
from langchain import HuggingFaceHub
# 创建模型实例
llm= HuggingFaceHub(repo_id="google/flan-t5-large")

运行结果

zgpeaces-MBP at ~/Workspace/LLM/langchain-llm-app ±(feature/textAndChat) ✗ ❯ python model_io_for_loop.py
input_variables=['fruit_name', 'price'] template='您是一位专业的水果店文案撰写员。\n\n对于售价为 {price} 元的 {fruit_name} ,您能提供一个吸引人的简短描述吗?\n'

「精选葡萄,香甜多汁,仅 10 元,让你尝遍天下美味!」

草莓:甜美多汁,满口芬芳,令人回味无穷,20元即可

精选樱桃,甜蜜爽口,香甜可口,仅售30元!

2. Model I/O 输出解析

这段代码展示了如何使用Langchain库和OpenAI的GPT-3模型来生成关于水果的描述文案,并将生成的结果结构化存储在一个Pandas DataFrame中。下面是对代码的详细注释和解释:

# 导入Langchain库中的OpenAI模块,该模块提供了与OpenAI语言模型交互的功能
from langchain.llms import OpenAI  

# 导入Langchain库中的PromptTemplate模块,用于创建和管理提示模板
from langchain.prompts import PromptTemplate  

# 导入Langchain库中的LLMChain模块,它允许构建基于大型语言模型的处理链
from langchain.chains import LLMChain  

# 导入dotenv库,用于从.env文件加载环境变量,这对于管理敏感数据如API密钥很有用
from dotenv import load_dotenv  

# 调用load_dotenv函数来加载.env文件中的环境变量
load_dotenv()  

# 定义一个文案模板,用于生成关于水果的描述。
# {price} 和 {fruit_name} 是占位符,稍后将被具体的价格和水果名称替换。
# {format_instructions} 是用于结构化输出的指令。
template = """您是一位专业的水果店文案撰写员。
对于售价为 {price} 元的 {fruit_name} ,您能提供一个吸引人的简短描述吗?
{format_instructions}
"""

# 使用PromptTemplate类的from_template方法创建一个基于上述模板的prompt对象。
# 这个对象可以用来格式化具体的水果名称和价格。
prompt = PromptTemplate.from_template(template)
print(prompt)

# 使用OpenAI类创建一个名为llm的实例。
# 配置使用"text-davinci-003"模型,设置温度为0.5,最大令牌数为120。
llm = OpenAI(
    model="text-davinci-003",
    temperature=0.5,
    max_tokens=120
)

# 定义水果名称和对应价格的列表。
fruits = ["葡萄", "草莓", "樱桃"]
prices = ["10", "20", "30"]

# 导入Langchain库中的StructuredOutputParser和ResponseSchema,
# 用于解析和结构化AI模型的输出。
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)
format_instructions = output_parser.get_format_instructions()
prompt = PromptTemplate.from_template(template, partial_variables={"format_instructions": format_instructions})

# 创建一个Pandas DataFrame来存储结果。
import pandas as pd
df = pd.DataFrame(columns=["fruit", "price", "description", "reason"])

# 使用zip函数将水果名称和价格配对,并迭代每一对元素。
for fruit, price in zip(fruits, prices):
    # 使用format方法和prompt模板生成输入文本,替换占位符。
    input_prompt = prompt.format(price=price, fruit_name=fruit)
    # 使用llm实例生成文案描述。
    response = llm(input_prompt)
    # 解析输出并添加到DataFrame。
    parsed_output = output_parser.parse(response)
    parsed_output['fruit'] = fruit
    parsed_output['price'] = price
    df.loc[len(df)] = parsed_output

# 打印DataFrame的内容。
print(df.to_dict(orient="records"))

# 将DataFrame保存到CSV文件。
df.to_csv("fruits.csv", index=False)


运行结果

zgpeaces-MBP at ~/Workspace/LLM/langchain-llm-app ±(feature/textAndChat) ✗ ❯ python model_io_parser.py
input_variables=['format_instructions', 'fruit_name', 'price'] template='您是一位专业的水果店文案撰写员。\n对于售价为 {price} 元的 {fruit_name} ,您能提供一个吸引人的简短描述吗?\n{format_instructions}\n'
[{'fruit': '葡萄', 'price': '10', 'description': 'Enjoy the sweet and juicy goodness of our 10 yuan grapes. Perfect for snacking or for adding to your favorite recipes!', 'reason': 'This description is short and sweet, and emphasizes the affordability and versatility of the grapes, making them an attractive purchase.'}, {'fruit': '草莓', 'price': '20', 'description': 'Taste the sweet, juicy flavor of fresh-picked strawberries for just 20 yuan!', 'reason': 'This description emphasizes the deliciousness of the strawberries while also highlighting the affordable price.'}, {'fruit': '樱桃', 'price': '30', 'description': 'Taste the sweetness of these juicy and succulent cherries for only 30 yuan!', 'reason': 'This description is concise and emphasizes the sweetness of the cherries as well as the low price.'}]

在这里插入图片描述

在这里插入图片描述

​

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

img

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

LangChain之Models(模型)完整篇 # 示例完整地实现了输入、模型调用、输出结果全过程,在这里说明一下使用LangChain框架的好处:1、模板管理:在大型项目中,可能会有很多不同的提示模板,但LangChain能很好地管理这些模板,保持代码的清晰和整洁。**2、变量提取和检查:**LangChain也能自动提取模板中的变量并进行检查,确保你没有忘记填充任何变量。3、模型切换:可以使用不同的模型,只需要修改模型名称就可以了,无需修改代码。 阅读详情

相关推荐

LangChain --Model I/O 全解析 (大模型的 “输入输出管家“)

Model I/O 模块的核心价值是 “标准化” 和 “简化”—— 标准化大模型的输入输出流程,简化模型调用、提示词管理和结果解析的复杂度。无论是对接在线模型还是部署本地模型,无论是简单文本生成还是复杂结构化输出,Model I/O 都能提供一致的开发体验。掌握这一章的核心技能后,你可以轻松实现:多平台模型切换、动态提示词生成、结构化结果输出等基础功能,为后续构建复杂的大模型应用(如问答系统、聊天机器人)打下坚实基础。

爱喝可乐的老王的博客 767

LangChain 8 模型Model I/O:输入提示、调用模型、解析输出

LangChain系列文章任何语言模型应用的核心要素是…模型。LangChain为您提供了与任何语言模型进行接口的构建块。

AI架构师易筋 2452

AI大模型探索之路-应用篇2:Langchain框架ModelIO模块—数据交互的秘密武器

随着人工智能技术的不断进步,大模型的应用场景越来越广泛。LangChain框架作为一个创新的解决方案,专为处理大型语言模型的输入输出而设计。其中,Model IO(输入输出)模块扮演着至关重要的角色,负责构建和管理数据交互的通道。本文将深入剖析ModelIO模块的工作原理、功能特性,以及如何通过该模块提升数据处理效率,进而加速AI大模型应用的开发。

寻道AI,探索AI无限可能! 2266

NLP(五十七)LangChain的结构化输出

本文主要介绍了LangChain的结构化输出,这在我们需要对模型输出结果进行结构化解析时较为有用,同时,我们也能接住结构化输出完成一些常见的NLP的任务,如NER等。

山阴少年 5827

langchain-ChatGLM源码阅读:模型加载

:在这一部分代码中,通过调用 get_balanced_memory 函数来获取一个适当的内存分配方案,执行完后每个卡都会产生少量的显存占用。作用:将配置对象的类与模型类或对象建立关联,以便根据配置来获取相应的模型类或对象。作用:遍历权重文件分片,逐一加载这些分片,但会跳过那些只包含磁盘上载权重的分片文件,显示加载的进度条,也就是下面这个东西,但此时模型权重还没有加载到显存中。包路径:site-packages/transformers/models/auto/auto_factory.py。

羊城迷鹿的博客 2075

AGI大模型(28):LangChain提示模板

可以把对模型的使用过程拆解成三块: 输入提示(Format)、调用模型(Predict)、输出解析(Parse)提示模板: LangChain的模板允许动态选择输入,根据实际需求调整输入内容,适用于各种特定任务和应用。语言模型: LangChain 提供通用接口调用不同类型的语言模型,提升了灵活性和使用便利性。输出解析: 利用 LangChain 的输出解析功能,精准提取模型输出中所需信息,避免处理冗余数据,同时将非结构化文本转换为可处理的结构化数据,提高信息处理效率。

u013938578的博客 398

大模型 LangChain入门开发教程(一):Model I/O

大模型 LangChain入门开发教程(一):Model I/O

DEVELOPERAA的博客 1560

别再只盯着YOLOv8了!手把手带你用PaddleDetection的PP-YOLOE+搞定你的第一个检测项目

本文介绍了PP-YOLOE+在目标检测领域的优势与应用实践,对比YOLOv8展示其在精度、速度和部署便利性上的突破。通过详细的代码示例和实战教程,帮助开发者快速上手PaddleDetection工具链,实现产业级目标检测项目,提升开发效率。

weixin_42701915的博客 185

3、LangChain —— 模型I/O,输入提示、模型调用、解析输出

从这节课开始,我们将对 LangChain 中的六大核心组件一一进行详细的剖析。Model 模型,位于 LangChain 框架的最底层,它是基于语言模型构建的应用的核心元素,因为所谓 LangChain 应用开发,就是以 LangChain 作为框架,通过 API 调用大模型来解决具体问题的过程。

cheese_burger_的博客 1131

SQL-拼多多 面试题:连续3次为球队得分的球员名单

1.使用LAG开窗函数 筛选出 下一次和下下一次得分,并用进球时间进行排序。2.使用where筛选出值得嘉奖的球员。

Ftr1998的博客 643

TK抓包协议分析:So层逆向

第三个参数是一个回调函数,这里他的返回值1表示成功,0表示失败,那我们手动把他Hook为0,让他不支持quic协议,实现降级。等,我们是为了解决抓包问题,那很有可能是在net目录下(network),那来搜索一下。开了抓包以后APP直接是网络无连接了,并且抓到的请求也是不正常的,下面我们就开始定位。看了半天感觉也没啥有用的东西,那下面我们整理一下已经有信息,来猜测一下,后续怎么进行。那可以猜测,我们真正需要Hook的那个函数也有可能是这样加载的,可以字符串搜索一下。

2503_90751938的博客 3419

[极客时间]LangChain 实战课 -----|模型I/O:输入提示、调用模型、解析输出(04)

从这节课开始,我们将对 LangChain 中的六大核心组件一一进行详细的剖析。模型,位于 LangChain 框架的最底层,它是基于语言模型构建的应用的核心元素,因为所谓 LangChain 应用开发,就是以 LangChain 作为框架,通过 API 调用大模型来解决具体问题的过程。可以说,整个 LangChain 框架的逻辑都是由 LLM 这个发动机来驱动的。没有模型,LangChain 这个框架也就失去了它存在的意义。

qq_34446716的博客 316

Windows版MySQL8.4.2LTS解压直用(下载免安装-绿色-项目打包直接使用-含卸载)

安装前运行微软常用运行库全集(也可能称为依赖)关于MySQL8中相关参数配置,可通过。选择8.5.2LTS长期服务版。选中密码,右键会直接复制。

xzzteach的博客 1440

LangChain之各类提示模板的使用

语言模型的提示是用户提供的一组指令或输入,用于指导模型的响应,帮助模型理解上下文并生成相关且连贯的基于语言的输出,例如回答问题、完成句子或参与某项活动、对话。“提示”指的是模型的输入,这个输入很少是硬编码的,而是通常从多个组件构建而成的,恰哈提示模板就是负责构建这个输入的。1.清晰易懂的提示: 提高提示文本的可读性,使其更易于理解,尤其是在处理复杂或涉及多个变量的情况下。2.增强可重用性: 使用模板,可以在多个地方重复使用,简化代码,无需重复构建提示字符串。

2401_84494441的博客 888

10、高阶ΣΔ调制器设计与优化

本文深入探讨了高阶ΣΔ调制器的设计与优化技术,重点介绍了NTF零点优化方法,通过分散单位圆上的零点分布提升信噪失真比(SQNR)。文章分析了量化噪声耦合技术如何有效提高噪声整形阶数,并对比了CIFB、CIFF、CRFB和CRFF等不同架构的性能特点。同时,详细阐述了基于稳定性与性能权衡的设计流程,结合Schreier的Delta-Sigma Toolbox实现NTF综合与仿真验证。内容涵盖从理论推导到实际设计步骤,为高阶ΣΔ调制器的稳定性提升与性能优化提供了系统性指导。

tgb345678的博客 134

SAP 采购申请、采购订单的审批策略

采购申请、采购订单的审批策略 采购申请审批 PR审批可以分为:含分类、无分类 1、无分类PR审批: A、后台配置: 设置批准代码(批准代码可以设置多级审批): 发布批准标识使用系统已有的 “2 询价/采购订单”: 新建采购申请审批策略Z1(仅设置1级审批,一共可以设置8级审......

willieyuan的博客 2万+

LangChain之Models(模型)

模型,,因为所谓LangChain应用开发,就是。而。没有模型,LangChain这个框架也就失去了它存在的意义。

xiekj的博客 708

AgentScope 2.0 扩展开发完全指南:从中间件到模型适配器的深度实践

本文系统讲解 AgentScope 2.0 框架的五大扩展机制,涵盖中间件系统的洋葱模型与钩子设计、ChatModelBase 基类与多供应商适配器开发、工作空间(本地/Docker/E2B)的抽象接口与生命周期管理、凭据工厂与 MCP 协议集成、以及工具协议与存储后端扩展。文中提供完整的架构图、代码示例与故障排查指南,帮助开发者快速掌握 AgentScope 的插件化扩展体系。

program哲学 296

Agent从零搭建看这一篇就够了-LangChain,Model I/O从入门到实操

本质:2022 年 10 月由 Harrison Chase 发起的开源框架,用于开发 LLM 驱动的 AI 应用。命名逻辑:Lang(语言,即 LLM)+ Chain(链,串联 LLM 与外部数据 / 组件)。核心场景:Agent、问答系统(QA)、对话机器人、文档搜索系统等。核心优势:简化 LLM 应用开发流程,统一调用规范,降低学习和迁移成本。基础层:明确 LangChain 的定位(LLM 应用开发框架)、核心价值(简化开发、统一调用)。

实战怎么玩,你就怎么学 1264

MATLAB算法实战应用案例精讲-【数模应用】装箱问题

装箱问题可以根据不同的维度进行分类。以下是一些常见的装箱问题二维装箱问题:二维装箱问题假设所有物品都是平面上的矩形,并且需要将它们放入平面上的容器中。这个问题的目标是找到一种装箱方案,使得物品不重叠并占据的总面积最小。三维装箱问题:三维装箱问题考虑到物品可以具有高度,并且需要将它们放入三维容器(如箱子或货柜)中。目标是找到一种装箱方案,使得物品不重叠且总体积最小。多维装箱问题:多维装箱问题是指在更高维度空间中进行装箱的问题。除了长度和宽度之外,物品可能具有其他属性,如高度、重量、形状等。

qq_36130719的博客 1572

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LangChain 入门系列②:核心组件之 Model IO 快速入门指南

Model I/O 模块是与语言模型(LLMs)进行交互的核心组件,在整个框架中有着很重要的地位。

2401_82469710的博客 1365

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LangChain python 版本 第一集

langchain 学记录

qq_35484495的博客 472

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【深入 LangChain 的 Model I/O】提示设计、模型调用与输出解析全解析

阶段作用提示模板构造输入给模型的内容,支持变量插入、格式统一等模型调用使用通用接口调用各种 LLM(OpenAI、Qwen、Claude 等)输出解析将模型的非结构化输出解析为结构化、可用的程序化格式这三个环节各自独立、可组合,也可以统一组成一个强大的“提示-执行-解析”流水线。动态插入变量:根据用户输入自动填充提示内容;提升可读性:统一格式,逻辑清晰;支持复用与维护:更改模板内容不会影响整个应用逻辑。

qq_62223405的博客 1200

AI大模型之旅——LangChain基础组件

封装好的基础聊天模型和其他组件。LangChain集成包,目前LangChain会将一些重要的集成包单独拆分出来(例如langchain-openai , langchain-anthropic 等),让集成包更轻量级,这些包将会由LangChain团队和集成包的开发者共同维护。构成AI应用的链、AI agent和检索器。社区维护的第三方集成包。⽐如:Model I/O、Retrieval、Tool & Toolkit;合作伙伴包 langchain-openai,langchainanthropic等。

m0_37635053的博客 733

LangChain-模型输入输出 (Model I/O)

连接各种语言模型:统一不同提供商的模型接口格式化输入:将原始输入转换为模型可理解的格式处理输出:解析和格式化模型的输出内容这些组件构成了LangChain应用程序的基础,是构建各种AI应用的起点。模型输入输出组件是LangChain的基础构建块,它们提供与语言模型交互的标准接口。连接各种大语言模型动态构建提示解析和结构化输出处理多轮对话实现高级功能如流式处理、函数调用等正确使用这些组件是构建高效且可靠的LLM应用的关键。根据不同的应用场景,组合使用这些组件,可以满足各种复杂需求。

1.大规模企业集群服务开发和服务架构设计,性能优化等经验。 2.企业级数据仓库0-1落地经验。 1510

【AI】LangChain Model I/O解析:从模型调用到输出解析

怎么把需求告诉模型、怎么拿到模型的回复、怎么把回复变成程序能用的数据——这些问题,Model I/O 都帮你解决了。

weixin_63434398的博客 1561
上一篇: LangChain——通过Memory记住历史对话的内容
下一篇: 翻译|解开LLMs的神秘面纱:他们怎么能做没有受过训练的事情?
AI程序猿人
博客等级 码龄3年 6517粉丝 561原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值