文心一言接入Promptulate,开发复杂LLM应用程序

简介

最近在尝试将文心一言的LLM能力接入Promptulate,故写了一篇博客记录一下,Promptulate 是 Promptulate AI 旗下的大语言模型自动化与应用开发框架,旨在帮助开发者通过更小的成本构建行业级的大模型应用,其包含了LLM领域应用层开发的大部分常用组件,如外部工具组件、模型组件、Agent智能代理、外部数据源接入模块、数据存储模块、生命周期模块等。 通过 Promptulate,你可以轻松构建起属于自己的LLM应用程序。

Promptulate官网

将文心一言接入Promptulate之后,便可以轻松地利用Promptulate构建一些复杂能力,如让大语言模型使用工具。

文心一言介绍

文心一言(ERNIE Bot)是百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。文心一言是知识增强的大语言模型,基于飞桨深度学习平台和文心知识增强大模型,持续从海量数据和大规模知识中融合学习具备知识增强、检索增强和对话增强的技术特色 。

百度的文心一言被定位为一种基于人工智能的赋能平台,旨在为金融、能源、媒体、政务等各行各业的智能化变革提供支持。它将充当一种“生产力工具”的角色,通过提供智能化的服务,帮助各行业提高工作效率和创造力。最终,这将推动各行业的发展,提高生产力,实现更快、更高效的工作方式。

通过https://yiyan.baidu.com/可以获取文心一言的内测机会。当然,你也可以申请获取API,这样子你可以有能多自定义功能的能力。

Promptulate

Promptulate AI 专注于构建大语言模型应用的开发者平台,致力于为开发者和企业提供构建、扩展、评估大语言模型应用的能力。Promptulate 是 Promptulate AI 旗下的大语言模型自动化与应用开发框架,旨在帮助开发者通过更小的成本构建行业级的大模型应用,其包含了LLM领域应用层开发的大部分常用组件,如外部工具组件、模型组件、Agent智能代理、外部数据源接入模块、数据存储模块、生命周期模块等。 通过 Promptulate,你可以轻松构建起属于自己的LLM应用程序。

更多地,为构建一个强大而灵活的LLM应用开发平台,以创建能够自动化各种任务和应用程序的自主代理,Promptulate 通过Core AI Engine、Agent System、APIs and Tools Provider、Multimodal Processing、Knowledge Base和Task-specific Modules 6个组件实现自动化AI平台。 Core AI Engine是该框架的核心组件,负责处理和理解各种输入,生成输出和作出决策。Agent System是提供高级指导和控制AI代理行为的模块;APIs and Tools Provider提供工具和服务交互的API和集成库;Multimodal Processing是一组处理和理解不同数据类型(如文本、图像、音频和视频)的模块,使用深度学习模型从不同数据模式中提取有意义的信息;Knowledge Base是一个存储和组织世界信息的大型结构化知识库,使AI代理能够访问和推理大量的知识;Task-specific Modules是一组专门设计用于执行特定任务的模块,例如情感分析、机器翻译或目标检测等。通过这些组件的组合,框架提供了一个全面、灵活和强大的平台,能够实现各种复杂任务和应用程序的自动化。

当前promptulate正处于快速开发阶段,仍有许多内容需要完善与讨论,十分欢迎大家的讨论与参与,而其作为一个大语言模型自动化与应用开发框架,主要由以下几部分组成:

  • Agent 更高级的执行器,负责复杂任务的调度和分发
  • llm 大语言模型,负责生成回答,可以支持不同类型的大语言模型
  • Memory 负责对话的存储,支持不同的存储方式及其扩展,如文件存储、数据库存储等
  • Framework 框架层,实现不同类型的prompt框架,包括最基础的Conversation模型,还有self-askReAct等模型。
  • Tool 提供外部工具扩展调用,如搜索引擎、计算器等
  • Hook&Lifecycle Hook系统与生命周期系统,开发者可以进行定制化的生命周期逻辑控制
  • Rreset roles 提供预设角色,进行定制化对话
  • Provider 为系统提供更多数据源或执行自主操作,如数据库的连接

文心一言API快速上手

