PyLMKit(2):快速开始大模型应用开发

快速开始

  • GitHub:https://github.com/52phm/pylmkit
  • PyLMKit 官方教程
    • PyLMKit应用(online application)
    • English document
    • 中文文档

0.下载安装

pip install -U pylmkit --user

1.设置 API KEY

  • 一个方便的方法是创建一个新的.env文件,并在其中配置所有的API密钥信息,从而方便地使用不同的模型。.env文件的格式如下:
# OpenAI
openai_api_key = ""# 百度-千帆
QIANFAN_AK = ""
QIANFAN_SK = ""# 阿里-通义
DASHSCOPE_API_KEY = ""# 科大讯飞-星火
spark_appid = ""
spark_apikey = ""
spark_apisecret = ""
spark_domain = "generalv3"# 清华-智谱AI
zhipu_apikey = ""# 百川
baichuan_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()
  • 另一种方法是通过os.environ进行配置,下面是一个例子:
import os# openai
os.environ['openai_api_key'] = ""# 百度
os.environ['qianfan_ak'] = ""
os.environ['qianfan_sk'] = ""

2.LLM模型使用

LLM模型可以使用PyLMKit导入,也支持使用LangChain导入模型。导入其他模型例子:

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  # OpenAImodel = ChatOpenAI()# 普通模式
res = model.invoke(query="如何学习python?")
print(res)# 流式模式
res = model.stream(query="如何学习python?")
for i in res:print(i)

3.角色扮演应用

  • 角色模板

用户可根据自身情况调整角色模板。在模板中,{memory} 表示上下文记忆的位置,{search} 表示搜索引擎的内容,{query} 表示用户输入的问题。

  • 返回值

该算法返回两个值:“response”和“reference”。“response”表示返回的内容,“reference”表示引用信息,例如使用搜索引擎时对网页的引用。

from dotenv import load_dotenv
from pylmkit.app import RolePlay
from pylmkit.llms import ChatOpenAI
from pylmkit.memory import MemoryHistoryLength
from pylmkit.llms import ChatQianfan# load .env
load_dotenv()# load llm model
model = ChatOpenAI()
# model = ChatQianfan(model="ERNIE-Bot-turbo")# memory type
memory = MemoryHistoryLength(memory_length=500)# roleplay: Enable memory and search functions.
# rp = RolePlay(
#     role_template="{memory}\n {search}\n User question :{query}",
#     llm_model=model,
#     memory=memory,
#     online_search_kwargs={'topk': 2},
# )# roleplay: Only activate memory function.
rp = RolePlay(role_template="{memory}\n User question :{query}",llm_model=model,memory=memory,online_search_kwargs={},return_language='中文'
)while True:query = input("input...")response, refer = rp.invoke(query)print(response)

4.Streamlit Web 运行角色扮演应用

  • 步骤1: 创建一个新的.py文件,例如main.py。
from pylmkit import BaseWebUI
from dotenv import load_dotenv
from pylmkit.app import RolePlay
from pylmkit.llms import ChatOpenAI
from pylmkit.memory import MemoryHistoryLength
from pylmkit.llms import ChatQianfan# load .env
load_dotenv()# load llm model
model = ChatOpenAI()
# model = ChatQianfan(model="ERNIE-Bot-turbo")# memory type
memory = MemoryHistoryLength(memory_length=500, streamlit_web=True)  # set streamlit_web=True# roleplay: Only activate memory function.
rp = RolePlay(role_template="{memory}\n User question :{query}",llm_model=model,memory=memory,online_search_kwargs={},return_language='中文'
)# init web
web = BaseWebUI()
web.run(obj=rp.invoke,  # Designated main function.input_param=[{"label": "User input", "name": "query", "type": "chat"},  # type, chat text string bool float ...],output_param=[{'label': 'response content', 'name': 'ai', 'type': 'chat'},{'label': 'refer info', 'name': 'refer', 'type': 'refer'}  # type, chat refer text string bool float ...]
)
  • 步骤2: 运行web程序

在与main.py相同目录的终端命令行中,输入

streamlit run main.py

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

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

相关文章

mysql中int(10)和char(10),varchar(10)区别是什么?

整体对比表格 int(10)char(10)varchar(10)存储方式二进制整数字符集编码的字符串字符集编码的字符串存储空间固定为4字节固定为10字节根据实际使用长度变化,通常更小存储内容整数字符串(用空格填充)字符串(不需要填充)比较大小整数的比较字符串的字典序比较字符串的…

物流单管理系统软件物流单打印,物流单打印模板,佳易王物流快运单管理软件下载

物流单管理系统软件物流单打印,物流单打印模板,佳易王物流快运单管理软件下载 软件试用版下载或技术支持可以点击最下方官网卡片 上图:在物流开单时,可以先输入电话,如果之前存在该托运人信息,则可以一键…

高德Map

使用 官网:JS API 结合Vue使用 npm i amap/amap-jsapi-loader --saveimport AMapLoader from amap/amap-jsapi-loader;marker的属性、事件、方法 https://lbs.amap.com/api/javascript-api-v2/documentation#marker 自定义marker 为创建的 Marker 指定自定义图…

Motion 5 for Mac,释放创意,打造精彩视频特效!

Motion 5 for Mac是一款强大的视频后期特效处理软件,为Mac用户提供了无限的创意可能性。无论你是专业的影视制作人,还是想为个人视频添加独特特效的爱好者,Motion 5都能满足你的需求,让你的视频脱颖而出。 Motion 5提供了丰富多样…

【滑动窗口】将X减到0的最小操作数

