Llama2-Chinese项目:7-外延能力LangChain集成
本文介绍了Llama2模型集成LangChain框架的具体实现,这样可更方便地基于Llama2开发文档检索、问答机器人和智能体应用等。
1.调用Llama2类
针对LangChain[1]框架封装的Llama2 LLM类见examples/llama2_for_langchain.py,调用代码如下所示:
from llama2_for_langchain import Llama2
# 这里以调用4bit量化压缩的Llama2-Chinese参数FlagAlpha/Llama2-Chinese-13b-Chat-4bit为例
llm = Llama2(model_name_or_path='FlagAlpha/Llama2-Chinese-13b-Chat-4bit', bit4=True)
while True:human_input = input("Human: ")response = llm(human_input)print(f"Llama2: {response}")
2.Llama2 LLM类具体实现
主要是def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str函数实现。LangChain八股文也不难实现,如下所示:
from langchain.llms.base import LLM
from typing import Dict, List, Any, Optional
import torch,sys,os
from transformers import AutoTokenizerclass Llama2(LLM): # LLM是一个抽象类,需要实现_call方法max_token: int = 2048 # 最大token数temperature: float = 0.1 # 生成温度top_p: float = 0.95 # 生成概率tokenizer: Any # 分词器model: Any # 模型def __init__(self, model_name_or_path, bit4=True):super().__init__()self.tokenizer = AutoTokenizer.from_pretrained(model_name_or_path,use_fast=False)self.tokenizer.pad_token = self.tokenizer.eos_tokenif bit4==False: # 32bitfrom transformers import AutoModelForCausalLMself.model = AutoModelForCausalLM.from_pretrained(model_name_or_path,device_map='auto',torch_dtype=torch.float16,load_in_8bit=True)self.model.eval()else: # 4bitfrom auto_gptq import AutoGPTQForCausalLMself.model = AutoGPTQForCausalLM.from_quantized(model_name_or_path,low_cpu_mem_usage=True, device="cuda:0", use_triton=False,inject_fused_attention=False,inject_fused_mlp=False)if torch.__version__ >= "2" and sys.platform != "win32":self.model = torch.compile(self.model)@property # @property装饰器将方法转换为属性def _llm_type(self) -> str:return "Llama2"def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str:print('prompt:',prompt)input_ids = self.tokenizer(prompt, return_tensors="pt",add_special_tokens=False).input_ids.to('cuda')generate_input = {"input_ids":input_ids,"max_new_tokens":1024,"do_sample":True,"top_k":50,"top_p":self.top_p,"temperature":self.temperature,"repetition_penalty":1.2,"eos_token_id":self.tokenizer.eos_token_id,"bos_token_id":self.tokenizer.bos_token_id,"pad_token_id":self.tokenizer.pad_token_id}generate_ids = self.model.generate(**generate_input)generate_ids = [item[len(input_ids[0]):-1] for item in generate_ids]result_message = self.tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]return result_message # 返回生成的文本
参考文献:
[1]https://github.com/FlagAlpha/Llama2-Chinese/blob/main/examples/llama2_for_langchain.py
[2]https://github.com/langchain-ai/langchain
相关文章:
Llama2-Chinese项目:7-外延能力LangChain集成
本文介绍了Llama2模型集成LangChain框架的具体实现,这样可更方便地基于Llama2开发文档检索、问答机器人和智能体应用等。 1.调用Llama2类 针对LangChain[1]框架封装的Llama2 LLM类见examples/llama2_for_langchain.py,调用代码如下所示:…...
ES6中数组的扩展
1. 扩展运算符 用三个点(...)表示,它如同rest参数的逆运算,将数组转为用逗号分隔的参数序列。扩展就是将一个集合分成一个个的。 console.log(...[1, 2, 3]); // 1, 2, 3可以用于函数调用 扩展运算符后还可以放置表达式 ...(x > 0 ? [a] : [])如…...
计算机考研 | 2016年 | 计算机组成原理真题
文章目录 【计算机组成原理2016年真题44题-9分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2016年真题45题-14分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2016年真题44题-9分】 假定CPU主频为5…...
Web版Photoshop来了,用到了哪些前端技术?
经过 Adobe 工程师多年来的努力,并与 Chrome 等浏览器供应商密切合作,通过 WebAssembly Emscripten、Web Components Lit、Service Workers Workbox 和新的 Web API 的支持,终于在近期推出了 Web 版 Photoshop(photoshop.adobe…...
FL Studio21.1.0水果中文官方网站
FL Studio 21.1.0官方中文版重磅发布纯正简体中文支持,更快捷的音频剪辑及素材管理器,多样主题随心换!Mac版新增对苹果M2/1家族芯片原生支持。DAW界萌神!极富二次元造型的水果娘FL chan通过FL插件Fruity Dance登场,为其…...
[BJDCTF2020]Mark loves cat
先用dirsearch扫一下,访问一下没有什么 需要设置线程 dirsearch -u http://8996e81f-a75c-4180-b0ad-226d97ba61b2.node4.buuoj.cn:81/ --timeout2 -t 1 -x 400,403,404,500,503,429使用githack python2 GitHack.py http://8996e81f-a75c-4180-b0ad-226d97ba61b2.…...
@SpringBootApplication注解的理解——如何排除自动装配 分布式情况下如何自动加载 nacos是怎么被发现的
前言 spring作为主流的 Java Web 开发的开源框架,是Java 世界最为成功的框架,持续不断深入认识spring框架是Java程序员不变的追求。 本篇博客介绍SpringBootApplicant注解的自动加载相关内容 其他相关的Spring博客文章列表如下: Spring基…...
HTTP的前世今生
史前时期 20 世纪 60 年代,美国国防部高等研究计划署(ARPA)建立了 ARPA 网,它有四个分布在各地的节点,被认为是如今互联网的“始祖”。 然后在 70 年代,基于对 ARPA 网的实践和思考,研究人员发…...
软件测试教程 自动化测试selenium篇(二)
掌握Selenium常用的API的使用 目录 一、webdriver API 1.1元素的定位 1.2 id定位 1.3name 定位 1.4tag name 定位和class name 定位 1.5CSS 定位 1.6XPath 定位 1.7link text定位 1.8Partial link text 定位 二、操作测试对象 2.1鼠标点击与键盘输入 2.2submit 提交…...
JavaSE入门--初始Java
文章目录 Java语言概述认识Java的main函数main函数示例运行Java程序认识注释认识标识符认识关键字 前言: 我从今天开始步入Java的学习,希望自己的博客可以带动小白学习,也能获得大佬的指点,日后能互相学习进步,都能如尝…...
leetcode做题笔记160. 相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…...
数学建模Matlab之检验与相关性分析
只要做C题基本上都会用到相关性分析、一般性检验等! 回归模型性能检验 下面讲一下回归模型的性能评估指标,用来衡量模型预测的准确性。下面是每个指标的简单解释以及它们的应用情境: 1. MAPE (平均绝对百分比误差) 描述: 衡量模型预测的相对…...
微服务网关:Spring Cloud Zuul 升级 Spring Cloud Gateway 的核心要点
1. 服务路由 1.1. Zuul 接收请求: 在routes路由规则中,根据path去匹配,如果匹配中,就使用对应的路由规则进行请求转发如果无法从routes中匹配,则根据path用“/”去截取第一段作为服务名进行请求转发,转发…...
视频讲解|含可再生能源的热电联供型微网经济运行优化(含确定性和源荷随机两部分代码)
1 主要内容 该视频为《含可再生能源的热电联供型微网经济运行优化》代码讲解内容,对应的资源下载链接为考虑源荷不确定性的热电联供微网优化-王锐matlab(含视频讲解),对该程序进行了详尽的讲解,基本做到句句分析和讲解…...
3种等待方式,让你学会Selenium设置自动化等待测试脚本!
一、Selenium脚本为什么要设置等待方式?——即他的应用背景到底是什么 应用Selenium时,浏览器加载过程中无法立即显示对应的页面元素从而无法进行元素操作,需设置一定的等待时间去等待元素的出现。(简单来说,就是设置…...
[Spring] Spring5——AOP 简介
目录 一、AOP 简介 1、什么是 AOP 二、AOP 底层原理 1、动态代理原理 2、基于接口的 JDK 动态代理 3、基于继承的 CGLib 动态代理 三、底层原理实现—— JDK 动态代理 1、使用 Proxy 类的方法创建代理对象 2、JDK 动态代理示例 四、AOP 操作术语 1、连接点 2、切入…...
C/C++ 动态规划面试算法题
1.买卖股票的最佳时机 https://blog.csdn.net/qq_41277628/article/details/113322136 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 1)的时候买入,在第 5 天(股票价格 6ÿ…...
kafka伪集群部署,使用zookeeper模式
1:拉去管理kafka界面UI镜像 docker pull provectuslabs/kafka-ui2:拉去管理kafka镜像 docker pull bitnami/kafka3:docker-compose.yml version: 3.8 services:zookeeper-1:container_name: zookeeper1image: bitnami/zookeeperports:- "2181:2181"environment:- …...
Postgresql 主从复制+主从切换(流复制)
pgsql有多种主从复制方式,推荐的是流复制 一、前置条件 1.至少两个pgsql数据库(可以是一台设备上的两个) 可以参考下面的教程 pgsql编译安装:pgsql 编译安装(linux) pgsql单机多开:pgsql 单机…...
java获取字符串集合中每个字符并且组成一个新的集合实现
直接怼代码,刚好碰到了这种需求,也是想了可久,其实想想也还是挺简单的 public static void main(String[] args) { // 原始字符串集合 List<String> originalList new ArrayList<>(); originalList.add("Hello"); …...
AdGuard浏览器扩展:企业级隐私保护与广告拦截解决方案
AdGuard浏览器扩展:企业级隐私保护与广告拦截解决方案 【免费下载链接】AdguardBrowserExtension AdGuard browser extension 项目地址: https://gitcode.com/gh_mirrors/ad/AdguardBrowserExtension AdGuard浏览器扩展是一款专注于隐私保护和广告拦截的开源…...
Qwen3-0.6B-FP8企业级部署教程:基于Dify打造AI应用平台
Qwen3-0.6B-FP8企业级部署教程:基于Dify打造AI应用平台 想快速搭建一个属于自己或团队的AI应用,但又觉得从零开发太复杂?今天,我们就来聊聊如何用Qwen3-0.6B-FP8这个轻量高效的模型,结合Dify这个强大的AI应用开发平台…...
AI辅助开发实战:如何高效对接智能客服系统并优化对话流程
最近在项目中对接智能客服系统,发现这事儿比想象中要复杂不少。接口文档动辄几十页,对话状态管理起来像一团乱麻,更别提还要优化对话流程提升用户体验了。好在现在有AI辅助开发工具,能帮我们省不少力气。今天就来分享一下…...
解决CLI工具接入DeepSeek API流式传输失败的实战指南
最近在对接DeepSeek的API时,遇到了一个挺典型的问题:用CLI工具调用API进行流式传输时,经常中途失败,返回的错误信息又比较模糊,调试起来很头疼。特别是在处理长文本生成或者需要连续对话的场景下,这个问题直…...
5分钟搞定OpenClaw飞书接入:Qwen3.5-9B对话机器人配置
5分钟搞定OpenClaw飞书接入:Qwen3.5-9B对话机器人配置 1. 为什么选择OpenClaw飞书Qwen3.5-9B组合 上周我在整理团队周报时,突然意识到一个痛点:每次都要反复切换浏览器、文档和聊天工具,手动复制粘贴信息。这种机械操作不仅浪费…...
Android息屏后定时器失效?手把手教你搞定华为/小米等主流机型后台保活
Android息屏定时器保活实战:主流机型后台运行全攻略 每次调试完的定时任务在息屏后莫名停止?这可能是Android开发者最头疼的问题之一。去年我们团队开发一款健康提醒应用时,就遇到了这个经典难题——用户锁屏后定时提醒功能完全失效ÿ…...
NCMconverter完整指南:3步解锁NCM音乐文件的终极播放方案
NCMconverter完整指南:3步解锁NCM音乐文件的终极播放方案 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 你是否曾经遇到过这样的情况:从音乐平台下载了心…...
Uvicorn与AWS CloudFormation StackSets:多账户部署的终极指南
Uvicorn与AWS CloudFormation StackSets:多账户部署的终极指南 【免费下载链接】uvicorn An ASGI web server, for Python. 🦄 项目地址: https://gitcode.com/GitHub_Trending/uv/uvicorn Uvicorn 作为一款高性能的 ASGI 服务器,为 P…...
网络工程师日记--企业内外网访问控制与网络架构搭建实践
前言企业网络搭建与运维中,合理的网络架构分层与精细化的访问控制策略是保障网络安全、提升业务可用性的核心。本文结合实际网络拓扑场景,从架构设计、需求分析、策略配置三个维度,讲解企业内网与外网的访问控制实现及网络架构搭建要点学习目…...
实战指南:如何用Python绘制强化学习中的Reward曲线(无阴影版)
1. 强化学习Reward曲线的作用与意义 在强化学习训练过程中,Reward曲线就像是我们观察模型学习进度的"晴雨表"。每次训练时,智能体通过与环境互动获得奖励值,这些数据点连起来就形成了Reward曲线。我刚开始接触强化学习时࿰…...