通过API文档,我们可以快速构建起一个基于Python的LLM接入程序。

import json
import requestsAPI_KEY = "your api key"
SECRET_KEY = "your secret key"def get_access_token():"""使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key"""url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={API_KEY}&client_secret={SECRET_KEY}"payload = json.dumps("")headers = {"Content-Type": "application/json", "Accept": "application/json"}response = requests.request("POST", url, headers=headers, data=payload)return response.json().get("access_token")def llm(prompt: str) -> str:url = ("https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token="+ get_access_token())payload = json.dumps({"messages": [{"role": "user", "content": prompt}]})headers = {"Content-Type": "application/json"}response = requests.request("POST", url, headers=headers, data=payload)print(response.json()["result"])return response.json()["result"]if __name__ == "__main__":llm("你好")

当然,我们希望用文心一言构建一些复杂的Prompt应用,如利用LLM+网络搜索,下面的示例展示了如何在Promptulate上使用文心一言,进行LLM+网络搜索的功能。

Promptulate + ErnieBot

相关文档

打开终端,输入下面命令下载promptulate最新版,-U表示更新到最新版,如果你已经下载promptulate
旧版本,那么执行此命令会更新到最新版。promptulate当前正处于快速发展阶段,因此你可能需要经常更新最新版以享用最新的成果。

pip install -U promptulate  

promptulate可以支持不同类型的大语言模型调用,如OpenAI的gpt-3.5 gpt-4.0,下面介绍百度文心系列大模型的使用,要使用其能力,你需要前往百度千帆大模型平台创建大模型应用并获取到对应的API KeySecret Key

如果你想使用国产文心系列模型,只需要 ErnieBot()进行初始化,文心模型虽然与openai模型有较大差异,但是框架提供了尽可能完美的兼容。
你还可以使用ErnieBot(model=“ernie-bot”)来具体选择对应的文心模型,目前框架提供了两种文心模型,分别是文心一言(“ernie-bot”)和文心turbo(“ernie-bot-turbo”),默认为文心turbo模型。

KEY配置

在使用百度千帆大模型平台系列的LLM之前,你需要先导入你的API KeySecret Key

import osos.environ["ERNIE_API_KEY"] = "your api key"
os.environ["ERNIE_API_SECRET"] = "your secret key"

在你第一次使用的时候,需要使用上述代码导入环境变量,但是在第一运行之后promptulate 会进行缓存,即后面再运行就不需要再导入key了。

如果你的key过期了,可以尝试重新按照上面的方法导入key,或者你也可以把 cache 文件给删除掉,通过以下代码可以获取到缓存文件的位置:

from promptulate.utils import get_default_storage_pathprint(get_default_storage_path())

LLM快速上手

promptulate的架构设计可以轻松兼容不同的大语言模型扩展,在promptulate中,llm负责最基本的内容生成部分,因此为最基础的组件。

下面的示例展示了如何使用百度文心ErnieBot的大语言模型进行交互。

如果你想使用国产文心系列模型,只需要 ErnieBot()进行初始化,文心模型虽然与openai模型有较大差异,但是框架提供了尽可能完美的兼容。
你还可以使用ErnieBot(model=“ernie-bot”)来具体选择对应的文心模型,目前框架提供了两种文心模型,分别是文心一言(“ernie-bot”)和文心turbo(“ernie-bot-turbo”),默认为文心turbo模型。

from promptulate.llms import ErnieBotllm = ErnieBot() 
answer = llm("请解释一下引力波的放射与广义相对论的必然关系")
print(answer)

上述ErnieBot默认使用ernie-bot-turbo模型

输出结果如下:

广义相对论是一种描述引力如何影响时空的物理学理论,它指出当物质和能量聚集在一起时,它们弯曲了周围的时空,引起了引力。质量和能量更大的物体会导致更大
的时空弯曲,这就是为什么地球会围绕太阳旋转。根据广义相对论,当物质或能量在空间中运动时,它们会产生引力波,就像在水面上产生涟漪一样。引力波是一种类
似电磁波的波动,但它们是由物质和能量的弯曲引起的,而电磁波是由电荷的振动引起的。引力波是极微弱的,但是当强烈的引力场存在(例如在引力天体碰撞或超新
星爆炸等事件中),它们可以被探测到。事实上,2015年,激光干涉引力波天文台利用引力波探测器直接探测到了引力波,并为广义相对论提供了强有力的证据。因
此,引力波的放射与广义相对论必然关系紧密。通过引力波,我们可以更加深入地了解时空的性质,并进一步验证这个理论。

