PyLMKit(6):大模型使用(API型和本地开源模型)

日期:2023-12-6

PyLMKit目前集成了LLM模型有两种类型:

  • API付费调用型
  • 本地开源模型下载部署

1.API型LLM模型使用教程

1.1.申请 API KEY

根据你想使用的大模型的官网,注册账号,并申请API KEY,如果需要付费调用,那么还需要进行充值或开通相应服务。

1.2.配置 API KEY

(1)一个方便的方法是创建一个新的.env文件,并在其中配置所有的API密钥信息,从而方便地使用不同的模型。.env文件的格式如下:

openai_api_key = ""  # OpenAIQIANFAN_AK = ""  # 百度-千帆
QIANFAN_SK = ""DASHSCOPE_API_KEY = ""  # 阿里-通义spark_appid = ""  # 科大讯飞-星火
spark_apikey = ""
spark_apisecret = ""
spark_domain = "generalv3"  # generalv2zhipu_apikey = ""  # 清华-智谱AIbaichuan_api_key = ""  # 百川
baichuan_secret_key = ""hunyuan_app_id = ""  # 腾讯-混元
hunyuan_secret_id = ""
hunyuan_secret_key = ""

加载.env文件的方法如下(建议将.env文件放置在与您运行的.py文件相同的路径下)。

from dotenv import load_dotenv# load .env
load_dotenv()

(2)另一种方法是通过os.environ进行配置,下面是一个例子:

import os# openai
os.environ['openai_api_key'] = ""# 百度
os.environ['qianfan_ak'] = ""
os.environ['qianfan_sk'] = ""

1.3.模型调用

PyLMKit支持两种调用方式:

  • 普通模式:invoke(query)
  • 流式模式:stream(query)

其中,query表示用户输入内容,简单例子如下:

from pylmkit.llms import ChatQianfan  # 百度-千帆
from pylmkit.llms import ChatSpark  # 讯飞-星火
from pylmkit.llms import ChatZhipu  # 清华-智谱
from pylmkit.llms import ChatHunyuan  # 腾讯-混元
from pylmkit.llms import ChatBaichuan  # 百川
from pylmkit.llms import ChatTongyi  # 阿里-通义
from pylmkit.llms import ChatOpenAI  # OpenAI
from dotenv import load_dotenv# 加载 .env
load_dotenv()
# 加载模型
model = ChatQianfan()# 普通模式
res = model.invoke(query="如何学习python?")
print(res)# 流式模式
res = model.stream(query="如何学习python?")
for i in res:print(i)

2.本地开源LLM模型部署和调用

2.1.开源模型下载

本案例采用一个很小的模型作为例子,让大多数人都能成功运行这个Demo。这个Demo在CPU环境也能成功运行,并且内存占用小,模型名称为 Qwen/Qwen-1_8B-Chat,更多
模型名称,可以去魔搭社区去找相应的模型,链接:魔搭社区-文本生成

预先安装 modelscope 依赖包

pip install modelscope

下载指定开源模型

from pylmkit.llms import LocalLLMModelLocalLLMModel(model_path='Qwen/Qwen-1_8B-Chat',  # 模型名称tokenizer_kwargs={"revision": 'master'},  model_kwargs={"revision": 'master'},language='zh',  # zh 表示使用国内环境下载,速度快
)

下载好的效果如下:
在这里插入图片描述

2.2.拷贝文件夹到指定位置

将下载模型及文件拷贝到自己想要的位置。一般采用上述下载方式,模型都会下载缓存到 C 盘,缓存的位置一般在:C:\Users\你的用户名\.cache\modelscope\hub
将刚刚下载的qwen/Qwen-1_8B-Chat文件夹剪切保存到 D:/mycode_llm/ (这里举个例子,可以自定义)路径下,主要避免文件太大占满 C 盘。

2.3.安装该开源模型的依赖库

