开源模型应用落地-LangChain试炼-CPU调用QWen1.5(一)
一、前言
尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。
通过langchain框架调用本地模型,使得用户可以直接提出问题或发送指令,而无需担心具体的步骤或流程。langchain会自动将任务分解为多个子任务,并将它们传递给适合的语言模型进行处理。
二、术语
2.1.LangChain
是一个全方位的、基于大语言模型这种预测能力的应用开发工具。LangChain的预构建链功能,就像乐高积木一样,无论你是新手还是经验丰富的开发者,都可以选择适合自己的部分快速构建项目。对于希望进行更深入工作的开发者,LangChain 提供的模块化组件则允许你根据自己的需求定制和创建应用中的功能链条。
LangChain本质上就是对各种大模型提供的API的套壳,是为了方便我们使用这些 API,搭建起来的一些框架、模块和接口。
LangChain的主要特性:
1.可以连接多种数据源,比如网页链接、本地PDF文件、向量数据库等
2.允许语言模型与其环境交互
3.封装了Model I/O(输入/输出)、Retrieval(检索器)、Memory(记忆)、Agents(决策和调度)等核心组件
4.可以使用链的方式组装这些组件,以便最好地完成特定用例。
5.围绕以上设计原则,LangChain解决了现在开发人工智能应用的一些切实痛点。
2.2.Hugging Face
是一个知名的开源社区和平台,专注于自然语言处理(NLP)技术和人工智能模型的开发和共享。该社区致力于提供易于使用的工具和资源,帮助研究人员、开发者和数据科学家在NLP领域进行创新和应用。
Hugging Face最著名的贡献是其开源软件库,其中包括了许多流行的NLP模型的实现和预训练模型的集合,如BERT、GPT、RoBERTa等。这些模型在各种NLP任务,如文本分类、命名实体识别、情感分析等方面取得了很好的表现,并被广泛应用于学术界和工业界。
2.3.Transformers
Hugging Face的Transformer是一个流行的开源Python库,用于自然语言处理(NLP)任务和模型开发。它提供了一系列易于使用的API和工具,用于加载、训练和部署各种预训练的NLP模型,如BERT、GPT、RoBERTa等。
三、前提条件
3.1.安装虚拟环境
conda create --name langchain python=3.10
conda activate langchain
conda install pytorch
pip install langchain accelerate
3.2.下载QWen1.5模型
huggingface:
https://huggingface.co/Qwen/Qwen1.5-7B-Chat/tree/main
ModelScope:
git clone https://www.modelscope.cn/qwen/Qwen1.5-7B-Chat.git
PS:
1. 根据实际情况选择不同规格的模型
四、技术实现
4.1.方式一
# -*- coding = utf-8 -*-
import warningsfrom langchain import PromptTemplate
from langchain.chains.llm import LLMChain
from langchain.llms import HuggingFacePipelinewarnings.filterwarnings("ignore")model_path ="/data/model/qwen1.5-7b-chat"local_llm = HuggingFacePipeline.from_model_id(model_id=model_path,task="text-generation",model_kwargs={"trust_remote_code": True},pipeline_kwargs={"max_new_tokens": 8192,"top_p":0.9, "temperature":0.45,"repetition_penalty":1.1, "do_sample":True},
)template = """Question: {question}Answer: Let's think step by step."""prompt = PromptTemplate.from_template(template)chain = LLMChain(prompt=prompt, llm=local_llm)
question = "我家在广州,很好玩哦,你能介绍一些我家的特色景点吗?"
print(chain.run(question))
调用结果:
4.2.方式二
# -*- coding = utf-8 -*-
import warningsfrom langchain import PromptTemplate
from langchain.llms import HuggingFacePipelinewarnings.filterwarnings("ignore")model_path ="/data/model/qwen1.5-7b-chat"local_llm = HuggingFacePipeline.from_model_id(model_id=model_path,task="text-generation",model_kwargs={"trust_remote_code": True},pipeline_kwargs={"max_new_tokens": 8192,"top_p":0.9, "temperature":0.45,"repetition_penalty":1.1, "do_sample":True},
)template = """Question: {question}Answer: Let's think step by step."""prompt = PromptTemplate.from_template(template)chain = prompt | local_llm
question = "我家在广州,很好玩哦,你能介绍一些我家的特色景点吗?"
print(chain.invoke({"question": question}))
调用结果:
五、附带说明
5.1. ValueError: Input length of input_ids is 20, but `max_length` is set to 20. This can lead to unexpected behavior. You should consider increasing `max_length` or, better yet, setting `max_new_tokens`.
配置max_new_tokens

5.2. 使用pipline模型的加载方式
参见huggingface_pipeline.py文件,跟往常的模型加载方式一致

