Skip to main content

pylmkit: Help users quickly build practical large model applications!

Project description

PyLMKit

README(English version)

pylmkit 是一个旨在构建或集成具有实际价值的大模型(LM)应用程序的项目,旨在帮助用户快速构建符合其业务需求的应用程序。

快速安装

pip install -U pylmkit

文档

功能

  • 1.角色扮演:通过设置角色模板并结合在线搜索、记忆和知识库功能,实现了典型的对话类的功能应用。RolePlay角色扮演是一种基础功能,也是重要的功能。现在在各大大模型企业的APP中可以看到很多关于短视频文案、小红书文案、讲故事等这些功能的底层逻辑是基于角色扮演中设置不同的角色模板实现的。

PyLMKit RolePlay

  • 2.RAG(Retrieval-Augmented Generation,检索增强生成)是一种利用知识库检索的方法,提供与用户查询相关的内容,从而增强模型答案的准确性和特异性。RAG包括本地知识库、基于网络的知识库、记忆知识库和数据库知识库。

PyLMKit RAG

  • 3.长文本摘要提取:支持短文本、长文本摘要提取。2024-3-16 更新

    • 单个文本摘要提取:summary
    • 批量文本摘要提取:batch_summary

样例如下:

import os
from pylmkit.llms import ChatQianfan
from pylmkit.app import summary, batch_summary


# 百度
os.environ['qianfan_ak'] = ""
os.environ['qianfan_sk'] = ""
os.environ['model'] = ""


def worker(chunk):
    return model.invoke(f"提取下面内容的摘要:\n\ncontent: {chunk}")


model = ChatQianfan()
text = """
对话机器人 ChatGLM(alpha 内测版:QAGLM),这是一个初具问答和对话功能的千亿中
英语言模型, 并针对中文进行了优化,现已开启邀请制内测,后续还会逐步扩大内测范围。
与此同时,继开源 GLM-130B 千亿基座模型之后,我们正式开源最新的中英双语对话 GLM 模
型: ChatGLM-6B,结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量
化级别下最低只需 6GB 显存)。经过约 1T 标识符的中英双语训练,辅以监督微调、 反馈自
助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 虽然规模不及千亿模型,但
大大降低了用户部署的门槛,并且已经能生成相当符合人类偏好的回答。
"""
# 单个文本摘要:支持短文本、长文本摘要提取
summary1 = summary(text,
                   worker,
                   max_chunk_size=1000,  # 当大于最大长度时,将采用分段提取摘要,然后在汇总摘要
                   show_progress=True,  # 进度条
                   max_summary_size=500,  # 当汇总后的摘要长度大于最大长度时,将采用分段提取摘要,然后在汇总摘要
                   max_workers=5  # 最大线程数
                   )
print(summary1)

# 批量文本摘要:支持短文本、长文本摘要提取
summary2 = batch_summary(
    texts=[text[:int(len(text)/2)], text[int(len(text)/2):]],
    worker=worker,
    max_chunk_size=1000,  # 当大于最大长度时,将采用分段提取摘要,然后在汇总摘要
    show_progress=True,  # 进度条
    max_summary_size=500,  # 当汇总后的摘要长度大于最大长度时,将采用分段提取摘要,然后在汇总摘要
    max_workers=5  # 最大线程数
)
print(summary2)
  • 4.数据库agents,更新中

  • 5.其它功能更新中

快速开始

PyLMKit QuickStart(English version)

PyLMKit 快速开始教程 (简体中文版)

LLM模型使用

PyLMKit目前集成了LLM模型分为:

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

API 调用型

(1)首先配置好 API KEY,便于调用LLM模型。

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

openai_api_key = ""  # OpenAI

QIANFAN_AK = ""  # 百度-千帆
QIANFAN_SK = ""

DASHSCOPE_API_KEY = ""  # 阿里-通义

spark_appid = ""  # 科大讯飞-星火
spark_apikey = ""
spark_apisecret = ""
spark_domain = "generalv3"  # generalv2

zhipu_apikey = ""  # 清华-智谱AI

baichuan_api_key = ""  # 百川
baichuan_secret_key = ""

hunyuan_app_id = ""  # 腾讯-混元
hunyuan_secret_id = ""
hunyuan_secret_key = ""

(2)LLM模型有两种调用方式:

  • 普通模式: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)

本地开源模型部署和调用

预先安装 modelscope 依赖包

pip install modelscope
  • (1)开源模型下载

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

from pylmkit.llms import LocalLLMModel

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

下载好的效果如下:

local_model_download.png

  • (2)将下载模型及文件拷贝到自己想要的位置

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

  • (3)安装该开源模型的依赖库

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

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

local_model_readme.png

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

  • (4)加载本地模型并使用
from pylmkit.llms import LocalLLMModel


model = 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)

效果如下

local_model_output.png

开源协议

Apache License Version 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylmkit-0.0.19.tar.gz (35.8 kB view details)

Uploaded Source

File details

Details for the file pylmkit-0.0.19.tar.gz.

File metadata

  • Download URL: pylmkit-0.0.19.tar.gz
  • Upload date:
  • Size: 35.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pylmkit-0.0.19.tar.gz
Algorithm Hash digest
SHA256 d6d43bd78824aadb62e5e2e5937c853df4fc6226ce6a2adff41c7e16409704b0
MD5 d1cb93b595004079c949d2660426d87d
BLAKE2b-256 f00c393708743b69ecfb5001125079ffd795db3121fb86a4049a70bc70fb8b89

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page