langchain 4大组件 | AI应用开发

在人工智能的浪潮中,大型语言模型(LLM)逐渐成为推动科技进步的重要力量。而LangChain,作为一个专为LLM应用开发设计的框架,凭借其模块化和高效性,受到了广泛关注。本文将深入浅出地讲解LangChain中的四个基础组件:PromptTemplate、LLMs、Chain和OutputParser,帮助入门者快速上手。

一、PromptTemplate

PromptTemplate是LangChain中用于生成提示(Prompt)的可重复方式。它包含一个文本字符串模板,可以接受来自最终用户的一组参数并生成提示。这极大地简化了针对不同情况同类型问题的Prompt设计。

示例1:使用PromptTemplate

from langchain_core.prompts import PromptTemplate  template = "您是新公司的命名顾问。生产{product}的公司起什么好名字?"  
prompt_template = PromptTemplate.from_template(template)  
prompt = prompt_template.format(product="彩色袜子")  
print(prompt)  # 输出: 您是新公司的命名顾问。一家生产彩色袜子的公司起什么名字好呢?  

示例2:使用FewShotPromptTemplate

FewShotPromptTemplate是在PromptTemplate基础上,增加了few-shot examples,帮助语言模型生成更好的响应。

from langchain_core.prompts import PromptTemplate, FewShotPromptTemplate  # 创建few-shot examples  
examples = [  {"word": "happy", "antonym": "sad"},  {"word": "tall", "antonym": "short"},  
]  # 定义模板  
example_formatter_template = "Word: {word} Antonym: {antonym}\n"  
example_prompt = PromptTemplate(input_variables=["word", "antonym"], template=example_formatter_template)  # 创建FewShotPromptTemplate  
few_shot_prompt_template = FewShotPromptTemplate(prompt_template=example_prompt, examples=examples)  
formatted_prompt = few_shot_prompt_template.format(word="big", antonym="small")  
print(formatted_prompt)  
# 输出:  
# Word: happy Antonym: sad  
# Word: tall Antonym: short  
# Word: big Antonym: small  

二、LLMs

LLMs(Large Language Models)是LangChain的核心组件之一。LangChain提供了一个标准接口来调用不同的LLM,例如OpenAI的GPT系列。

示例:LLM

from langchain.chat_models import ChatOpenAI  # 初始化ChatOpenAI模型  
model = ChatOpenAI(model="gpt-3.5-turbo", openai_api_key="你的API_KEY", openai_api_base="你的API_BASE")  # 发送请求  
response = model.invoke([{"content": "Translate this sentence from English to French: I love programming."}])  
print(response)  

更完整的例子

from langchain_community.chat_models import ChatOpenAI  
from langchain.prompts import PromptTemplate  
from langchain.chains import LLMChain  
import os  # 设置OpenAI API密钥  
os.environ["OPENAI_API_KEY"] = 'your_openai_api_key'  # 创建PromptTemplate  
prompt_template = PromptTemplate.from_template("请写一篇关于{topic}的文章")  # 创建LLMChain,并指定使用的LLM和PromptTemplate  
llm = ChatOpenAI(model_name='gpt-3.5-turbo', temperature=0.7)  
chain = LLMChain(llm=llm, prompt=prompt_template)  # 使用LLMChain生成文章  
generated_text = chain.run(input_data={"topic": "人工智能的未来"})  
print(generated_text)  

三、Chain

Chain在LangChain中代表一系列按顺序执行的任务或操作。这些任务通常涉及与语言模型的交互,可以看作处理输入、执行一系列决策和操作,最终产生输出的流程。。Chain可以嵌套和组合,以构建复杂的流程

示例1:简单顺序链(SimpleSequentialChain)

简单顺序链适用于顺序执行的任务,即上一条链的输出自动作为下一条链的输入。

from langchain.chains import SimpleSequentialChain, LLMChain  
from langchain.prompts import ChatPromptTemplate  
from langchain_community.chat_models import ChatOpenAI  # 创建两个LLMChain  
prompt_1 = ChatPromptTemplate.from_template("请描述一个{product}的特点")  
chain_1 = LLMChain(llm=ChatOpenAI(model_name='gpt-3.5-turbo'), prompt=prompt_1)  prompt_2 = ChatPromptTemplate.from_template("根据上述特点,为{product}写一个广告词")  
chain_2 = LLMChain(llm=ChatOpenAI(model_name='gpt-3.5-turbo'), prompt=prompt_2)  # 创建SimpleSequentialChain  
chain_ss = SimpleSequentialChain(chains=[chain_1, chain_2], verbose=True)  # 使用SimpleSequentialChain  
output = chain_ss.run(input_data={"product": "智能手机"})  
print(output)  