这一步骤很重要,一方面要保证你的CUDA环境配置正确、内存足够,即硬件资源得够(当然,CPU环境也可以跑一些模型);另一方面则需要到开源模型的github或者根据其它教程,安装依赖包和推理加速等依赖文件。

一般在下载的模型文件夹里,会有一个README.md文件,这是一个关于模型基本信息和安装的说明书,不懂安装依赖库的同学可以详细参照着这个教程来安装,比如Qwen/Qwen-1_8B-Chat文件夹内容截图如下:

在这里插入图片描述

这个步骤做好了,下一步骤才能正确运行模型,不然可能会遇到大量BUG,那么这个时候就需要一个一个排查和解决。

2.4.加载本地模型并使用

from pylmkit.llms import LocalLLMModelmodel = LocalLLMModel(model_path='D:/mycode_llm/qwen/Qwen-1_8B-Chat',  # 前面保存的模型文件路径tokenizer_kwargs={"revision": 'master'},model_kwargs={"revision": 'master'},language='zh')# 普通模式
res = model.invoke(query="如何学习python?")
print(">>>invoke ", res)# 流式模式
res = model.stream(query="如何学习python?")
for i in res:print(">>>stream ", i)

效果如下

在这里插入图片描述

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

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

相关文章

PyTorch机器学习与深度学习实践技术应用

近年来,随着AlphaGo、无人驾驶汽车、医学影像智慧辅助诊疗、ImageNet竞赛等热点事件的发生,人工智能迎来了新一轮的发展浪潮。尤其是深度学习技术,在许多行业都取得了颠覆性的成果。另外,近年来,Pytorch深度学习框架受…

html通过CDN引入Vue组件抽出复用

html通过CDN引入Vue组件抽出复用 近期遇到个需求,就是需要在.net MVC的项目中,对已有的项目的首页进行优化,也就是写原生html和js。但是咱是一个写前端的,写html还可以,.net的话,开发也不方便,还…

idea开发环境配置

idea重新安装后,配置的东西还挺多的,这里简单记录一下。 1、基础配置 1.1、主题、背景、主题字体大小 1.2、默认字体设置 控制台默认编码设置: 全局文件默认编码设置: 2、构建、编译、部署配置 说明:本地装了JD…

谷歌刚刚发布了Gemini 1.0,采用了OpenAI的GPT4

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 对于谷歌和安卓来说,这是一个重要时刻。谷歌刚刚发布了 Gemini 1.0,这是其最新的LLM,它采用了 OpenAI 的 GPT4。 共有三种不同…

go语言 | etcd源码导读(一)

参考 本文参考https://zhuanlan.zhihu.com/p/600893553 https://www.topgoer.com/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C/go%E6%93%8D%E4%BD%9Cetcd/etcd%E4%BB%8B%E7%BB%8D.html 前沿etcd 与 raft etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系…

Android--Jetpack--Databinding详解

不经一番寒彻骨,怎得梅花扑鼻香 一,定义 DataBinding, 又名数据绑定,是Android开发中非常重要的基础技术,它可以将UI组件和数据模型连接起来,使得在数据模型发生变化时,UI组件自动更新。是 MVVM 模式在 An…

Linux-centos上如何配置管理NFS服务器?

Linux/centos上如何配置管理NFS服务器? 1 NFS基础了解 NFS(Network File System)即文件操作系统;NFS允许网络中不同计算机相互之间共享资源。 1.1 NFS概述 1980年由SUN发展出来的在UNIX&Linux系统间实现文件共享的一种方法…

计算机组成原理-数据寻址-(相对寻址 基址寻址 变址寻址 )

文章目录 指令寻址vs数据寻址总览偏移寻址基址寻址基址寻址的作用变址寻址变址寻址的作用基址&变址复合寻址相对寻址相对寻址的作用 总结硬件如何实现数的比较 指令寻址vs数据寻址 总览 偏移寻址 变址寄存器:IX 基址寄存器:BR 基址寻址 没有基址…

GitHub工业级开源软件:基于网络的过程可视化(SCADA/HMI/仪表板)

GitHub工业级开源软件:基于网络的过程可视化(SCADA/HMI/仪表板)  作者:本站编辑  2023-11-25 06:52:35  117 大家好,我是 Fun-Fun君,每天介绍github上最有价值的开源项目 今天介绍 FUXA 基于网络的过程可视化(SCADA/HMI/仪表板)软件 github地址:…

ChatGPT能帮助--掌握各种AI绘图工具,随意生成各类型性图像

2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

Camunda 7.x 系列【60】流程分类

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 前言2. 案例演示2.1 后端2.2 前端2.3 测试1. 前言 钉钉中的OA审批分类: 企业级的业务…

UDP多人群聊

一.创建类 二.类 1.Liao类 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.IOException; import java.lang.String;public class Liao extends JFrame{private static final int DEFAULT_PORT8899;private JLabel st…

【musl-pwn】msul-pwn 刷题记录 -- musl libc 1.2.2

前言 本文不分析 musl libc 相关源码,仅仅为刷题记录,请读者自行学习相关知识(看看源码就行了,代码量也不大) starCTF2022_babynote 保护:保护全开 程序与漏洞分析: 程序实现了一个菜单堆&…

自适应局部降噪滤波器的python实现-------冈萨雷斯数字图像处理

自适应局部降噪滤波器 自适应局部降噪滤波器是一种信号处理技术,用于降低图像或信号中的噪声水平,同时保留图像或信号的细节。其原理基于局部区域内信号的统计特性和噪声的特征,通过动态调整滤波器的参数来适应不同区域的信号和噪声属性。 自…

Day52力扣打卡

打卡记录 Collapsing Strings&#xff08;Trie树&#xff09; 链接 #include <iostream> #include <algorithm> using namespace std; const int N 2e6 10; int son[N][26], idx, cnt1[N], cnt2[N]; int main() {auto insert [&](string& str, int* c…

【Qt】在表格QTableWidget或者QTableView中,当主键Id存在时更新数据,不存在时添加数据解决方案

问题 有时在开发中&#xff0c;表格需要显示数据&#xff0c;每一行呢&#xff0c;需要记录对应的id。 当更新表格数据时&#xff0c;会根据id进行更新&#xff0c;id存在就更新行数据&#xff0c;不存在就添加一行新数据。 解决方案 如何知道id存在还是不存在呢&#xff1f…

记一次CDH集群迁移产生的问题——HIVE

背景 生产环境CDH集群迁移到新的环境&#xff0c;迁移之后使用Hive Client方执行任务一直失败。 问题1&#xff1a;metadata.SessionHiveMetaStoreClient 产生报错&#xff1a; FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.Ru…

车联网架构设计(二)_消息缓存

在上一篇博客车联网架构设计(一)_消息平台的搭建-CSDN博客中&#xff0c;我介绍了车联网平台需要实现的一些功能&#xff0c;并介绍了如何用EMQXHAPROXY来搭建一个MQTT消息平台。车联网平台的应用需要消费车辆发布的消息&#xff0c;同时也会下发消息给车辆&#xff0c;以实现车…

SpringBoot 属性配置解析

属性配置介绍 spring官方提供的17中属性配置的方式 Devtools全局配置测试环境TestPropertySource注解测试环境properties属性命令行参数SPRING_APPLICATION_JSON属性ServletConfig初始化参数ServletContext初始化参数JNDI属性JAVA系统属性操作系统环境变量RandomValueProperty…

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含pytho、JS工程源码)+数据集+模型(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境微信开发者工具OneNET云平台 相关其它博客工程源代码下载其它资料下载 前言 本项目基于Keras框架&#xff0c;引入CNN进行模型训练&#xff0c;采用Dropout梯度…