LiteChain:构建LLMs应用的轻量级LangChain,Superagent : 轻松构建AI代理,创建机器人,ChatGLM-RLHF:对ChatGLM直接使用RLHF提升或降低目标输出概率

LiteChain:构建LLMs应用的轻量级LangChain,Superagent : 轻松构建AI代理,创建机器人,ChatGLM-RLHF:对ChatGLM直接使用RLHF提升或降低目标输出概率。

在这里插入图片描述

先看一下一个有意思的开源项目:

Geek-AI: 套壳之王!AI 助手全套开源解决方案。

项目简介

ChatGPT-PLUS 基于 AI 大语言模型 API 实现的 AI 助手全套开源解决方案,自带运营管理后台,开箱即用。集成了 OpenAI, Azure, ChatGLM,讯飞星火,文心一言等多个平台的大语言模型。集成了 MidJourney 和 Stable Diffusion AI绘画功能。

主要特性

完整的开源系统,前端应用和后台管理系统皆可开箱即用。

基于 Websocket 实现,完美的打字机体验。

内置了各种预训练好的角色应用,比如小红书写手,英语翻译大师,苏格拉底,孔子,乔布斯,周报助手等。轻松满足你的各种聊天和应用需求。

支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。

支持 Suno 文生音乐

支持 MidJourney / Stable Diffusion AI 绘画集成,文生图,图生图,换脸,融图。开箱即用。

支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。

已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。

集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件,已内置实现了微博热搜,今日头条,今日早报和 AI 绘画函数插件。

快速部署
演示站不提供任何充值点卡售卖或者VIP充值服务。 如果您体验过后觉得还不错的话,可以花两分钟用下面的一键部署脚本自己部署一套。