示例2:一般顺序链(SequentialChain)

from langchain.chains import SequentialChain, LLMChain  
from langchain.prompts import ChatPromptTemplate  
from langchain_community.chat_models import ChatOpenAI  # 创建多个LLMChain,并指定输出变量名  
prompt_1 = ChatPromptTemplate.from_template("请将以下评论翻译成中文:\n\n{Review}")  
chain_1 = LLMChain(llm=ChatOpenAI(model_name='gpt-3.5-turbo'), prompt=prompt_1, output_key='中文_评论')  prompt_2 = ChatPromptTemplate.from_template("请用一句话总结这篇中文评论:\n\n{中文_评论}")  
chain_2 = LLMChain(llm=ChatOpenAI(model_name='gpt-3.5-turbo'), prompt=prompt_2, output_key='中文_总结')  # 创建SequentialChain,并指定输入和输出变量  
chain_seq = SequentialChain(chains=[chain_1, chain_2], input_variables=['Review'], output_variables=['中文_评论', '中文_总结'])  # 使用SequentialChain  
review = "This is a great product!"  
output = chain_seq.run(input_data={"Review": review})  
print(output)  

一般顺序链用于处理稍微复杂一些的情况,即可能有多个输入及输出。

示例3:使用|构建Chain

LangChain提供了多种方式将Chain组合起来,其中使用管道符|是一种既方便书写又表达力强劲的方式。

from langchain_openai import ChatOpenAI  
from langchain_core.output_parsers import StrOutputParser  
from langchain_core.prompts import ChatPromptTemplate  model = ChatOpenAI(model="gpt-4o-mini")  
prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}")  
chain = prompt | model | StrOutputParser()  
chain.invoke({"topic": "bears"})  

四、OutputParser

在LangChain中,OutputParser用于解析LLM或其他组件生成的输出。OutputParser可以根据应用需求进行自定义,以提取有用的信息或进行进一步的处理。

示例1:使用CommaSeparatedListOutputParser

from langchain.output_parsers import CommaSeparatedListOutputParser  
from langchain.prompts import ChatPromptTemplate  
from langchain_openai import ChatOpenAI  # 定义Prompt  
prompt = ChatPromptTemplate.from_messages([  ("system", "{parser_instructions}"),  ("human", "列出{cityName}的{viewPointNum}个著名景点。")  
])  # 初始化OutputParser  
output_parser = CommaSeparatedListOutputParser()  
parser_instructions = output_parser.get_format_instructions()  # 生成最终Prompt并执行  
final_prompt = prompt.invoke({"cityName": "南京", "viewPointNum": 3, "parser_instructions": parser_instructions})  
model = ChatOpenAI(model="gpt-3.5-turbo", openai_api_key="你的API_KEY", openai_api_base="你的API_BASE")  
response = model.invoke(final_prompt)  
parsed_output = output_parser.invoke(response)  
print(parsed_output)  # 输出格式化的景点列表  

示例2:使用PydanticOutputParser

from langchain.output_parsers import PydanticOutputParser  
from langchain.prompts import ChatPromptTemplate  
from langchain_openai import ChatOpenAI  
from pydantic import BaseModel, Field  # 定义数据结构类  
class BookInfo(BaseModel):  book_name: str = Field(description="书籍的名字")  author_name: str = Field(description="书籍的作者")  genres: list = Field(description="书籍的体裁")  # 初始化OutputParser  
output_parser = PydanticOutputParser(pydantic_object=BookInfo)  
parser_instructions = output_parser.get_format_instructions()  # 定义Prompt并执行  
prompt = ChatPromptTemplate.from_messages([  ("system", "{parser_instructions} 你输出的结果请使用中文。"),  ("human", "请你帮我从书籍的概述中,提取书名、作者,以及书籍的体裁。书籍概述如下:#{book_introduction}#")  
])  
book_introduction = "《朝花夕拾》原名《旧事重提》..."  # 书籍概述内容  
final_prompt = prompt.invoke({"book_introduction": book_introduction, "parser_instructions": parser_instructions})  
model = ChatOpenAI(model="gpt-3.5-turbo", openai_api_key="你的API_KEY", openai_api_base="你的API_BASE")  
response = model.invoke(final_prompt)  
parsed_output = output_parser.invoke(response)  
print(parsed_output)  # 输出格式化的书籍信息  