将X减到0的最小操作数 1658. 将 x 减到 0 的最小操作数 - 力扣(LeetCode) 文章目录 将X减到0的最小操作数题目描述算法原理代码编写Java代码编写C代码编写 题目描述 给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 num…

webGIS使用JS,高德API完成的智慧校园项目路径规划

代码实现: //通过geojson对象来管理覆盖物,显示点geojson.addOverlay(marker)//保存数据(将geojson对象转换成标准的GeoJSON格式对象)saveData(geojson.toGeoJSON())})//从localstroage中读取数据function getData(){if(!localSto…

【HarmonyOS开发】ArkTs编译为SO包的流程记录

1、创建一个Static Library的静态模块 2、编写我们的SO控件 2.1 编译配置 {"apiType": "stageMode","buildOption": {"artifactType": "obfuscation"},"targets": [{"name": "default",&qu…

【FISCO BCOS】二十、多机部署区块链

目录 一、准备环境 二、开始搭建 三、检查节点 1.检查节点进程

Linux:查看端口占用的进程

命令 netstat -tunlp可以从图中看到,端口被那个进程占用,对应进程的pid是多少。

dart语言多线程遇到的问题:Isolate.spawnUri(),在真机调试中无法生成隔离

报错原因 [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: IsolateSpawnException: Unable to spawn isolate: Unsupported isolate URI: 未处理的异常:IsolateSpawnException:无法生成隔离:不支持隔离 URI&…

基于eBPF实现监控ssh登陆功能

以下是一个基于eBPF监控SSH登录的程序的示例代码&#xff0c;使用Python编写&#xff1a; python import os import ctypes from bcc import BPF # eBPF程序 bpf_text """ #include <uapi/linux/ptrace.h> #include <linux/sched.h> struct ssh…

递归实例化导致的栈溢出问题【简直蠢得出奇】

问题描述 今天在练习数据库增删改查&#xff0c;体验三层架构思想时&#xff0c;随便写了点DAO层代码&#xff0c;但服务器运行时竟然爆出了栈溢出的问题&#xff0c;说实话&#xff0c;空指针问题我还能放着耐心去代码里找找问题&#xff0c;但这个栈溢出&#xff0c;我之前就…

Vue学习笔记-Vuex基本使用

基本使用 初始化数据、配置actions、mutations&#xff0c;操作文件/store/index.js //index.js文件用于创建Vuex中最为核心的store对象 import Vue from vue import Vuex from vuex Vue.use(Vuex) //actions对象用于响应组件中的动作,专门负责业务逻辑 const actions {//函数…

Jetson Nano部署YOLOv5与Tensorrtx加速

一、烧录镜像 1、Jetson Nano烧写系统镜像 Jetson Nano是一款形状、外接口类似于树莓派的嵌入式主板&#xff0c;搭载了四核Cortex-A57处理器&#xff0c;GPU则是拥有128个NVIDIA CUDA核心的NVIDIA Maxwell架构显卡&#xff0c;内存为4GB的LPDDR4&#xff0c;存储则为16GB eM…

Postgresql和mysql的区别探究

PostgreSQL和MySQL是两个流行的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;具有各自的特点和优点。虽然两种数据库都可以处理大量数据&#xff0c;但在不同情况下&#xff0c;会有一些区别。下面将着重介绍PostgreSQL和MySQL的区别&#xff0c;并附带案例说…

入侵redis之准备---VMware上面安装部署centos7镜像系统【详细含云盘镜像】

入侵redis之准备—VMware上面安装部署centos7镜像系统【详细含云盘镜像 其他文章&#xff1a; 入侵redis并实现反弹shell控制【实战一】 学习大概步骤如下 第一步:先学习怎么安装部署kail系统服务器 入侵redis之准备—VMware安装部署kail镜像服务器【详细包含云盘镜像】 第二…

linux审计功能及规则 (audit.rule)

linux审计功能&#xff08;audit log&#xff09;是什么 audit是Linux自带的一套审计功能&#xff0c;可以监控我们日常的一些操作&#xff0c;然后将这些操作记录在audit.log中&#xff0c;方便我们查看日志。 审计规则是什么 在 /etc/audit/rules.d/audit.rules文件中&…

计网Lesson6 - IP 地址分类管理

文章目录 1. I P IP IP 地址定义2. I P v 4 IPv4 IPv4 的表示方法2.1 I P v 4 IPv4 IPv4 的分类编址法2.2 I P v 4 IPv4 IPv4 的划分子网法2.2.1 如何划分子网2.2.2 如何确定子网的借位数2.2.3 总结2.2.4 题目练习 2.3 I P v 4 IPv4 IPv4 的无分类编址法 1. I P IP IP 地…

04.里氏替换原则(Liskov Substitution Principle)

暴论&#xff1a;一般的&#xff0c;如果一个富二代不想着证明自己&#xff0c;那么他一辈子都会衣食无忧。 一言 里氏替换原则想告诉我们在继承过程中会遇到什么问题&#xff0c;以及继承有哪些注意事项。 概述 这是流传较广的一个段子&#xff1a; “一个坐拥万贯家财的富二…

亚马逊云科技Aurora MySQL在复制性能提升上的不断优化和尝试

前言 Amazon Aurora是亚马逊云科技自研的云原生关系数据库&#xff0c;它在提供和开源数据库MySQL、PostgreSQL的完好兼容性同时&#xff0c;也能够提供和商业数据库媲美的性能和可用性。 Aurora的性能提升不仅包含应用读写吞吐量的提升&#xff0c;也包含复制延迟的降低。一个…