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

news2025/1/22 7:52:27

简介

最近在尝试将文心一言的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 requests


API_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 os

os.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_path

print(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 ErnieBot

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

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

网络搜索

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

from promptulate.tools import (
    DuckDuckGoTool,
    Calculator,
)
from promptulate.llms import ErnieBot
from promptulate.agents import ToolAgent


def 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.coloradmin.cn/o/943048.html

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

相关文章

k8s的交付与部署案例操作

一 k8s的概念 1.1 k8s k8s是一个轻量级的,用于管理容器化应用和服务的平台。通过k8s能够进行应用的自动化部署和扩容缩容。 1.2 k8s核心部分 1.prod: 最小的部署单元;一组容器的集合;共享网络;生命周期是短暂的; …

反相器及反相器链的设计

静态特性 1 .开关阈值 2 .噪声容限 3 .稳定性 动态特性 1 .计算电容值 2. 时延分析 3. 从设计角度考虑时延 功耗、能量和能量时延 1.动态功耗 2.静态功耗

Druid监控平台与SpringBoot的actuator、Admin

文章目录 前言Druid监控平台的基础使用actuator基础使用Admin可视化图形监控 前言 Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控,Druid 可以很好的监控 DB 池连接和 SQL 的执行情况…

暑期实习总结(焊点数据管理软件开发):Python操作MySQL数据库、Django搭建前端网页、以及Excel中数据与MySQL数据库的互转

暑期实习总结(焊点数据管理软件开发):Python操作MySQL数据库、Django搭建前端网页、以及Excel中数据与MySQL数据库的互转 ​ 这一周是我在企业实习的最后一周,在企业做的项目已基本完成。这篇博客的目的也是总结一些项目中的一些小问题&…

经典文献阅读之--MobileSAM(比FastSAM更快的SAM框架)

0. 简介 自从MetaAI提出的能够“分割一切”的视觉基础大模型SAM提供了很好的分割效果,为探索视觉大模型提供了一个新的方向。虽然SAM的效果很好,但由于SAM的backbone使用了ViT,导致推理时显存的占用较多,推理速度偏慢&#xff0c…

大数据学习:hive的DQL和DML操作

hive的DQL和DML操作 1. Hive的分桶表 1.1 分桶表原理 分桶是相对分区进行更细粒度的划分 Hive表或分区表可进一步的分桶 分桶将整个数据内容按照某列取hash值,对桶的个数取模的方式决定该条记录存放在哪个桶当中;具有相同hash值的数据进入到同一个文件…

4、监测数据采集物联网应用开发步骤(4)

监测数据采集物联网应用开发步骤(3) 日志或文本文件读写开发 创建全局变量配置代码com.zxy.common.Com_Para.py全局变量根据需要后续补充。 #! python3 # -*- coding: utf-8 -Created on 2023年08月28日 author: zxyong 13738196011#监测数据采集物联网应用--全局变量 impor…

文件名翻译不求人:一键批量翻译,你就是改名专家

文件名翻译不求人:一键批量翻译,你就是改名专家 在日常生活和工作中,我们常常需要处理各种文件,包括文档、图片、视频等。有时候,我们需要对这些文件进行重命名,以便更好地管理和查找。但是,当…

微服务之Nacos

1 版本说明 官网地址: https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 1.1 2021.x 分支 适配 SpringBoot 2.4, Spring Cloud 2021.x 版本及以上的Spring Cloud Alibaba 版本如下表(最新版本用*标记&am…

Android实现监听APP启动、前台和后台

Android 实时监听APP进入前台或后台 前言 在我们开发的过程中,经常会遇到需要我们判断app进入后台,或者切换到前台的情况。比如我们想判断app切换到前台时,显示一个解锁界面,要求用户输入解锁密码才能继续进行操作;我…

pdf怎么转换成jpg图片?这几个方法值得一试

pdf怎么转换成jpg图片?PDF格式的文件在我们的日常生活和工作中十分常见,但有时候我们需要将PDF文件转换成图片格式,以便于在网页上进行展示或者存放到手机相册中。那么,PDF怎么转换成JPG图片呢?下面介绍几种方法。 第一…

Java【手撕滑动窗口】LeetCode 209. “长度最小子数组“, 图文详解思路分析 + 代码

文章目录 前言一、长度最小子数组1, 题目2, 思路分析3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, 链…

达梦数据配置兼容

修改数据库实例的dm.ini配置文件COMPATIBLE_MODE的值,0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server, 4:MySQL, 5:DM6, 6:Teradata, 7:PG COMPATIBLE_MODE 4 #Server compatible mode, 0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server,…

如何设置让软件开机自启动

电脑重置,一些软件能正常使用,但是系统开机自启动选项中并没有它,这就很郁闷 有些极简软件没有直接设置开机自启,需要手动设置,所以我们就需要手动去设置一下它。 1、如果你在任务管理器里能找到它,也可以…

怎么把m4a转换成mp3?音频格式转换方法分享

M4A格式音频文件通常比MP3格式音频文件具有更高的音质,因为它使用了先进的编码技术。但是,M4A文件在某些设备上可能无法播放。将M4A文件转换为MP3格式可以增加音频文件的兼容性,并使其可以在更广泛的设备上播放,如移动设备和汽车音…

解决 git clone 时出现Failed to connect to 127.0.0.1 port 1573问题

今天去拉一个仓库代码,往常都是一下就拉下来了,今天却报错,报错信息如下: 原因:这种情况是因为代理在git中配置的,但是本身环境就有SSL协议了,所以取消git的https或者http代理即可 方法如下&…

文件夹无法删除?简单3招,轻松解决问题!

“我电脑里有一个文件夹占用了很大的内存,我想将它删除来释放一些内存,但是根本没法删除,为什么会这样呢?文件夹无法删除应该怎么办呢?” 在日常电脑使用中,有时候会遇到文件夹无法删除的情况,这…

iTween安装

1. 找到Package Manager面板,Packages选择MyAssets-右上角搜索iTween-找到后点DownLoad-点Import 导入 2. 导入后Assets面板结构如下图。 3. 编译器中输入iTween有提示,安装成功。

DataFrame.plot函数详解(六)

DataFrame.plot函数详解(六) 使用subplot()做子图,定位每一个子图,设置数据和图形,理解fig和ax(axs)的意义和作用。 1. subplot() matplotlib.pyplot.subplots(nrows1, ncols1, *, sharexFalse, shareyFalse, squee…