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

  • 💖 作者简介:大家好,我是Zeeland,开源建设者与全栈领域优质创作者。
  • 📝 掘金主页:Zeeland🔥
  • 📣 我的博客:Zeeland
  • 📚 Github主页: Undertone0809 (Zeeland)
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 💬介绍:The mixture of software dev+Iot+ml+anything🔥

简介

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

Promptulate官网

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

文心一言介绍

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

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

通过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接入程序。

python 复制代码
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当前正处于快速发展阶段,因此你可能需要经常更新最新版以享用最新的成果。

shell 复制代码
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

python 复制代码
import os

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

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

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

python 复制代码
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模型。

python 复制代码
from promptulate.llms import ErnieBot

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

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

输出结果如下:

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

切换模型

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

ERNIE-Bot-turbo

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

ERNIE-Bot

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

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

python 复制代码
from promptulate.llms import ErnieBot

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

网络搜索

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

python 复制代码
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进行网络搜索,最后运行结果如下:

参考资料

相关推荐
视觉&物联智能6 分钟前
【杂谈】-AI搜索引擎如何改变传统SEO及其在内容营销中的作用
人工智能·搜索引擎·ai·aigc·seo
九河云7 分钟前
Amazon Bedrock Claude 3 在客户服务自动化中的应用方法
运维·人工智能·自动化·aws
文心快码 Baidu Comate19 分钟前
打破视障壁垒,百度文心快码无障碍版本助力视障IT从业者就业无“碍”
人工智能·ai编程·文心快码·智能编程助手·智能代码助手
诚威_lol_中大努力中26 分钟前
关于pytorch3d的安装
人工智能·pytorch·python
herogus丶1 小时前
【Spring AI】Spring AI Alibaba的简单使用
java·人工智能·spring·ai
dundunmm1 小时前
机器学习之pandas
人工智能·python·机器学习·数据挖掘·pandas
小火炉Q1 小时前
16 循环语句——for循环
人工智能·python·网络安全
88号技师2 小时前
真实环境下实车运行,新能源汽车锂离子电池数据集
人工智能·电动汽车·电池状态估计
原点安全2 小时前
“鼎和财险一体化数据安全管控实践”入选信通院金融领域优秀案例
大数据·人工智能·金融
吃个糖糖2 小时前
37 Opencv SIFT 特征检测
人工智能·opencv·计算机视觉