什么,一不小心打造了一个基于大模型的操作系统

如果以大模型为Kernel, 形成一个新的操作系统,那么:

1. byzer-llm 是这个大模型操作系统的编程接口,有点类似Linux操作系统的C ABI。 

2. byzer-retrieval 也被集成进 byzer- llm 接口里,算是大模型操作系统的文件系统,应用可以通过python API 使用这个文件系统。

3. byzer-agent 算是应用开发框架,并且支持分布式,跨多机。

3. auto-coder 则是开发IDE 。

4. byzer-sql 则作为系统自带可以带的批,流,交互分析的数据库。

然后我简单画了一个图:

535458763a0f7f0bf9e5536acf232444.jpeg

看起来还挺像回事,没想到竟然差不多都覆盖全了。

ByzerLLM 介绍

这个是我从去年打造的一款基于Ray的大模型交互软件,涵盖了模型的预训练,微调,以及部署,还有Python编程API。更多细节可以关注我们项目地址:https://github.com/allwefantasy/byzer-llm

这里我们简单介绍下他提供的基于大模型的编程API。

import byzerllmbyzerllm.connect_cluster()@byzerllm.prompt(llm="gpt3_5_chat")
def hello_llm(name:str)->str:'''你好,我是{{ name }},你是谁?'''hello_llm("byzerllm")

执行后输出:

aaf4fb804170f7e18c9ad5b7d4ff97b6.jpeg

是不是很神奇?这就是 prompt 函数。可以看到,通过一个注解,所有和大模型的交互都被封装在一个函数里。你只要提供函数的 doc (prompt),并且支持使用 jinja2 语法渲染函数的参数。

如果你想知道发送给大模型的完整Prompt是啥?你可以这么用:

hello_llm.prompt("byzerllm")

f27fbc63ae0f970bc875cb607a25913b.jpeg

你也可以换个模型去支持 hello_llm 函数:

hello_llm.with_llm("新模型").prompt("byzerllm")

你是不是还经常被困扰的就是,因为大模型API一次输出有限制,而你正好要输出的内容又很长,该怎么办?byzerllm 也提供一个优雅的解决方案:

import byzerllm
from byzerllm import ByzerLLMllm = ByzerLLM.from_default_model("deepseek_chat")@byzerllm.prompt()
def tell_story() -> str:"""讲一个100字的故事。"""s = (tell_story.with_llm(llm).with_response_markers().options({"llm_config": {"max_length": 10}}).run()
)
print(s)

输出为:

91633b28413543f5a1cebfacccc3a0ba.png

这里,我们让prompt 函数 tell_story 给我们讲个故事,我们人为的限制了模型每次最多只能回复 10个字,但是依然我们让他把故事讲完了。怎么实现的呢?秘密在于那个 with_response_markers,你只要设置这个值,那么就可以自动突破限制,并且能够自动完美的结束。

byzer-retrieval

算是大模型kernel 的外挂,也就是我们现在说的RAG存储。你可以通过一条命令就完成它的下载和安装:

byzerllm storage start

现在,你就可以在多种情况使用它。比如你可以通过 byzerllm 提供的 Python API 直接和他交互,比如查找某个集群下的某个库表的数据,支持同时进行向量检索和全文检索,并且重排后返回新结果:

from byzerllm.records import SearchQuery
retrieval.search("cluster1",[SearchQuery(database="db1",table="table1",keyword="c",fields=["content"], filters={},vector=[1.0,2.0,3.0],vectorField="vector",limit=10)])## output: [{'name': 'a', 'raw_content': 'b c', '_id': 1, '_score': 0.033333335},
## {'name': 'd', 'raw_content': 'b e', '_id': 2, '_score': 0.016393442}]

或者被比如编程工具auto-coder 使用,一键构建知识库:

auto-coder doc build --source_dir /Users/allwefantasy/projects/doc_repo \
--model gpt3_5_chat \
--emb_model gpt_emb

然后查询:

auto-coder doc query --model gpt3_5_chat \
--emb_model gpt_emb \
--query "如何通过 byzerllm 部署 gpt 的向量模型,模型名字叫 gpt_emb "

输出:

=============RESPONSE==================2024-04-29 16:09:00.048 | INFO     | autocoder.utils.llm_client_interceptors:token_counter_interceptor:16 - Input tokens count: 0, Generated tokens count: 0
通过 byzerllm 部署 gpt 的向量模型,模型名字叫 gpt_emb,需要使用以下命令:```
byzerllm deploy --pretrained_model_type saas/openai \
--cpus_per_worker 0.001 \
--gpus_per_worker 0 \
--num_workers 1 \
--infer_params saas.api_key=${MODEL_OPENAI_TOKEN} saas.model=text-embedding-3-small \
--model gpt_emb
```=============CONTEXTS==================
/Users/allwefantasy/projects/doc_repo/deploy_models/run.txt

