大模型框架 LangChain 介绍

news2024/11/19 9:28:03

文章目录

  • langchain介绍
  • 安装依赖
  • 大模型类别
  • 千帆大模型案例
  • 常见问题

langchain介绍

  • 是一个开源大语言模型框架,本身不提供大模型算法,只提供对接大模型算法平台的接口(模型包裹器);langchain官网v0.2,内部涉及的OpenAI的大模型使用都可以都可以替换为国内的大模型平台;

  • 用于开发大模型应用的框架;

  • 具有五大核心:

    • 模型IO,即模型包裹器,对接各个平台的大语言模型;
    • 数据增强,加载数据文档、转换、嵌入、向量化存储、检索等;
    • 链,将多个组件连接起来,完成特定的操作;
    • Agent代理,核心思想就是LLM选择操作序列,调用其他的API等;
    • indexes 索引快速检索信息;
      在这里插入图片描述
      另外还有回调处理器、记忆等模块。
  • 优点:

    • 允许将大语言模型连接到自己的数据源,如内网中的数据库、pdf等文档;
    • 可以根据提取的信息完成相应的操作;
       
  • 应用场景:

    • 问答系统;
    • 自动问答和客服机器人;
    • 数据处理、管理,如RAG;
       
  • 工作原理
    在这里插入图片描述

    • 用户输入问题,从数据库中进行相似性搜索,找到相关的信息;
    • 找到的信息与问题一同传给大语言模型,得到一个答案;
    • 输出该答案 或者 根据该答案做出动作(接口调用等);
       

安装依赖

pip install -U langchain langchain-community langchain-openai langchain-chroma



# 核心包langchain_core
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
# SystemMessage 用于系统设定
# HumanMessage(content="xxx") # 用户输入的信息
# AIMessage 大模型的输出
# 输出解析器,解析AIMessage
from langchain_core.output_parsers import StrOutputParser, JsonOutputParser

# langchain_community
# 模型包裹器
from langchain_community.chat_models import ChatOpenAI  
from langchain_community.chat_models import QianfanChatEndpoint
# 聊天信息历史
from langchain_community.chat_message_histories import ChatMessageHistory
# 

 

大模型类别

  • 百度千帆大模型,需要注册百度智能云;
    在这里插入图片描述
    在开发千帆大模型应用程序时,需要创建应用以获取ak/sk,并购买调用的服务;调用示例代码
    在这里插入图片描述
    在这里插入图片描述

  • 华为盘古大模型;

  • 阿里通义千问大模型;

  • OpenAI chat-gpt;

 

千帆大模型案例

基于 千帆大模型(文心一言) 创建一个聊天机器人:

import os
from langchain_community.chat_models import QianfanChatEndpoint
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
from langchain_core.output_parsers import StrOutputParser


# 环境变量方式,指定ak/sk
os.environ["QIANFAN_AK"] = "your api key"
os.environ["QIANFAN_SK"] = "your secret key"

# 千帆大模型 (文心一言)
qianfan_chat = QianfanChatEndpoint(
                model="ERNIE-3.5-8K", 
                temperature=0.2, # 越大越随机回答
                timeout=50,  # 有时网络不好,可能会超时,可以指定长些
                # api_key="...",
                # secret_key="...",
                # top_p="...",
                # other params...
            )

# 对象可以直接调用
# res = qianfan_chat.invoke(([HumanMessage(content="讲一个故事")]))

# messages 转为提示词
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个python技术专家,请尽力回答如下问题。"), # message元组或者SystemMessage(content="xx")
    HumanMessage(content="写出一个{lang}的工厂设计模式。") # 占位符
])

# 模型输出的为 AIMessage,需解析为对应的数据格式
parser = StrOutputParser()

# 组装链
chat_chain = prompt | qianfan_chat | parser

# 调用链,并传入占位符
res = chat_chain.invoke({"lang": "python"}) # 链调用,传入占位符的key

# 打印响应 的字符串
print("res:", res)

常见问题

  • urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘aip.baidubce.com’, port=443): Read timed out. (read timeout=30) 接口调用时,网络IO可能较慢,在chat model中延长timeout的时间

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

POI获取模板文件,替换数据横纵动态表格、折线图、饼状图、折线饼状组合图

先说几个关键的点 pom.xml依赖 <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version> </dependency> <dependency><groupId>com.deepoove</groupId>&…

现代桌面UI框架科普及WPF入门1

现代桌面UI框架科普及WPF入门 文章目录 现代桌面UI框架科普及WPF入门桌面应用程序框架介绍过时的UI框架MFC (Microsoft Foundation Class)缺点 经典的UI框架**WinForms****QT****WPF** 未来的UI框架**MAUI****AvaloniaUI** WPF相对于Winform&#xff0c;QT&#xff0c;MFC的独立…

【深度学习】(5)--搭建卷积神经网络

文章目录 搭建卷积神经网络一、数据预处理1. 下载数据集2. 创建DataLoader&#xff08;数据加载器&#xff09; 二、搭建神经网络三、训练数据四、优化模型 总结 搭建卷积神经网络 一、数据预处理 1. 下载数据集 在PyTorch中&#xff0c;有许多封装了很多与图像相关的模型、…

二阶滤波算法总结(对RC滤波算法整理的部分修正和完善)

文章目录 1、一阶低通滤波2、一阶高通滤波3、二阶低通滤波器3.1 二阶RC低通滤波器的连续域数学模型3.2 二阶RC低通滤波器的算法推导3.3 matlab仿真 4、二阶高通滤波器4.1 二阶RC高通滤波器的连续域数学模型4.2 二阶RC高通滤波器的算法推导4.3 matlab仿真 5、陷波滤波6、带通滤波…

要大爆发的AI Agent是什么?(软件测试人员需要掌握)

