文心一言接入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.mzph.cn/news/57418.shtml

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

相关文章

FusionAD:用于自动驾驶预测和规划任务的多模态融合

论文背景 自动驾驶(AD)任务通常分为感知、预测和规划。在传统范式中,AD中的每个学习模块分别使用自己的主干,独立地学习任务。 以前,基于端到端学习的方法通常基于透视视图相机和激光雷达信息直接输出控制命令或轨迹…

Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【一】

😀前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【一】,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章…

【如何对公司网络进行限速?一个案例详解】

有不少朋友问到了关于企业网络QoS配置,这个确实在实际网络应用中非常多,基本上大部分企业或个人都用到这个功能,本期我们详细了解下QoS如何对宽带进行限制,QoS如何企业中应用。 一、什么是QoS? Qos是用来解决网络延迟和阻塞等问…

基于微信小程序的文化宣传平台的设计与实现(Java+spring boot+微信小程序+MySQL)

获取源码或者论文请私信博主 演示视频: 基于微信小程序的文化宣传平台的设计与实现(Javaspring boot微信小程序MySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java…

SSM(Spring+SpringMVC+MyBatis)整合

目录 1、提出问题 2、解决问题 3、相关文件 1、提出问题 SSM(SpringSpringMVCMyBatis)的开发,MyBatis在没有与Spring和SpringMVC整合的时候,是单独使用,单独配置。 Spring和SpringMVC的整合是无缝衔接的&#xff0…

浪潮云海护航省联社金融上云,“一云多芯”赋能数字农业

农村金融是现代金融体系的重要组成部分,是农业农村发展的重要支撑力量,而统管全省农商行及农信社的省级农村信用社联合社(以下简称:省联社)在我国金融系统中占据着举足轻重的地位。省联社通常采用“大平台小法人”的发…

【Spring Cloud系列】- 分布式系统中实现幂等性的几种方式

【Spring Cloud系列】- 分布式系统中实现幂等性的几种方式 文章目录 【Spring Cloud系列】- 分布式系统中实现幂等性的几种方式一、概述二、什么是幂等性三、幂等性需关注几个重点四、幂等性有什么用五、常见用来保证幂等的手段5.1 MVCC方案5.2 去重表5.3 去重表5.4 select in…

以udp协议创建通信服务器

概念图 创建服务器让A,B主机完成通信。 认识接口 socket 返回值:套接字,你可以认为类似fd 参数: domain->:哪种套接字,常用AF_INET(网络套接字)、AF_LOCAL(本地套接字)type->:发送数据类型,常用 …

网络摄像头:SparkoCam Crack

SparkoCam 网络摄像头软件 SparkoCam 是一款网络摄像头和视频效果软件,用于广播实时网络摄像头效果并将其应用到视频聊天和录音中。 使用佳能/尼康数码单反相机作为常规网络摄像头通过向实时视频聊天和视频录制添加酷炫的网络摄像头效果和图形来增强 USB 网络摄像…

automake安装及使用

安装 sudo apt install automake实例 源文件 以一个简单的例子为例&#xff1a; add .c #include "add.h"int add(int a, int b){return a b; }add.h int add(int a, int b);main.c #include <stdio.h> #include "add.h"int main() {int a …

volatile考点分析

今天我们学习并发编程中另一个重要的关键字volatile&#xff0c;虽然面试中它的占比低于synchronized&#xff0c;但依旧是不可忽略的内容。 关于volatile&#xff0c;我收集到了8个常见考点&#xff0c;围绕应用&#xff0c;特点和实现原理。 volatile有什么作用&#xff1f…

PHP8内置函数中的数学函数-PHP8知识详解

php8中提供了大量的内置函数&#xff0c;以便程序员直接使用常见的内置函数包括数学函数、变量函数、字符串函数、时间和日期函数等。今天介绍内置函数中的数学函数。 本文讲到了数学函数中的随机数函数rand()、舍去法取整函数floor()、向上取整函数 ceil()、对浮点数进行四舍…

基于HarmonyOS ArkUI实现七夕壁纸轮播

七夕情人节&#xff0c;为了Ta&#xff0c;你打算用什么方式表达爱&#xff1f;是包包、鲜花、美酒、巧克力&#xff0c;还是一封充满爱意的短信&#xff1f;作为程序员&#xff0c;以代码之名&#xff0c;表达爱。本节将演示如何在基于HarmonyOS ArkUI的SwiperController、Ima…

CrystalNet .Net VCL for Delphi Crack

CrystalNet .Net VCL for Delphi Crack VCL或更为人所知的可视化组件库是基于一个面向对象的框架&#xff0c;什么是用户对开发人员和事件的Microsoft Windows应用程序的接口。可视化组件库是用对象Pascal编写的。它主要是为使用Borland而开发的&#xff0c;它具有与Delphi以及…

释放 ChatGPT 的价值:5 个专家提示

随着近来ChatGPT的热议&#xff0c;人工智能技术被推上风口浪尖&#xff0c;由此以数字化技术为基础的数字营销也再次受到了不小的关注&#xff0c;但是营销的本质从来都没有变过&#xff0c;今天我们聊下ChatGPT无论如何演进&#xff0c;人工智能无论变得多么先进&#xff0c;…

【C语言基础】const关键词的使用方法

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

django中使用websocket

python本身只支持http协议 使用websocket需要下载第三方库 pip install -U channels 需要在seting.py里配置&#xff0c;将我们的channels加入INSTALLED_APP里。 INSTALLED_APPS ( django.contrib.auth, django.contrib.contenttypes, django.contrib.sessions, …

【环境配置】Android-Studio-OpenCV-JNI以及常见错误 ( 持续更新 )

最近一个项目要编译深度学习的库&#xff0c;需要用到 opencv 和 JNI&#xff0c;本文档用于记录环境配置中遇到的常见错误以及解决方案 Invalid Gradle JDK configuration found failed Invalid Gradle JDK configuration foundInvalid Gradle JDK configuration found. Open…

Docker数据管理(数据卷与数据卷容器)

目录 一、数据卷&#xff08;Data Volumes&#xff09; 1、概述 2、原理 3、作用 4、示例&#xff1a;宿主机目录 /var/test 挂载同步到容器中的 /data1 二、数据卷容器&#xff08;DataVolumes Containers&#xff09; 1、概述 2、作用 3、示例&#xff1a;创建并使用…

Flutter(九)Flutter动画和自定义组件

目录 1.动画简介2.动画实现和监听3. 自定义路由切换动画4. Hero动画5.交织动画6.动画切换7.Flutter预置的动画过渡组件自定义组件1.简介2.组合组件3.CustomPaint 和 RenderObject 1.动画简介 Animation、Curve、Controller、Tween这四个角色&#xff0c;它们一起配合来完成一个…