Byzer-Agent

Byzer-Agent框架和其他框架相比,主要聚焦在分布式Agent上,也就是你可以让一组Agent 分布在不同的节点上,并且实现通讯。

下面是我们实现的一个例子,你可以在 

https://github.com/allwefantasy/byzer-agent 这里看到。也就是你可以基于 byzer-agent 开发分布式agent应用。

f14e2c842c473e62157d1b8192c8493e.jpeg

auto-coder 

auto-coder 是一款 命令行 + YAML 的编程辅助工具。你描述完需求后,他可以自动找到合适的文件尽心修改,修改后合并会你的项目,并且给你提交commit。比如下面我希望对一个项目做如下描述的修改,基本可以一次过,不需要人工干预。auto-coder 也是基于 byzerllm API 试下和大模型交互的。

8108799c7ba7cf28e783de40f431291a.png

byzer-sql

Byzer-SQL 支持使用SQL 进行数据分析,批处理,流式计算。并且通过 byzerllm, 它能够将任意主流大模型注册成 SQL 函数。

比如,我可以加载图片:

31dcfd7b86e6e746c2de3c2e76a0bc0e.png

然后用一条SQL语句就把这些图片全部转换成文字:

4ddb051b488cd243453e8e0e0f9cd508.png

通过 Byzer-SQL,你可以很方便的对数据使用大模型来处理,也可以助力你完成数据分析,比如通过SQL实时提取一些数据,然后提取的数据直接在SQL中让大模型做解读:

d4949ed2951451d0ea69f73d69760d4c.png

解读结果:

071d322eec3fbeb4c966b99921358bcc.png

总结

欢迎大家组合使用。

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

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

相关文章

pytorch 自定义学习率更新 Poly

Poly 学习率调整策略需要继承_LRScheduler类,该类包含三个重要属性和两个重要方法 学习率与batch-size的关系 一般来说,batch-size的大小一般与学习率的大小成正比。batch-size越大一般意味着算法收敛方向的置信度越大,也可以选择较大的学…

STM32快速入门(ADC数模转换)

STM32快速入门(ADC数模转换) 前言 ADC数模转换存在的意义就是将一些温度传感器、各自数据传感器产生的模拟信号转换成方便识别和计算的数字信号。 导航 图24 通用定时器框图: 图片截取自STM32 F1XX中文参考手册。还是以框图为中心&#x…

FinalShell导出服务器配置信息密码password是加密的,如何解密?

