• 作者简介:咱们好,我是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 为系统供给更多数据源或履行自主操作,如数据库的衔接
文心一言接入Promptulate,开发复杂LLM应用程序

文心一言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,开发复杂LLM应用程序

参考资料

  • Promptulate官网
  • Promptulate github
  • 怎么取得内测和运用方法