切换模型

文心提供了 “ernie-bot"与"ernie-bot-turbo”,详情介绍查看官方文档与API文档

ERNIE-Bot-turbo

文心一言人工智能大语言模型,拥有产业级知识增强文心大模型ERNIE,具备跨模态、跨语言的深度语义理解与生成能力。

ERNIE-Bot

文心一言大语言模型,基于飞桨深度学习平台和文心知识增强的强大模型,持续从海量数据和大模型知识中融合学习。具备知识增强、检索增强和对话增强的技术特色。

你可以使用如下方式切换模型:

from promptulate.llms import ErnieBotllm = ErnieBot(model="ernie-bot") 
answer = llm("请解释一下引力波的放射与广义相对论的必然关系")
print(answer)

网络搜索

下面展示如何使用ErnieBot进行网络搜索。

from promptulate.tools import (DuckDuckGoTool,Calculator,
)
from promptulate.llms import ErnieBot
from promptulate.agents import ToolAgentdef main():llm = ErnieBot(temperature=0.0)tools = [DuckDuckGoTool(),Calculator(),]agent = ToolAgent(tools=tools,llm=llm)prompt = """Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?"""agent.run(prompt)if __name__ == "__main__":main()

在上述代码中,使用DuckDuckGo进行网络搜索,最后运行结果如下:

参考资料

  • Promptulate官网
  • Promptulate github
  • 如何获得内测和使用方法

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

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

相关文章

使用 Node-RED 构建 DolphinDB 低代码平台

前言 DolphinDB 是由浙江智臾科技有限公司研发的一款高性能分布式时序数据库,集成了功能强大的编程语言和高容量高速度的流数据分析系统,为海量结构化数据的快速存储、检索、分析及计算提供一站式解决方案。DolphinDB 数据库支持每秒百万级数据写入&…

day 2

多态,虚函数,纯虚函数 1.多态:父类的指针或者引用,指向或初始化子类的对象,调用子类对父类重写的函数,进而展开子类的功能。 函数重写 1> 必须有继承关系 2> 子类和父类有同名同类型的函数 3>…

(AS笔记)上传aar包到Maven中央仓库

目录 一、SonaType账户注册与登录 (1)注册 (2)登录 二、创建工单 (1)Github子域名验证 (2)自定义域名验证 三、登录Nexus Repository Manager 四、GPG签名生成和发布 五、Andr…

Springboot启动异常 Command line is too long

Springboot启动异常 Command line is too long Springboot启动时直接报异常 Command line is too long. Shorten command line for xxxxxApplication or also for Spring Boot default解决方案: 修改 SystemApplication 的 Shorten command line,选择 JAR manife…

数学建模:数据的预处理

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 文章目录 数据预处理数据变换数据清洗缺失值处理异常值处理 数据预处理 数据变换 常见的数据变换的方式:通过某些简单的函数进行数据变换。 x ′ x 2 x ′ x x ′ log ⁡ ( x ) ∇ f ( x k )…

Jenkins测试报告样式优化