5.3. 模型加载很慢
原因:当前示例使用CPU加载模型及推理
相关文章:
开源模型应用落地-LangChain试炼-CPU调用QWen1.5(一)
一、前言 尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。 通过langchain框…...
STM32-模数转化器
ADC(Analog-to-Digital Converter) 指模数转换器。是指将连续变化的模拟信号转换 为离散的数字信号的器件。 ADC相关参数说明: 分辨率: 分辨率以二进制(或十进制)数的位数来表示,一般有 8 位、10 位、12 位、16 位…...
算法刷题记录2
4.图 4.1.被围绕的区域 思路:图中只有与边界上联通的O才不算是被X包围。因此本题就是从边界上的O开始递归,找与边界O联通的O,并标记为#(代表已遍历),最后图中剩下的O就是:被X包围的O。图中所有…...
中国代工巨头旗下芯片公司遭网络攻击,千兆字节数据被泄露
近日,中国智能手机代工巨头闻泰科技旗下荷兰芯片制造商Nexperia发布声明,称其遭遇网络攻击,有未经授权的第三方访问了公司的 IT 服务器,目前已向相关部门报告了此次事件,并与网络安全专家合作开启调查。而据相关消息&a…...
【ARM 裸机】汇编 led 驱动之基本语法
我们要编写的是 ARM 汇编,编译使用的是 gcc 交叉编译器,所以要符合 GNU 语法。 1、汇编指令 汇编由一条条指令构成,ARM 不能直接访问存储器,比如 RAM 中的数据,I.MX6UL 中的寄存器就是 RAM 类型的,我们用…...
scala---基础核心知识(变量定义,数据类型,流程控制,方法定义,函数定义)
一、什么是scala Scala 是一种多范式的编程语言,其设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。 二、为什么要学习scala 1、优雅 2、速度快 3、能融合到hado…...
OSPF星型拓扑和MGRE全连
一,拓扑 二,要求 1,R6为ISP只能配置IP地址,R1-R5的环回为私有网段 2,R1/4/5为全连的MGRE结构,R1/2/3为星型的拓扑结构, 3,R1为中心站点所有私有网段可以互相通讯,私有网段…...
智能时代中的工业应用中前所未有的灵活桥接和I/O扩展功能解决方案MachXO2系列LCMXO2-1200HC-4TG100I FPGA可编程逻辑IC
lattice莱迪斯 MachXO2系列LCMXO2-1200HC-4TG100I超低密度FPGA现场可编程门阵列,适用于低成本的复杂系统控制和视频接口设计开发,满足了通信、计算、工业、消费电子和医疗市场所需的系统控制和接口应用。 瞬时启动,迅速实现控制——启动时间…...
php:实现压缩文件上传、解压、文件更名、压缩包删除功能
效果图 1.上传文件 2.压缩包文件 3.itemno1文件 或 4.上传到系统路径\ItemNo 5.更名后的itemno1文件(命名:当天日期六位随机数) 代码 <form action"<?php echo htmlspecialchars($_SERVER[PHP_SELF], ENT_QUOTES, UTF-8); ?>" methodpost en…...
【机器学习】科学库使用第5篇:Matplotlib,学习目标【附代码文档】
机器学习(科学计算库)完整教程(附代码资料)主要内容讲述:机器学习(常用科学计算库的使用)基础定位、目标,机器学习概述定位,目标,学习目标,学习目标,1 人工智能应用场景,2 人工智能小…...
Java面试八股文(JVM篇)(❤❤)
Java面试八股文_JVM篇 1、知识点汇总2、知识点详解:3、说说类加载与卸载11、说说Java对象创建过程12、知道类的生命周期吗?14、如何判断对象可以被回收?17、调优命令有哪些?18、常见调优工具有哪些20、你知道哪些JVM性能调优参数&…...
「51媒体」如何有效进行媒体邀约,提升宣传传播效果?
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 进行有效的媒体邀约,提升宣传传播效果的关键在于策略性和专业性。以下是具体的做法: 明确目标:要确立清晰的品牌推广目标和策略,包括确定目…...
docker初始化进程
docker run --init 是一个 Docker 命令的选项,用于在容器中运行一个初始化进程(通常是 tini)。这个初始化进程负责处理一些 Unix 信号(如 SIGTERM 和 SIGCHLD),并确保容器中的进程能够正确地被管理和清理。…...
基于快照行情的股票/基金 1分钟 K 线合成指南
1. 概述 由于不同交易所不同资产的交易规则是有差异的,导致不同交易所基于快照行情或逐笔成交合成不同资产1分钟 K 线的计算方法是不同的。 本教程旨在提高 DolphinDB 在具体业务场景下的落地效率,降低 DolphinDB 在实际业务使用中的开发难度。 本教程…...
新质生产力崛起:精益化能力助力企业转型升级
在智能制造、物联网、大数据、大模型、AI风起云涌的时代背景下,一个崭新的概念——“新质生产力”逐渐进入了人们的视野。这一热词不仅成为今年两会的讨论焦点,更代表了企业、国家乃至社会未来发展的核心动能。那么,什么是新质生产力…...
开发了一个在线客服系统
开发了一个在线客服系统 作为程序员,我一直在寻找能够提高工作效率和用户体验的方法。最近,我成功开发了一个在线客服系统,这个系统旨在帮助企业更高效地管理客户咨询和服务流程。 技术栈 我选择了以下的技术栈来构建这个系统:…...
cowa新的数据筛选代码
cowa新的数据筛选代码 代码地址: https://git.cowarobot.com/lhb/data_extracting 一阶段筛选 修改配置文件 config/common_stage.yamlversion: 3 services:de:image: harbor.cowarobot.cn/lhb/data:crpilot2.5-torch2.2environment:- CRPILOT_INSTALL_VERSIONx86…...
项目篇 | 图书管理系统 | 管理员模块 | 图书管理 | 删除
项目篇 | 图书管理系统 | 管理员模块 | 图书管理 | 删除 概述 图书管理页通过列表展示所有图书的相关信息,集成了搜索、添加、删除、修改的功能。 函数简介 // admin.h void delBook(); // 删除图书 void openDelBookMessage(); // 打开删除图书弹框 void closeDelBookMessa…...
自己动手封装axios通用方法并上传至私有npm仓库:详细步骤与实现指南
文章目录 一、构建方法1、api/request.js2、api/requestHandler.js3、api/index.js 二、测试方法1、api/axios.js2、main.js3、app.vue4、vue.config.js5、index.html 三、打包1、配置package.json2、生成库包3、配置发布信息4、发布 四、使用1、安装2、使用 五、维护1、维护和…...
【Sql Server】锁表如何解锁,模拟会话事务方式锁定一个表然后进行解锁
大家好,我是全栈小5,欢迎来到《小5讲堂》。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言创建表模拟…...
【Linux】初见,进程概念
1.冯诺依曼体系结构我们所见的大部分计算机都是遵循的冯诺依曼体系结构我们的计算机都是由一个个硬件所组成的输出设备:显示器、音响、摄像头、网卡.......输入设备:鼠标、键盘 、网卡.......中央处理器(CPU):包含运算…...
适合情侣复合的歌曲|一开口就破防,唱尽遗憾与舍不得,听完都想重新在一起
有些分开不是不爱,只是赌气、误会、嘴硬、放不下面子。明明心里还惦记,却谁都不肯先低头;明明还深爱,却硬生生走成了陌路。想复合,却不知怎么开口;想挽回,又怕被拒绝、怕尴尬、怕自作多情。其实…...
从专利大国到专利强国:企业全球专利布局策略与实战指南
1. 从“专利大国”到“专利强国”:一场关于价值与布局的深度思考最近翻看一些行业旧闻,2016年EE Times上那篇关于中国专利“不出海”的讨论,现在读来依然很有嚼头。文章核心就一句话:根据世界知识产权组织(WIPO&#x…...
5大智能引擎:揭秘Illustrator批量替换脚本的自动化革命
5大智能引擎:揭秘Illustrator批量替换脚本的自动化革命 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts replaceItems.jsx是Adobe Illustrator脚本库中的专业级批量替换工…...
README工匠技能:从自动化工具到工程化实践,打造项目黄金门面
1. 项目概述:一个为README注入灵魂的“工匠”技能 在开源社区和项目协作中,README文件就是项目的“门面”和“说明书”。一个优秀的README,能瞬间抓住潜在用户或贡献者的眼球,清晰地传达项目价值、快速引导上手,甚至能…...
DownKyi终极指南:快速掌握B站视频批量下载与8K超高清获取技巧
DownKyi终极指南:快速掌握B站视频批量下载与8K超高清获取技巧 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等…...
FPGA加速的医疗影像深度学习分类系统实现14.5μs超低延迟
1. 项目背景与核心挑战在医疗影像分析领域,淋巴细胞亚群(如T4、T8和B细胞)的快速准确分类对疾病诊断和治疗监测至关重要。传统方法依赖荧光标记和人工镜检,存在操作复杂、成本高昂且主观性强的问题。我们团队开发的基于明场显微镜…...
以太网技术演进:从标准统一到多速率并行发展的深度解析
1. 以太网演进:从有序增长到“混沌”繁荣如果你在2015年前后关注过网络技术,可能会觉得以太网的世界突然变得有点“乱”。不再是那个我们熟悉的、每隔几年速度就提升十倍的规律节奏。当时,IEEE 802.3工作组内部同时推进着2.5G、5G、25G乃至40…...
免费抠图软件一键抠图无水印有哪些?2026年最实用工具对比测试
最近很多粉丝问我,有没有真正免费、无水印、操作简单的抠图软件?说实话,市面上的抠图工具五花八门,但真正好用的没几个。我这次花了不少时间测试了十多款抠图软件,今天就把我的真实体验分享给大家。为什么你需要一个好…...
Tokscale:AI编程助手Token成本监控与优化实战指南
1. 项目概述:为什么你需要一个AI助手“电费”监控器 如果你和我一样,每天的工作流里塞满了各种AI编程助手——从OpenCode、Claude Code到Cursor、Copilot CLI,甚至还在尝试各种新冒出来的工具,那你肯定有过这样的瞬间:…...