本章教程,主要实现了一个小的功能,对FinalShell导出的配置信息,进行解密。 FinalShell导出之后,会产生一个json文件,例如下面这种json格式,里面记录了服务器的IP地址,端口和密码,里面的密码是经过加密处理的,本文主要利用java代码实现对这个password进行解密还原。 {&…

(论文翻译)Coordinate Attention for Efficient Mobile Network Design(坐标注意力 CVPR2021)

Coordinate Attention for Efficient Mobile Network Design(CVPR2021) 文章目录 Coordinate Attention for Efficient Mobile Network Design(CVPR2021)摘要1.引言2.相关工作3.方法:Coordinate Attention3.1.Revisit …

【c++】哈希>unordered容器哈希表哈希桶哈希的应用详解

主页:醋溜马桶圈-CSDN博客 专栏:c_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com 目录 1. unordered系列关联式容器 1.1 unordered_map 1.1.1 unordered_map的文档介绍 1.1.2 unordered_map的接口说明 1.1.2.1 unordered_m…

Java学习 - Maven - 常用命令(学习精选)

前言 在上一篇文章中,我们对 Maven 有了初步的了解,包括它的定义、安装步骤以及一些基本的配置方法。Maven 是一个强大的项目管理工具,它可以帮助开发者自动化构建过程,并且管理项目的依赖关系。 今天,我们将深入探讨…

上位机图像处理和嵌入式模块部署(f407 mcu和其他mcu品类的选择)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 很多朋友读书的时候学的是stm32,工作中用的也是stm32。这本来问题不大,但是过去两三年的经历告诉我们,mcu的使用…

【设计模式】行为型设计模式之 职责链模式,探究过滤器、拦截器、Mybatis插件的底层原理

一、介绍 职责链模式在开发场景中经常被用到,例如框架的过滤器、拦截器、还有 Netty 的编解码器等都是典型的职责链模式的应用。 标准定义 GOF 定义:将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求,将这些接收对象…

k8s小型实验模拟

(1)Kubernetes 区域可采用 Kubeadm 方式进行安装。(5分) (2)要求在 Kubernetes 环境中,通过yaml文件的方式,创建2个Nginx Pod分别放置在两个不同的节点上,Pod使用hostPat…

Java | Leetcode Java题解之第139题单词拆分

题目&#xff1a; 题解&#xff1a; public class Solution {public boolean wordBreak(String s, List<String> wordDict) {Set<String> wordDictSet new HashSet(wordDict);boolean[] dp new boolean[s.length() 1];dp[0] true;for (int i 1; i < s.len…

JimuReport 积木报表 v1.7.52 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…

智能变电站网络报文记录及故障录波分析装置

是基于Intel X86、PowerPC、FPGA等技术的高度集成化的硬件平台&#xff0c;采用了高性能CPU无风扇散热、网络数据采集、高速数据压缩存储加密等多种技术&#xff0c;实现了高性能计算、多端口同步高速数据采集、数据实时分析、大容量数据存储等功能。 ● 在满足工业标准的同时&…

数据结构 -- 树状数组

前言 树状数组或二叉索引树&#xff08;Binary Indexed Tree&#xff09;&#xff0c;又以其发明者命名为 Fenwick 树。其初衷是解决数据压缩里的累积频率的计算问题&#xff0c;现多用于高效计算数列的前缀和、区间和。它可以以 O(logn) 的时间得到任意前缀和。并同时支持在 …

Kali Linux 2024.2 释出

渗透测试发行版 Kali Linux 释出了最新的 2024.2。 主要新特性包括&#xff1a;桌面环境更新到 GNOME 46&#xff0c;Xfce 环境加入 HiDPI 模式&#xff0c;更新了网络侦察工具 AutoRecon&#xff0c;监视 Linux 进程的命令行工具 pspy&#xff0c;提取和显示 CVE 信息的 Splo…

项目验收总体计划书(实际项目验收原件参考Word)

测试目标&#xff1a;确保项目的需求分析说明书中的所有功能需求都已实现&#xff0c;且能正常运行&#xff1b;确保项目的业务流程符合用户和产品设计要求&#xff1b;确保项目的界面美观、风格一致、易学习、易操作、易理解。 软件全套文档过去进主页。 一、 前言 &#xff0…

Unity 编辑器扩展,获取目录下所有的预制件

先看演示效果 实现方案 1创建几个用于测试的cube 2&#xff0c;创建一个Editor脚本 3&#xff0c;编写脚本内容 附上源码 using UnityEditor; using UnityEngine;public class GetPrefeb : EditorWindow {private string folderPath "Assets/Resources"; // 指定预…

[FSCTF 2023]Tea_apk

得到密文和密钥 import base64 from ctypes import c_uint32import libnumDELTA 0x9E3779B9def decrypt(v, n, k):rounds 6 int(52 / n)sum c_uint32(rounds * DELTA)y v[0].valuewhile rounds > 0:e (sum.value >> 2) & 3p n - 1while p > 0:z v[p …

Django 连接mysql数据库配置

1&#xff0c;提前创建注册的app1应用 Test/Test/settings.py python manage.py startapp app1 2&#xff0c;配置mysql数据库连接 Test/Test/settings.py DATABASES {default: {ENGINE: django.db.backends.mysql,# 数据库名字NAME: db1,# 连接mysql数据库用户名USER: ro…

Python 基于阿里云的OSS对象存储服务实现本地文件上云框架

Python 基于阿里云的OSS对象存储服务实现将文件上云框架 文章目录 Python 基于阿里云的OSS对象存储服务实现将文件上云框架一、前言二、阿里云配置1、获取用户AKEY和AKeySecret2、创建Bucket 三、Python 阿里云oss上云框架1、安装oss2依赖库2、阿里云oss python 一、前言 未来…

2024年CKA模拟系统制作 | step-by-step | 1、基础环境准备

目录 一、软件环境 二、虚拟网络环境准备 1、编辑虚拟网络 2、网络设置 三、新建虚拟主机 1、新建目录 2、新建虚拟主机 四、系统安装 1、装载系统镜像 2、开启虚拟机 3、选择语言 4、键盘选择 5、网络配置 6、代理设置 7、设置软件源 8、存储设置 9、名称设置 …