[大模型]DeepSeek-7B-chat langchain 接入

DeepSeek-7B-chat langchain 接入

这篇主要讲 DeepSeek-7B-chat 如何对接Langchainlangchain.llms.baseLLM 模块,其他关于如何对接向量数据库和gradio的部分请参考internLM langchain模块。

安装依赖

除了需要安装模型的运行依赖之外,还需要安装 langchain 依赖。

pip install langchain==0.0.292

DeepSeek-7B-chat 接入 LangChain

为便捷构建 LLM 应用,我们需要基于本地部署的 DeepSeek-7B-chat,自定义一个 LLM 类,将 DeepSeek-7B-chat 接入到 LangChain 框架中。完成自定义 LLM 类之后,可以以完全一致的方式调用 LangChain 的接口,而无需考虑底层模型调用的不一致。

基于本地部署的 DeepSeek-7B-chat 自定义 LLM 类并不复杂,我们只需从 LangChain.llms.base.LLM 类继承一个子类,并重写构造函数与 _call 函数即可:

from langchain.llms.base import LLM
from typing import Any, List, Optional
from langchain.callbacks.manager import CallbackManagerForLLMRun
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
import torchclass DeepSeek_LLM(LLM):# 基于本地 InternLM 自定义 LLM 类tokenizer : AutoTokenizer = Nonemodel: AutoModelForCausalLM = Nonedef __init__(self, model_path :str):# model_path: InternLM 模型路径# 从本地初始化模型super().__init__()print("正在从本地加载模型...")self.tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)self.model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True,torch_dtype=torch.bfloat16,  device_map="auto")self.model.generation_config = GenerationConfig.from_pretrained(model_path)self.model.generation_config.pad_token_id = self.model.generation_config.eos_token_idself.model = self.model.eval()print("完成本地模型的加载")def _call(self, prompt : str, stop: Optional[List[str]] = None,run_manager: Optional[CallbackManagerForLLMRun] = None,**kwargs: Any):# 重写调用函数messages = [{"role": "user", "content": prompt}]# 构建输入     input_tensor = self.tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt")# 通过模型获得输出outputs = self.model.generate(input_tensor.to(self.model.device), max_new_tokens=100)response = self.tokenizer.decode(outputs[0][input_tensor.shape[1]:], skip_special_tokens=True)return response@propertydef _llm_type(self) -> str:return "DeepSeek_LLM"

调用

然后就可以像使用任何其他的langchain大模型功能一样使用了。

llm = DeepSeek_LLM('/root/autodl-tmp/deepseek-ai/deepseek-llm-7b-chat')llm('你好')

如下图所示:

在这里插入图片描述

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

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

相关文章

45.基于SpringBoot + Vue实现的前后端分离-驾校预约学习系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统,采用SpringBoot Vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SpringBoot Vue技术的驾校预约学习系统设计与实现管理工作…

C#版Facefusion ,换脸器和增强器

C#版Facefusion ,换脸器和增强器 目录 说明 效果 项目 调用代码 说明 Facefusion是一款最新的开源AI视频/图片换脸项目。是原来ROOP的项目的延续。项目官方介绍只有一句话,下一代换脸器和增强器。 代码实现参考 https://github.com/facefusion/f…

面试算法-177-二叉搜索树中第K小的元素

题目 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 示例 1: 输入:root [3,1,4,null,2], k 1 输出:1 解 class Solution…

Science Robotics 封面论文:Google DeepMind 通过深度强化学习赋予双足机器人敏捷的足球技能

创造通用具身智能,即创造能够在物理世界中敏捷、灵巧和理解的智能体——就像动物或人类一样——是人工智能 (AI) 研究人员和机器人专家的长期目标之一。动物和人类不仅是自己身体的主人,能够流畅而轻松地执行和组合复杂的动作&…

使用这几款插件,GitHub阅读代码效率噌噌噌

** octotree:生成仓库目录 ** 这可能是我用得最多的一款插件了,大家有没有遇到过这种情况。每次点击一个文件后,整个文件列表就会被隐藏,想查看其它文件只能回退后再次进入。别提有多蛋疼了…… 而这款插件就完美解决了这个问题…

卷积神经网络结构组成与解释

卷积神经网络结构组成与解释 卷积神经网络是以卷积层为主的深度网路结构,网络结构包括有卷积层、激活层、BN层、池化层、FC层、损失层等。卷积操作是对图像和滤波矩阵做内积(元素相乘再求和)的操作。 1. 卷积层 常见的卷积操作如下&#x…

Vue指令案例

通过Vue完成表格数据的渲染展示 最终结果为&#xff1a; <!DOCTYPE html> <html lang"en"><head><script src"vue.js">//引入vue文件</script><meta charset"UTF-8"><meta name"viewport" c…

Dask库一个神奇处理大数据在python的库

Dask库一个神奇处理大数据在python的库 Dask库&#xff0c;一个神奇处理大数据的库 什么是 Dask&#xff1f; Dask 是一个灵活的并行计算库,旨在处理大规模数据集.它提供了类似于 Pandas 和 NumPy 的数据结构,但能够有效地处理比内存更大的数据集.Dask 可以在单台机器或分布式…

商业银行风险管理

商业银行风险管理 银行业风险类型概述管理信用风险管理利率风险缺口分析 持续期分析利率互换消除利率风险表外业务的风险管理 银行业风险类型概述 信用风险市场风险&#xff08;利率风险、汇率风险等市场价 格风险&#xff09;财务风险&#xff08;流动性风险&#xff09;操作…

标量子查询 scalar subquery row_number()改写

当一个子查询介于select 与from之间&#xff0c;这种子查询就叫标量子查询。 标量子查询类似于函数&#xff0c;在结果集返回的每一行增加一个函数列。 标量的意思就是对于一个具体的输入值输出的的是一个特定的值&#xff0c;不是随机的值。 ----在函数中也有这个概念。如果…

mediapipe人体姿态检测(全方位探索手部、面部识别、姿势识别与物体检测及自拍分割技术)

引言 本文将聚焦于MediaPipe对人体姿态检测的全面支持&#xff0c;包括手部、面部识别、全身姿势识别、物体检测以及自拍分割五大关键技术。通过深入了解这些功能&#xff0c;读者将能更好地运用MediaPipe在各种应用中实现精准的人体动作捕捉与分析。 一、手部关键点检测 Me…

反爬虫之代理IP封禁-协采云IP池

反爬虫之代理IP封禁-协采云IP池 1、目标网址2、IP封禁4033、协采云IP池 1、目标网址 aHR0cDovL3d3dy5jY2dwLXRpYW5qaW4uZ292LmNuLw 2、IP封禁403 这个网站对IP的要求很高&#xff0c;短时间请求十几次就会遭关进小黑屋。如下图&#xff1a; 明显是网站进行了反爬处理&…