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

如果以大模型为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 byzerllm


byzerllm.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 ByzerLLM


llm = 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

总结

欢迎大家组合使用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何删除电脑端口映射?

在使用电脑进行网络连接时,有时需要进行端口映射以实现不同设备之间的信息远程通信。当这些端口映射不再需要时,我们需要及时删除它们以确保网络的安全和稳定。本文将介绍如何删除电脑端口映射的方法。 操作系统自带的工具 大多数操作系统都提供了自带…

经典文献阅读之--Online Monocular Lane Mapping(使用Catmull-Rom样条曲线完成在线单目车道建图)

0. 简介 对于单目摄像头完成SLAM建图这类操作,对于自动驾驶行业非常重要,《Online Monocular Lane Mapping Using Catmull-Rom Spline》介绍了一种仅依靠单个摄像头和里程计生成基于样条的在线单目车道建图方法。我们提出的技术将车道关联过程建模为一个…

用QT6、QML、FFMPEG写一个有快进功能的影音播放程序

程序如图: 开发环境在ubuntu下,如果改windows下,也就改一下cmakelists.txt。windows下如何配置ffmpeg以前的文章有写,不再重复。 源程序如下: GitHub - wangz1155/ffmpegAudioThread: 用qt6,qml&#xff…

API测试工具

apifox 微信扫描登录 不推荐: Download Postman

数染色体 算法 python源码

效果图如下: 原图: 完整代码: import cv2 import numpy as np from skimage import measure import randomimage cv2.imread(113.jpg, cv2.IMREAD_GRAYSCALE)blurred_img cv2.GaussianBlur(image, (5, 5), 0)_, binary_image cv2.thresho…

Python编程基础4

模块:模块支持从逻辑上组织Python代码,当代码量变得非常大的时候,最好把代码分成一些有组织的代码段。代码片段相互间有一定的联系,可能是一个包含数据成员和方法的类、函数、变量。 搜索路径:模块的导入需要一个叫做‘…

MacOS 安装C语言版TensorFlow

文章目录 安装C语言版TensorFlow解压归档环境变量c_api.hC语言示例 安装C语言版TensorFlow 官方文档:https://tensorflow.google.cn/install/lang_c?hlzh-cnTensorFlow 提供了一个 C API,该 API 可用于为其他语言构建绑定。该 API 在 c_api.h 中定义&a…

个人博客搭建

liupengs blogs 环境搭建 版本环境:hexo3.8.0 node12.17.0 https://www.cnblogs.com/fengxiongZz/p/7707219.html 搭建 https://www.cnblogs.com/fengxiongZz/p/7707568.html 进阶 https://www.cnblogs.com/chengxs/p/7496265.html https://www.cnbl…

《Windows API每日一练》

2.2.8 第15练:处理WM_CLOSE消息 /*------------------------------------------------------------------------ 015 编程达人win32 API每日一练 第15个例子WM_CLOSE.C:回调函数---处理WM_CLOSE消息 WM_CLOSE消息 DestroyWindow函数 注意&#xf…

Qt5/6使用SqlServer用户连接操作SqlServer数据库

网上下载SQLServer2022express版数据库,这里没啥可说的,随你喜欢,也可以下载Develop版本。安装完后,我们可以直接连接尝试, 不过一般来说,还是下载SQLServer管理工具来连接数据更加方便。 所以直接下载ssms, 我在用的时候,一开始只能用Windows身份登录。 所以首先,我…

判断经纬度是否在某个城市内

一、从高德获取指定城市边界经纬度信息 通过apifox操作&#xff1a; 二、引入第三方jar包&#xff1a; maven地址&#xff1a;https://mvnrepository.com/ maven依赖&#xff1a; <dependency><groupId>org.locationtech.jts</groupId><artifactId>…

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

Coordinate Attention for Efficient Mobile Network Design&#xff08;CVPR2021&#xff09; 文章目录 Coordinate Attention for Efficient Mobile Network Design&#xff08;CVPR2021&#xff09;摘要1.引言2.相关工作3.方法&#xff1a;Coordinate Attention3.1.Revisit …

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

题目&#xff1a; 题解&#xff1a; func wordBreak(s string, wordDict []string) bool {wordDictSet : make(map[string]bool)for _, w : range wordDict {wordDictSet[w] true}dp : make([]bool, len(s) 1)dp[0] truefor i : 1; i < len(s); i {for j : 0; j < i;…

DBeaver连接MySQL提示“Public Key Retrieval is not allowed“问题的解决方式

问题描述 客户端root用户连接数据库出现出现Public Key Retrieval is not allowed 原因分析&#xff1a; 加上allowPublicKeyRetrievalfalse&#xff1a; 解决方案&#xff1a; allowPublicKeyRetrievaltrue&#xff1a;

ICLR24大模型提示(8) | 退一步思考:在大型语言模型中通过抽象引发推理

【摘要】我们提出了一种简单的提示技术&#xff0c;即后退提示法&#xff0c;它使 LLM 能够进行抽象&#xff0c;从包含特定细节的实例中得出高级概念和第一原理。通过使用概念和原理来指导推理&#xff0c;LLM 显著提高了遵循正确推理路径解决问题的能力。我们使用 PaLM-2L、G…

Go微服务: 分布式之通过可靠消息实现最终一致性

通过可靠消息实现最终一致性 可靠消息&#xff0c;就是靠普消息&#xff0c;还是基于之前的这个案例 比如这个订单服务&#xff0c;无论你是先发送消息&#xff0c;还是先新建订单&#xff0c;它其实都是发送的不可靠消息就是说如果这个消息&#xff0c;像mysql事务那样&#…

一维信号循环平移小波降噪方法(MATLAB R2021b)

循环平移算法由Coifman和Donoho最先提出&#xff0c;其基本原理是将信号进行循环平移&#xff0c;将平移后的信号降噪后再做逆循环平移&#xff0c;改变平移位数&#xff0c;多次重复上述运算&#xff0c;将获得的所有结果求平均&#xff0c;得到最后的结果。 在理想情况下&am…

【C++】深入理解decltype和decltype(auto)

深入理解decltype和decltype&#xff08;auto&#xff09; 一、decltype语法介绍二、decltype的推导规则1. expr不加括号2. expr加上括号 三、关于decltype的CV属性推导四、 decltype(auto) 的使用 一、decltype语法介绍 decltype关键字是C11新标准引入的关键字&#xff0c;它…

html--酷炫背景引导主页

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>ZZVIPS酷炫背景引导主页</title><meta name"viewport" content"widthdevice-width,initial-scale1,maximum-scale1,user-scala…

社区贡献者分享 | OpenVINO™ 代码贡献助力我的开源之路

点击蓝字 关注我们,让开发变得更有趣 作者 | 占俊坚 排版 | 李擎 摘要 在 OpenVINO™ 2024.1 release 版本中&#xff0c;我为 OpenVINO™ 添加了 TensorFlow 中的 Rint operation 以及 PyTorch 中的 aten::bucketize operation 的支持&#xff0c;在此分享我的实现过程&#x…