方式一:修改Content Security Policy(临时解决,Jenkins重启后失效) 1、jenkins首页—>ManageJenkins—>Tools and Actions标题下—>Script Console 2、粘贴脚本输入框中:System.setProperty("hudson.model.Directo…

word6 图文混排

目录 7-1 段落缩进排版7-2 搞定多级列表难题 7-1 段落缩进排版 段落对齐 缩进问题 悬挂缩进:缩进首行以外的段落 段落对齐: 7-2 搞定多级列表难题

MySQL数据库之索引

目录 一、索引的概念 二、索引的作用 三、索引的副作用 四、创建索引的规则 1、适合创建为索引的字段的规则 2、MySQL的优化 哪些字段/场景适合创建索引,哪些不适合 五、索引的分类和创建 1、索引的分类 2、三种创建方式 3、索引的创建演示 1、创建普通索…

Lvs+KeepAlived高可用高性能负载均衡

目录 1.环境介绍 2.配置keepalived 3.测试 1.测试负载均衡 2.测试RS高可用 3.测试LVS高可用 3.1测试lvs主服务宕机 3.2.测试lvs主服务器恢复 4.我在实验中遇到的错误 1.环境介绍 环境:centos7 RS1---RIP1:192.168.163.145 VIP 192.168.163.200 RS2---RIP2…

css强制显示一行

要强制将文本内容显示在一行中,可以使用CSS的white-space属性和overflow属性来实现。 首先,将white-space属性设置为nowrap,这样文本内容就不会换行。然后,将overflow属性设置为hidden,这样超出一行的内容就会被隐藏起…

带纽扣电池产品出口澳洲安全标准,纽扣电池IEC 60086认证

澳大利亚政府公布了《消费品(纽扣/硬币电池)安全标准》和《消费品(纽扣/硬币电池)信息标准》。届时出口纽扣/硬币电池以及含有纽扣/硬币电池产品到澳大利亚的供应商,必须遵守这些标准中的要求。 一、 安全标准及信息标…

【SQL中DDL DML DQL DCL所包含的命令】

SQL中DDL DML DQL DCL所包含的命令 关于DDL、DML、DQL、DCL的定义和适用范围如下: 数据定义语言(Data Definition Language,DDL): DDL用于创建、修改和删除数据库中的表、视图、索引等对象。它的主要命令包括CREATE、A…

Xshell7和Xftp7的下载、安装及连接服务器的教程

1.下载 1.官网地址: XSHELL - NetSarang Website 选择学校免费版下载 2.将XSHELL和XFTP全都下载下来 2.安装 安装过程就是选择默认选项,然后无脑下一步 3.连接服务器 1.打开Xshell7,然后新建会话 2.填写相关信息 出现Connection establ…

问道管理:暂停交易!港交所最新宣布,北向资金也受影响!大涨超180%

今日上午A股商场全体涨跌互现,煤炭板块涨幅居前。新股方面也体现较好,有一只新股盘中一度暴涨超越180%。 别的,飓风“苏拉”对股市也产生了影响。港交所最新公告称,因为八号飓风信号现正收效,今日(星期五&…

安防监控视频平台EasyCVR视频汇聚平台定制项目增加AI智能算法详细介绍

安防视频集中存储EasyCVR视频汇聚平台,可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等功能。为了便…

QT可执行程序打包成安装程序

目录 1.将QT程序先放到一个文件中 2.下载QtInstallerFramework-win-x86.exe 3.将setup.exe单独拷贝出来,进行安装测试 4.测试安装后的程序是否可执行 1.将QT程序先放到一个文件中 (1)QT切换到release模式,编译后在构建目录生…

显示本地 IP 地址和相应的 QR 码,方便用户共享和访问网络信息

这段代码使用了 wxPython、socket、qrcode 和 PIL(Python Imaging Library)模块来生成一个具有本地 IP 地址和相应 QR 码的窗口应用程序。 C:\pythoncode\new\showipgenqrcode.py 让我们逐行解释代码的功能: import wx:导入 wx…

大规模数据爬取 - 增量和分布式爬虫架构实战

嗨,亲爱的爬虫开发者们!在当今的数据驱动时代,大规模数据的爬取对于许多领域的研究和应用至关重要在本文中,我将与你分享大规模数据爬取的实战经验,重点介绍增量和分布式爬虫架构的应用,帮助你高效地处理海…

fastdds之core

目录 Entity Entity

Docker consul 容器服务自动发现和更新

目录 一、什么是服务注册与发现 二、Docker-consul集群 1.Docker-consul consul提供的一些关键特性 2.registrator 3.Consul-template 三、Docker-consul实现过程 以配置nginx负载均衡为例 先配置consul-agent ,有两种模式server和client 四、Docker-cons…