五、结语

LangChain是一个强大的框架,它通过将LLM、Prompt、Chain和OutputParser等组件结合在一起,为开发者提供了一个灵活、可扩展的平台来构建和管理LLM应用。

从Prompt的设计到LLM的选择,再到Chain的构建和OutputParser的使用,LangChain的每个组件都扮演着重要的角色。通过学习和掌握这些概念,开发者可以更加高效地利用LangChain来构建复杂、智能的应用。

希望这篇Blog能帮助大家更好地理解和使用LangChain框架。如果你对LangChain或大型语言有任何模型疑问或想法,欢迎在评论区留言与我交流!

在大模型时代,我们如何有效的去学习大模型?

现如今大模型岗位需求越来越大,但是相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
在这里插入图片描述

掌握大模型技术你还能拥有更多可能性

• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;

• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;

• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;

• 更优质的项目可以为未来创新创业提供基石。

可能大家都想学习AI大模型技术,也_想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把都打包整理好,希望能够真正帮助到大家_。

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

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

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

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述

三、AI大模型经典PDF书籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

在这里插入图片描述

结语

【一一AGI大模型学习 所有资源获取处(无偿领取)一一】
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/466563.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TensorFlow|咖啡豆识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 🍺 要求: 自己搭建VGG-16网络框架调用官方的VGG-16网络框架 🍻 拔高(可选): 验证集准…

Jmeter5.X性能测试

Jmeter5.X性能测试 文章目录 Jmeter5.X性能测试一、掌握Http基础协议1.1 浏览器的B/S架构和C/S架构1.2 HyperText Transfer Protocol 超文本传输协议1.3 超文本传输协议Http消息体拆分讲解1.4 HTTP的九种请求方法和响应码介绍1.5 Http请求头/响应头1.6 Http常见请求/响应头cont…

信息安全工程师(81)网络安全测评质量管理与标准

一、网络安全测评质量管理 遵循标准和流程 网络安全测评应严格遵循国家相关标准和流程,确保测评工作的规范性和一致性。这些标准和流程通常包括测评方法、测评步骤、测评指标等,为测评工作提供明确的指导和依据。 选择合格的测评团队 测评团队应具备相关…

AI - 人工智能;Ollama大模型工具;Java之SpringAI(三)

AI - 人工智能;Java之SpringAI(一) AI - 人工智能;Java之SpringAI(二) 一、Ollama 官网:https://ollama.com/ Ollama是一个大模型部署运行工具,在该工具里面可以部署运行各种大模型…

力扣—不同路径(路径问题的动态规划)

文章目录 题目解析算法原理代码实现题目练习 题目解析 算法原理 状态表示 对于这种「路径类」的问题,我们的状态表示⼀般有两种形式: i. 从[i, j] 位置出发。 ii. 从起始位置出发,到[i, j] 位置。 这⾥选择第⼆种定义状态表⽰的⽅式&#xf…

用了Stream后,代码反而越写越丑?

使用 Stream API 可以使代码更加简洁和易读,但如果不恰当地使用或过度使用,确实可能导致代码变得复杂和难以理解。以下是一些常见的问题和改进建议: 常见问题 过度链式调用:过度链式调用 Stream 方法会导致代码行过长&#xff0c…

论文速读:简化目标检测的无源域适应-有效的自我训练策略和性能洞察(ECCV2024)

中文标题:简化目标检测的无源域适应:有效的自我训练策略和性能洞察 原文标题:Simplifying Source-Free Domain Adaptation for Object Detection: Effective Self-Training Strategies and Performance Insights 此篇文章为论文速读&#xff…

FFmpeg 4.3 音视频-多路H265监控录放C++开发十. 多线程控制帧率。循环播放,QT connect 细节,

在前面,我们总结一下前面的代码。 在 FactoryModeForAVFrameShowSDL 构造函数中 init SDL。 通过 QT timerevent机制,通过startTimer(10);每隔10ms,就会调用timerEvent事件。 在timerEvent事件中,真正的去 读取数据&#xff0c…