bash -c “$(curl -fsSL https://img.r9it.com/tmp/install-v4.0.4-36d397add2.sh)”
最新版本的一键部署脚本请参考 ChatGPT-Plus 文档。

目前仅支持 Ubuntu 和 Centos 系统。部署成功之后可以访问下面地址

前端访问地址:http://localhost:8080/chat 使用移动设备访问会自动跳转到移动端页面。

后台管理地址:http://localhost:8080/admin

移动端地址:http://localhost:8080/mobile

初始后台管理账号:admin/admin123

初始前端体验账号:18575670125/12345678

服务启动成功之后不能立刻使用,需要先登录管理后台 -> API-KEY 去添加一个 OpenAI 或者文心一言,科大讯飞等至少一个平台的 API KEY。

移动端 APP 支持
目前已经支持 Win/Linux/Mac/Android 客户端。

技术栈
后端 Go

前端 Vue3、Element Plus

项目是否可以商用?
本项目基于 Apache2.0 协议,免费开放全部源代码,可以作为个人学习使用或者商用。

如需商用必须保留版权信息,请自觉遵守。确保合法合规使用,在运营过程中产生的一切任何后果自负,与作者无关。


项目链接
https://github.com/yangjian102621/chatgpt-plus

项目简介
LiteChain 是用于构建 LLM 应用程序的 LangChain 的更轻量级替代品,LiteChain 没有大量的功能和类,而是专注于拥有单个小核心,易于学习、易于适应、文档齐全、类型完整且真正可组合。

文档

https://rogeriochaves.github.io/litechain/

快速安装

pip install litechain

Chain构建块

Chain是LiteChain的构建块,LLM是一个Chain,一个输出解析器是一个Chain,一组链可以组成另一个Chain,它一直都是Chain。

查看有关在链上构建和构建 LLM 应用程序的指南的文档,或者直接访问核心概念和可用模块的参考。

快速示例

这是一个仅使用表情符号回答您提出的任何问题的聊天机器人:


from litechain.contrib import OpenAIChatChain, OpenAIChatMessage, OpenAIChatDelta
from typing import Iterable

# Creating a GPT-4 EmojiChain
emoji_chain = OpenAIChatChain[str, OpenAIChatDelta](
    "EmojiChain",
    lambda user_message: [
        OpenAIChatMessage(
            role="user", content=f"{user_message}. Reply in emojis"
        )
    ],
    model="gpt-4",
    temperature=0,
)

# Now interacting with it
async for output in emoji_chain("Hey there, how is it going?"):
    print(output.data.content, end="")

#=> 👋😊👍💻🌞

async for output in emoji_chain("What is answer to the ultimate question of life, the universe, and everything?"):
    print(output.data.content, end="")

#=> 4️⃣2️⃣

在这个简单的示例中,我们正在创建一个 GPT4 链,它接受用户消息并向其附加 “. Reply in emojis” 以构建提示,遵循 OpenAI 聊天结构并具有零温度。

然后,如您所见,我们有一个异步循环来检查 emoji_chain 的每个令牌输出。在 LiteChain 中,一切都是使用 Python 的 AsyncGenerator 类的异步流,其中最强大的部分是您可以通过将两个链组合在一起来连接这些流:


# Creating another Chain to translate back from emoji
translator_chain = OpenAIChatChain[Iterable[OpenAIChatDelta], OpenAIChatDelta](
    "TranslatorChain",
    lambda emoji_tokens: [
        OpenAIChatMessage(
            role="user", content=f"Translate this emoji message {[token.content for token in emoji_tokens]} to plain english"
        )
    ],
    model="gpt-4",
)

# Connecting the two Chains together
chain = emoji_chain.and_then(translator_chain)

# Trying out the whole flow
async for output in chain("Hey there, how is it going?"):
    print(output.data.content, end="")

#=> 👋😊👍💻🌞"Hello, have a nice day working on your computer!"

正如您所看到的,使用 and_then 函数将两个链连接在一起非常容易。还有其他可用于组合的函数,例如 map 、 collect 、 join 和 gather ,它们构成了您需要的一小组抽象学习为您的应用程序构建复杂的链组合,如果您具有函数编程知识,它们的行为就像您所期望的那样。您可以在参考资料中阅读有关它的所有内容。一旦您学习了这些功能,任何链都将遵循相同的模式,使您能够构建复杂的 LLM 应用程序。

您可能还注意到,Chain 接受类型签名,EmojiChain 的类型为 [str, OpenAIChatDelta] ,而 TranslatorChain 的类型为 [Iterable[OpenAIChatDelta], OpenAIChatDelta] ,它们分别表示每个 Chain 的输入和输出类型。由于 EmojiChain 正在获取用户输出,因此它只需要 str 作为输入,并且由于它使用 OpenAI Chat API 和 GPT-4,它会生成 OpenAIChatDelta ,这是 GPT 处理的令牌-4 一次产生一个。然后 TranslatorChain 将 Iterable[OpenAIChatDelta] 作为输入,因为它与 EmojiChain 的输出连接,所以它会获取生成的令牌的完整列表,以便稍后提取其内容并形成自己的提示。类型签名是 LiteChain 的重要组成部分,拥有它们可以节省大量时间,防止错误和调试问题,例如当链 B 不期望链 A 的输出时。使用 VSCode 等编辑器和 PyLance 可以让您收到警告在您尝试运行代码之前,链 A 不适合链 B,您可以在此处阅读有关 LiteChain 键入的信息。最后但并非最不重要的一点是,您可能还注意到表情符号和翻译都打印在最终输出中,这是设计使然。在 LiteChain 中,您始终可以访问最终流中经过整个链的所有内容,这意味着调试非常简单,并且可以使用 debug 函数使其变得更加容易。如果您只想打印最终链的结果,则可以检查属性 output.final : bool ,但还有更多实用功能可帮助您根据需要使用输出流,请查看更多信息在我们的“为什么”直播中?指南和参考。

项目链接
https://github.com/rogeriochaves/litechain


Superagent : 轻松构建AI代理

项目简介
Superagent 是一个功能强大的工具,可以简化 LLM(大型语言模型)代理到生产的配置和部署。它提供了一系列特性和功能,使开发人员能够更轻松地构建、管理 AI 代理并将其部署到生产中,包括内置内存和通过矢量数据库进行文档检索、强大的工具、Webhooks、cron 作业等功能。

只需一行代码即可将 AI 代理嵌入到任何应用程序中,无需更改堆栈或环境。

开源

零配置

零依赖

Superagent 云
如果您正在寻找即插即用的入门方式,请务必查看 Superagent.sh。

文档

https://docs.superagent.sh/introduction

开始使用
1将 Superagent 存储库克隆到公共 GitHub 存储库或从 https://github.com/homanp/Superagent/fork 分叉它。如果您计划分发代码,请将源代码公开。

git clone https://github.com/homanp/Superagent.git

2 要运行该脚本,只需使用以下命令执行即可:

bash setup.sh

3 请参阅 ui 文件夹中的 UI 设置说明。

项目链接
https://github.com/homanp/superagent


embedchain:轻松创建LLM机器人

项目简介
embedchain 是一个框架,可以在任何数据集上轻松创建 LLM 支持的机器人。如果您想要 javascript 版本,请查看 embedchain-js

它抽象了加载数据集、对其进行分块、创建嵌入然后存储在矢量数据库中的整个过程。

您可以使用 .add 和 .add_local 函数添加单个或多个数据集,然后使用 .query 函数从添加的数据集中查找答案。

如果您想创建一个 Naval Ravikant 机器人,其中包含 1 个 YouTube 视频、1 本 pdf 书籍和 2 篇博客文章,以及您提供的一对问答,您所需要做的就是添加视频链接, pdf 和博客文章以及 QnA 对和嵌入链将为您创建一个机器人。



from embedchain import App

naval_chat_bot = App()

# Embed Online Resources
naval_chat_bot.add("youtube_video", "https://www.youtube.com/watch?v=3qHkcs3kG44")
naval_chat_bot.add("pdf_file", "https://navalmanack.s3.amazonaws.com/Eric-Jorgenson_The-Almanack-of-Naval-Ravikant_Final.pdf")
naval_chat_bot.add("web_page", "https://nav.al/feedback")
naval_chat_bot.add("web_page", "https://nav.al/agi")

# Embed Local Resources
naval_chat_bot.add_local("qna_pair", ("Who is Naval Ravikant?", "Naval Ravikant is an Indian-American entrepreneur and investor."))

naval_chat_bot.query("What unique capacity does Naval argue humans possess when it comes to understanding explanations or concepts?")
# answer: Naval argues that humans possess the unique capacity to understand explanations or concepts to the maximum extent possible in this physical reality.

支持的格式

视频
要将任何 YouTube 视频添加到您的应用程序,请使用 data_type ( .add 的第一个参数)作为 youtube_video 。例如:

app.add('youtube_video', 'a_valid_youtube_url_here')

pdf文件

要添加任何 pdf 文件,请将 data_type 用作 pdf_file 。例如:

app.add('pdf_file', 'a_valid_url_where_pdf_file_can_be_accessed')

请注意,我们不支持受密码保护的 pdf。

文本

要提供您自己的文本,请使用 data_type 作为 text 并输入字符串。文本未经处理,这可以非常通用。例如:

app.add_local('text', 'Seek wealth, not money or status. Wealth is having assets that earn while you sleep. Money is how we transfer time and wealth. Status is your place in the social hierarchy.')

注意:示例中未使用此选项,因为在大多数情况下,您将提供不适合的整个段落或文件。

问答对
要提供您自己的 QnA 对,请使用 data_type 作为 qna_pair 并输入一个元组。例如:

app.add_local('qna_pair', ("Question", "Answer"))

重用矢量数据库
默认行为是在目录 ./db 中创建持久向量 DB。您可以将应用程序拆分为两个 Python 脚本:一个用于创建本地矢量数据库,另一个用于重用此本地持久矢量数据库。当您想要索引数百个文档并单独实现聊天界面时,这非常有用。

创建本地索引:



from embedchain import App

naval_chat_bot = App()
naval_chat_bot.add("youtube_video", "https://www.youtube.com/watch?v=3qHkcs3kG44")
naval_chat_bot.add("pdf_file", "https://navalmanack.s3.amazonaws.com/Eric-Jorgenson_The-Almanack-of-Naval-Ravikant_Final.pdf")

您可以使用相同的代码重用本地索引,但无需添加新文档:

from embedchain import App

naval_chat_bot = App()
print(naval_chat_bot.query("What unique capacity does Naval argue humans possess when it comes to understanding explanations or concepts?"))

项目链接
https://github.com/embedchain/embedchain


ChatGLM-RLHF:对ChatGLM直接使用RLHF提升或降低目标输出概率

http://github.com/Miraclemarvel55/ChatGLM-RLHF

在这里插入图片描述

原Langchain-ChatGLM项目已正式发布v0.2.0版本,并正式更名为Langchain-Chatchat,Star数量已达到13.6k。项目已重构为使用FastChat + Langchain + FastAPI + Streamlit构建的基于Langchain与ChatGLM等大语言模型的本地知识库问答应用实现。

https://github.com/chatchat-space/Langchain-Chatchat

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 27
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码讲故事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值