专栏名称: GitHubStore
分享有意思的开源项目
目录
相关文章推荐
海南药闻  ·  2025年生物医用材料创新任务揭榜挂帅(第二 ... ·  6 小时前  
中国日报  ·  热搜第一!考研查分“像极了哪吒”?DeepS ... ·  12 小时前  
中国日报  ·  热搜第一!考研查分“像极了哪吒”?DeepS ... ·  12 小时前  
中国商报  ·  手机辐射真相来了! ·  13 小时前  
中国商报  ·  手机辐射真相来了! ·  13 小时前  
构力科技PKPM BIMBase  ·  央企担当 | ... ·  3 天前  
构力科技PKPM BIMBase  ·  央企担当 | ... ·  3 天前  
51好读  ›  专栏  ›  GitHubStore

低代码构建多Agent大模型应用的开发工具LazyLLM

GitHubStore  · 公众号  · 科技自媒体  · 2024-07-14 09:44

正文

项目简介

扫码 加入技术交流群,备注 开发语言-城市-昵称

合作请注明



LazyLLM提供了搭建应用的workflow,并为开发过程中的各个环节提供了许多标准流程和工具


支持: 一键部署所有模块的能力、跨平台兼容(无需修改代码即可一键切换IaaS平台)、网格搜索参数优化、模型微调、RAG常用组件、基础界面等(聊天界面、文档管理界面)


即使不了解大模型,也可以使用LazyLLM组建出包含多个Agent的AI应用。


LazyLLM是一款低代码构建 多Agent 大模型应用的开发工具,协助开发者用极低的成本构建复杂的AI应用,并可以持续的迭代优化效果。LazyLLM提供了便捷的搭建应用的workflow,并且为应用开发过程中的各个环节提供了大量的标准流程和工具。
基于LazyLLM的AI应用构建流程是 原型搭建 -> 数据回流 -> 迭代优化 ,即您可以先基于LazyLLM快速跑通应用的原型,再结合场景任务数据进行bad-case分析,然后对应用中的关键环节进行算法迭代和模型微调,进而逐步提升整个应用的效果。
用户文档 :https://lazyllm.readthedocs.io/
近期计划 :v0.2 PRD

二、特性

便捷的AI应用组装流程 :即使您不了解大模型,您仍然可以像搭积木一样,借助我们内置的数据流和功能模块,轻松组建包含多个Agent的AI应用。

复杂应用一键部署 我们提供一键部署所有模块的能力。具体就是:在POC阶段,LazyLLM通过一套轻量的网关机制,简化了多Agent应用的部署流程,解决了依次启动各个子模块(如LLM、Embedding等)服务并配置URL的问题,使整个过程更加顺畅高效。而在应用的发布阶段,LazyLLM则提供了一键封装镜像的能力,使得应用可以方便地利用k8s的网关、负载均衡、容错等能力。

跨平台兼容 :无需修改代码,即可一键切换IaaS平台,目前兼容裸金属服务器、开发机、Slurm集群、公有云等。这使得开发中的应用可以无缝迁移到其他IaaS平台,大大减少了代码修改的工作量。

支持网格搜索参数优化 :根据用户配置,自动尝试不同的基模型、召回策略和微调参数,对应用进行评测和优化。这使得超参数调优过程无需对应用代码进行大量侵入式修改,提高了调优效率,帮助用户快速找到最佳配置。

高效的模型微调 :支持对应用中的模型进行微调,持续提升应用效果。根据微调场景,自动选择最佳的微调框架和模型切分策略。这不仅简化了模型迭代的维护工作,还让算法研究员能够将更多精力集中在算法和数据迭代上,而无需处理繁琐的工程化任务。

三、使用指南

LazyLLM可用来构建常用的人工智能应用,下面给出一些例子。

3.1 对话机器人

# set environment variable: LAZYLLM_OPENAI_API_KEY=xx # or you can make a config file(~/.lazyllm/config.json) and add openai_api_key=xximport lazyllmt = lazyllm.OnlineChatModule(source="openai", stream=True)w = lazyllm.WebModule(t)w.start().wait()

如果你想使用一个本地部署的模型,请确保自己安装了至少一个推理框架(lightllm或vllm),然后代码如下:

import lazyllm# Model will be download automatically if you have an internet connectiont = lazyllm.TrainableModule('internlm2-chat-7b')w = lazyllm.WebModule(t)w.start().wait()


3.2 检索增强生成


import osimport lazyllmfrom lazyllm import pipeline, parallel, bind, _0, Document, Retriever, Reranker
prompt = '你将扮演一个人工智能问答助手的角色,完成一项对话任务。在这个任务中,你需要根据给定的上下文以及问题,给出你的回答。'
documents = Document(dataset_path='/file/to/yourpath', embed=lazyllm.TrainableModule('bge-large-zh-v1.5'))with pipeline() as ppl:    with parallel().sum as ppl.prl:        prl.retriever1 = Retriever(documents, parser='CoarseChunk', similarity_top_k=6)        prl.retriever2 = Retriever(documents, parser='SentenceDivider', similarity='chinese_bm25', similarity_top_k=6)    ppl.reranker = Reranker(types='ModuleReranker', model='bge-reranker-large') | bind(ppl.input, _0)    ppl.post_processer = lambda nodes: f'《{nodes[0].metadata["file_name"].split(".")[0]}{nodes[0].get_content()}' if len(nodes) > 0 else '未找到'    ppl.formatter = (lambda ctx, query: dict(context_str=ctx, query_str=query)) | bind(query=ppl.input)    ppl.llm = lazyllm.TrainableModule('internlm2-chat-7b').prompt(lazyllm.ChatPrompter(prompt, extro_keys=['context_str'])) mweb = lazyllm.WebModule(ppl, port=23456).start().wait()

3.3 故事创作

import lazyllmfrom lazyllm import pipeline, warp, bindfrom lazyllm.components.formatter import JsonFormatter
toc_prompt=""" 你现在是一个智能助手。你的任务是理解用户的输入,将大纲以列表嵌套字典的列表。每个字典包含一个 `title` 和 `describe`,其中 `title` 中需要用Markdown格式标清层级,`describe` `describe` 是对该段的描述和写作指导。
请根据以下用户输入生成相应的列表嵌套字典:
输出示例:[ { "title": "# 一级标题", "describe": "请详细描述此标题的内容,提供背景信息和核心观点。" }, { "title": "## 二级标题", "describe": "请详细描述标题的内容,提供具体的细节和例子来支持一级标题的观点。" }, { "title": "### 三级标题", "describe": "请详细描述标题的内容,深入分析并提供更多的细节和数据支持。" }]用户输入如下:"""
completion_prompt="""你现在是一个智能助手。你的任务是接收一个包含 `title``describe` 的字典,并根据 `describe` 中的指导展开写作输入示例:{ "title": "# 一级标题", "describe": "这是写作的描述。"}
输出:这是展开写作写的内容接收如下:
"""
writer_prompt = {"system": completion_prompt, "user": '{"title": {title}, "describe": {describe}}'}
with pipeline() as ppl:    ppl.outline_writer = lazyllm.OnlineChatModule(source="openai", stream=False).formatter(JsonFormatter()).prompt(toc_prompt)    ppl.story_generater = warp(lazyllm.OnlineChatModule(source="openai", stream=False).prompt(writer_prompt))    ppl.synthesizer = (lambda *storys, outlines: "\n".join([f"{o['title']}\n{s}" for s, o in zip(storys, outlines)])) | bind(outlines=ppl.outline_writer)
print(ppl({'query':'请帮我写一篇关于人工智能在医疗领域应用的文章。'}))


四、功能点

  1. 应用搭建 :定义了pipeline、parallel、diverter、if、switch、loop等工作流(Flow),开发者可以基于任意的函数和模块来快速搭建多Agent的AI应用。支持对组装好的多Agent应用进行一键部署,也支持对应用进行部分或者全部的更新。

  2. 跨平台 :支持用户在不同的算力平台上获得一致的使用体验。目前兼容裸金属、Slurm、SenseCore等多种算力平台。

  3. 支持大模型的微调和推理

  • 支持微调服务:GPT、SenseNova、通义千问

  • 支持推理服务:GPT、SenseNova、Kimi、智谱、通义千问

  • 支持Embedding推理服务:Openai、SenseNova、GLM、通义千问

  • 支持微调框架:collie、peft

  • 支持推理框架:lightllm、vllm

  • 支持根据用户场景自动选择最合适的框架和模型参数(如micro-bs、tp、zero等)。

  • 离线(本地)模型服务:

  • 在线服务:

  • 支持开发者以统一的方式使用本地服务和线上服务

  • 支持RAG常用组件 :Document、Parser、Retriever、Reranker等。

  • 基础的界面支持 :如聊天界面、文档管理界面等。


  • 五、安装

    源码安装

    git






    请到「今天看啥」查看全文