企业文件加密要怎么做?好用的10款企业文件加密软件排行榜!

在现代信息化的工作环境中,企业数据安全面临着越来越多的威胁。尤其是当涉及到敏感文件和商业机密时,如何保护这些数据不被泄露或遭受恶意攻击显得尤为重要。企业文件加密成为了保护企业信息安全的关键手段。本文将探讨如何进行企业文件加密,…

20241107给野火LubanCat1-BTB刷Ubuntu的预编译固件并点亮USB接口的热像仪AT600

20241107给野火LubanCat1-BTB刷Ubuntu的预编译固件并点亮USB接口的热像仪AT600 2024/11/7 20:08 缘起:需要使用RK3566的linux/Buildroot系统。 将 鲁班猫的 云盘资料下载之后,发现里面没有Buildroot的预编译固件。 火速联系 淘宝客服!转技术支…

VMware没有卸载干净,安装后ping不通

目录 1.问题 2.问题分析 3. 解决办法 🍓 STEP1:卸载VMware 🍈 STEP2:services.msc设置 🍒STEP3:安装everything删除所有与vmware相关的文件 🍑STEP4:使用CCleaner清理修复注册…

【科普】简述机器学习和深度学习及其相关的算法

文章目录 机器学习1. 基本概念2. 机器学习的分类3. 机器学习的常用方法4. 应用领域5. 挑战与未来6. 未来趋势 机器学习算法 深度学习1.深度学习的基本概念2.深度学习的主要架构3.深度学习的应用4.深度学习的挑战 深度学习算法 机器学习 机器学习是人工智能的一个重要分支&…

HCIP--3实验- 链路聚合,VLAN间通讯,Super VLAN,MSTP,VRRPip配置,静态路由,环回,缺省,空接口,NAT

学习目标: 链路聚合VLAN间通讯Super VLANMSTPVRRPip配置,静态路由,环回,缺省,空接口NAT 学习内容: 实验拓扑实验需求实验需求分析实验配置内容 (每一个设备的每一步操作)实验结果验证 1.实验拓扑 搭建 …

Zabbix监控架构

目录 1. Zabbix监控架构-CS架构 2. Zabbix极速上手指南 主机规划 2.1 部署ngxphp环境并测试 检查安装结果 2.2 部署数据库 2.3 编译安装zabbix-server服务端及后续配置 2.4 部署前端代码代码进行访问 前端的配置文件(连接数据库与主机名等信息) 2.5 欢迎来到zabbix 2…

【CentOS】中的Firewalld:全面介绍与实战应用(上)

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、iptables 时代 2、firewalld 时代 3、 从 ipt…

人工智能未来前景好不好?

人工智能(AI)正以前所未有的速度改变着我们的世界。随着技术的不断进步,AI不仅在各行各业中扮演着越来越重要的角色,也为求职者和职业发展带来了广阔的机会。那么,人工智能未来的前景如何? 1 高增长行业 人…

湘潭大学软件工程专业选修 SOA 期末考试复习(二)

文章目录 回顾序言第一章课后题填空选择简答 第二章课后题填空选择编程 计划第三章课后题填空选择简答编程 第四章课后题填空选择简答编程 第五章课后题填空选择简答编程 第六章课后题说明 第七章课后题填空选择简答编程 第八章课后题填空选择简答编程 第九章课后题填空选择简答…

JVM垃圾回收详解

前言 当需要排查各种内存溢出问题、当垃圾收集成为系统达到更高并发的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 堆空间的基本结构 Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核…

Hive 操作基础(进阶篇✌️)

Hive 进阶操作 分区表 创建分区表 create table score_part(字段名 字段类型,字段名 字段类型 )partitioned by (分区字段 分区类型) row format delimited fields terminated by \t; 创建单极分区表 注意: 分区的列名不能和数据列名相同.分区列会当做虚拟列出现在数据列…

【Kafka】Windows+KRaft部署指南

【Kafka】WindowsKRaft部署指南 摘要本地环境说明官网快速开始修改config/kraft/server.properties初始化数据存储目录启动 测试创建topic创建生产者创建消费者 FAQ输入行太长。命令语法不正确。问题描述解决方案 参考资料 摘要 Kafka是一种高吞吐量的分布式发布订阅消息系统&…