当前位置: 首页 > news >正文

LangChain框架概念及简单的使用案例

一、LangChain介绍

LangChain是一个强大的用于开发大模型应用程序的框架,为开发提供丰富的工具和组件,使得构造复杂的自然语言处理变得更加高效和便捷。它允许开发者将大语言模型与其他数据源工具集成,从而创建出能处理各种任务的智能体应用,如问答系统,聊天机器人,文本生成。

二、LangChain核心模块介绍

模型(Models)

在LangChain中,模型接口是与大语言模型进行交互的桥梁。它支持多种类型的模型,包含大语言模型(LLMs)和聊天模型(Chat Models)。

提示词模板(PromptTemplates)

提示词用于定义输入给语言模型的提示信息,帮助模型生成更符合预期的输出。它可以包含变量,通过填充变量来生成具体的提示。

链(Chains)

链是LangChain中一个重要的概念,它将多个组件组合在一起,按照一定的顺序执行,以实现更复杂的任务。常见的链类型包含顺序链(SequnentialChain)、并行链等。

工具(Tools)

工具是LangChain中用于执行特定任务的组件,如搜索引擎工具、数据库查询工具。开发者可以将工具集成到链中,以扩展应用的功能。

记忆(Menory)

在对话式应用中,记忆组件用于保存和管理对话中的历史信息,使模型能工具上下文进行更连贯的回复。LangChain提供了多种类型的记忆,如短期记忆,长期记忆等。

三、LangChain安装

安装环境要求

  1. python版本:建议使用python 3.7及以上版本
  2. 包管理工具:推荐pip

安装步骤

安装LangChain和相关依赖

pip install langchain==0.3.7
pip install langchain-core==0.3.43
pip install langchain-openai==0.3.1

四、LangChain实战

1、基本调用:简单问答机器人

演示任何使用LangChain调用大语言模型实现简单的问答功能

知识点:大模型配置和调用,以及SystemMessgae和HumanMessage。

在LangChain中,SystemMessage用于设置系统级别的提示词,HumanMessage用于表示用户的输入

from langchain.chains.conversation.base import ConversationChain
from langchain.chains.llm import LLMChain
from langchain.chains.sequential import SequentialChain
from langchain.memory import ConversationBufferMemory
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI# 创建一个大模型对象
llm = ChatOpenAI(openai_api_base="https://ark.cn-beijing.volces.com/api/v3",api_key="",temperature=0.7,max_tokens=10240,model_name="",
)# 简单的调用
def basic_demo():result = llm.invoke([SystemMessage(content="你是一个翻译小助手,请将输入的英文翻译成中文。"),HumanMessage(content="I love programming.")])print(result)

2、内存记忆:多轮聊天机器人

展示如何使用LangChain搭建一个聊天机器人,支持多轮聊天

知识点:ConversationBuffMemory、PromptTemplate、Memory

def multi_chat_demo():# 创建一个会话内存memory = ConversationBufferMemory()# 创建一个会话对象conversation = ConversationChain(llm=llm, memory=memory)while True:user_input = input("请输入:")if user_input == "退出":breakresult = conversation.predict(input=user_input)print(f"大模型输出:{result}")

3、单节点链调用:日报生成器

演示如何搭建一个简单的链(工作流)

# 单节点链路调用(工作流)
def basic_chat_demo():# 定义提示词模板prompt_template = PromptTemplate(input_variables=["job", "type"],template="你是一个职场文档专家,可以帮我生成一个{job}岗位的{type}文档,字数不要超过300")# 定义一个链(工作流),verbose= True将他调试信息全部打印出来chain = LLMChain(llm=llm, prompt=prompt_template, verbose=True, output_key="content")# 执行工作流result = chain.invoke({"job": "前端", "type": "工作日报"})print(result)

4、顺序链调用:美食推荐

实现美食推荐链路,根据用户输入的城市,推荐该城市的特殊菜谱。

知识点:顺序链、多节点参数传递

# 多节点链路调用
def sequential_chain_demo():# 第一第一个节点提示词prompt_templeate_1 = PromptTemplate(input_variables=["city"],template="你是一个美食家,可以告诉用户{city}地区特色菜是什么,只需要说一个菜名就可以,不需要对菜进行解释")# 定义第一个节点city_chain = LLMChain(llm=llm, prompt=prompt_templeate_1, verbose=True, output_key="food")prompt_templeate_2 = PromptTemplate(input_variables=["food"],template="你是一个厨师,可以输出一个{food}的菜谱,只需要输出一个{food}的菜谱,不需要对菜进行解释")food_chain = LLMChain(llm=llm, prompt=prompt_templeate_2, verbose=True, output_key="info")# 创建一个顺序链,把两个节点按照顺序组装all_chain = SequentialChain(chains=[city_chain, food_chain],input_variables=["city"],output_variables=["city","food","info"],verbose=True)result = all_chain.invoke({"city": "上海"})print(result)

http://www.dtcms.com/a/312874.html

相关文章:

  • ABP VNext + CloudEvents:事件驱动微服务互操作性
  • 计算机核心概念辨析与解析
  • 24SpringCloud黑马商城部署Java应用后浏览器访问数据库不显示数据的解决办法
  • 可持久化线段树 系列 题解
  • 【Python✨】解决 Conda 安装 MoviePy 报错问题
  • GitCode疑难问题诊疗
  • 12.Redis 主从复制
  • deep research|从搜索引擎到搜索助手的实践(一)
  • 企业自动化交互体系的技术架构与实现:从智能回复到自动评论—仙盟创梦IDE
  • 三、驱动篇-HDF驱动介绍1
  • 语义分割--Fcn
  • 回顾MDP的概念
  • RabbitMQ面试精讲 Day 8:死信队列与延迟队列实现
  • dbdiagram:一款简洁高效的免费数据库设计工具
  • 二叉树算法之【前序遍历】
  • 三生原理的“范畴语法”如何启发AI推理?
  • Spring Boot 整合 Minio 实现高效文件存储解决方案(本地和线上)
  • 个人项目介绍:语音识别小助手
  • Spring AI的英语实例
  • Nginux Rewte 相关功能
  • 基于Python实现生产者—消费者分布式消息队列:构建高可用异步通信系统
  • Rustdesk中继服务器搭建(windows 服务器)
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-56,(知识点:电源模块,DCDC电源,LDO电源,原理及其特点)
  • Java(HashMap和HashTable和Properties)
  • kafka 是一个怎样的系统?是消息队列(MQ)还是一个分布式流处理平台?
  • 哔哩哔哩招游戏内容产品运营
  • Ubuntu22.4部署大模型前置安装
  • 零确认双花攻击
  • 智变时代:AI 如何重构工作边界与行业生态?
  • 【软考中级网络工程师】知识点之 IS-IS 协议