什么是AI Agent&#xff1f; AI Agent 是一种软件程序&#xff0c;可以与环境交互&#xff0c;收集数据&#xff0c;并使用数据执行自主任务以实现预定目标。即人类设定目标&#xff0c;AI Agent 独立选择实现这些目标所需的最佳行动。 简单来说&#xff0c;AI Agent是一个能够…

复选框选择示例【JavaScript】

这段代码实现的功能是一个简单的复选框示例&#xff0c;它可以进行全选、反选和取消选中操作。 实现功能&#xff1a; 1. 全选&#xff1a;当点击标签"全选"旁边的复选框时&#xff0c;该页面上所有具有"item"类的复选框都会被选中&#xff08;或者取消选…

七种修复错误:由于找不到msvcr110.dll 无法继续执行的方法

当你在运行某些程序时遇到“找不到msvcr110.dll”的错误提示&#xff0c;这通常意味着你的系统缺少了Microsoft Visual C 2012 Redistributable包中的一个重要文件。这个DLL文件是Microsoft Visual C Redistributable的一部分&#xff0c;用于支持许多使用Visual C编写的软件和…

回答网友的一个SQL问题

网友问&#xff1a; CODE NAME 1 A 1 B 如何得到下面的值&#xff0c;该如何写SQL CODE NAME 1 AB 1 AB 俺的回答&#xff1a; declare t table(code varchar(50),name varchar(50)) insert into t(code,name) select 1,A union select…

【Pleiades卫星】

Pleiades卫星 Pleiades卫星是法国研制的高分辨率光学成像卫星&#xff0c;旨在满足民用和国防领域对高分辨率地球观测数据的需求。以下是对Pleiades卫星的详细介绍&#xff1a; 一、基本概况 名称&#xff1a;Pleiades&#xff0c;中文名称为昴宿星卫星。研制国家&#xff…

数电学习基础(逻辑门电路+)

1.逻辑门电路 1.1逻辑门电路的简介 1.1.1各种逻辑门电路的简介 基本概念 &#xff08;1&#xff09;实现基本逻辑运算和常用逻辑运算的电路称为逻辑门电路&#xff0c;简称门电路。逻辑门电路是组成各种数字电路的基本单元电路。将构成门电路的元器件制作一块半导体芯片上再…

Allegro视频去除走线的小方块

走线出现小方块图如下&#xff1a; 其实这种情况并不影响PCB生产和布线的联通性&#xff0c;只是多少会影响美观和性能&#xff0c;在Allegro视频中去除的方法比较简单&#xff0c;是由模块复用以后&#xff0c;没有打散模块引起的。只要我们将模块的打散即可。具体操作如下:…

stm32 gpio I/O模式以及iic访问

1&#xff0c;硬件补充连接原理图引脚 #define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH(up to 1 MB) base address in the alias region */ #define CCMDATARAM_BASE ((uint32_t)0x10000000) /*!< CCM(core coupled mem…

球体检测系统源码分享

球体检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

元素循环分析再添新成员:铜、钼、镍、钴、硒微量元素数据库注释

微量营养元素&#xff08;例如Fe、Cu、Mo、Ni等&#xff09;是光合作用、呼吸作用、生物大分子合成、氧化还原平衡、细胞生长和免疫系统功能等微生物驱动过程的重要调节因子。虽然生物体需要少量的微量营养元素&#xff0c;但缺乏微量营养元素会严重限制生物体的生长和生物过程…

快手IP归属地怎么设置别的地方

在当今数字化时代&#xff0c;社交媒体平台如快手已成为人们日常生活中不可或缺的一部分。快手通过显示用户的IP归属地&#xff0c;增加了信息的透明度和互动性。然而&#xff0c;有些用户可能出于个人需求或特定情境&#xff0c;希望将自己的IP归属地设置为别的地方。本文将深…

前端开发必须了解的css知识

文本过长省略显示 单行 .ellipsis {overflow: hidden;text-overflow: ellipsis;white-space: nowrap; }多行 方法一&#xff1a; .ellipsis {overflow: hidden;text-overflow: ellipsis;-webkit-line-clamp: 3;word-break: break-all; }方法二&#xff1a; .ellipsis {ove…

分布式锁总结1 - 为什么需要分布式锁?

目录 1. 最基本的业务逻辑是&#xff1a; 2. 高并发场景下常见的缓存问题 2.1问题一 缓存穿透 : 一直查询不存在的数据 解决方案 : 短暂缓存null结果 2.2 问题二 缓存雪崩 : 大量key同时过期大量请求直击数据库 解决方案 : 在原有的过期时间上加一个随机的值&#xff0c;…

国联安基金前置机用朝天椒USB Server实现了虚拟化

国联安基金近期上线了朝天椒USB Server产品&#xff0c;影响了虚拟化进程的物理前置机逐步退出了历史舞台&#xff0c;实现了虚拟化&#xff0c;通过USB服务器&#xff0c;虚拟机中也能网络识别各个前置机系统的认证U盾。 一、背景 国联安基金在金融业务运营过程中&#xff0c…

进度条QProgressBar

进度条控价&#xff0c;用来只是任务的完成情况 值 包括当前值、最大值、最小值 // 获取和设置当前值 int value() const; void setValue(int);// 获取和设置最大值 int maximum() const; void setMaximum(int);// 获取和设置最小值 int minimum() const; void setMinimum(i…

Datawhale X 南瓜书 task01学习笔记

机器学习三观 机器学习工程领先理论 what:什么是机器学习? 机器学习定义&#xff1a;研究关于“学习算法”(一类能从数据中学习出其背后潜在规律的算法)的一门学科PS:深度学习指的是&#xff1a;神经网络那一类学习算法&#xff0c;因此是机器学习的子集把深度学习单列出来…