文心一言插件开发全流程,ERNIE-Bot-SDK可以调用文心一言的能力

文心一言插件开发

  • 前言
  • 插件
    • 插件是什么
    • 工作原理
    • 申请开发权限
  • 开始
    • 第一步:安装python
    • 第二步:搭建项目
      • manifest 描述文件:ai-plugin.json
      • 插件服务描述文件:openapi.yaml
      • 开发自己的plugin-server
    • 第三步:上传插件
  • SDK
  • 相关链接

前言

在这里插入图片描述

2023年8月31日,文心一言 率先向全社会全面开放。
随之而来的便是向开发者开放 插件 生态。

在这里插入图片描述

在这里插入图片描述

插件

插件是什么

如果说文心一言是一个智能中枢大脑,插件就是文心一言的耳、目、手。插件将“文心一言”AI能力与外部应用相结合,既能丰富大模型的能力和应用场景,也能利用大模型的生成能力完成此前无法实现的任务,比如发邮件等。

工作原理

  • 插件注册:开发者将插件的 manifest 文件注册到一言插件库中,校验通过后一言即可使用插件处理用户 query 。
  • 插件触发:解析调度模块将使用生成的API,来调用插件服务。插件服务完成处理后,返回 json 数据由一言汇总结果进行返回。
  • 插件解析:一言插件系统的触发调度模块,将识别用户 query,并将根据 manifest 文件中的插件API接口和参数的自然语言描述来选择使用哪个插件,以及生成调用插件的 API。

例如用户在平台上选择天气插件,输入:“今天北京的天气怎么样?”。 模型首先会根据用户意图调用天气插件,并且解析query中时间(今天)和地点(北京)信息,然后以 json 结构输入开发者提供的天气API接口中,获得接口返回的天气信息,经过大模型进行语言润色后,生成面向用户的回答。

申请开发权限

申请开发权限:https://yiyan.baidu.com/developer

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

等待申请通过的邮件就可以开始了

开始

第一步:安装python

python下载链接:https://www.python.org/downloads/

问题1:如果在cmd中输入python会打开应用商店,就在用户变量的 PATH 中把WindowsApps移到python下面
在这里插入图片描述
问题2:如果cmd中报“pip指令找不到”,那就要在用户变量的 PATH 中添加C:\Users\25218\AppData\Local\Programs\Python\Python311\Scripts

第二步:搭建项目

单词本的项目:https://pan.baidu.com/s/1K7wjPMPMprxtosnF5D-3tQ?pwd=q7xa

接入一个插件核心流程如下所示:

  • 构思插件 manifest 描述文件(ai-plugin.json,必选)
  • 定义插件服务描述文件(openapi.yaml,必选)
  • 开发自己的plugin-server(openapi服务,必选)

在这里插入图片描述

manifest 描述文件:ai-plugin.json

{
    "schema_version":"v1",(插件的版本号,用于开发者标记和使用)
    "name_for_human":"天气预报_dwh",(此字段将面向用户查看,平台内全局唯一标识,后缀数字建议长且随机,更不容易重名冲突)
    "name_for_model":"weather_prediction_dwh",(模型将用于定位插件的名称,建议是有语义信息的英文字符串)
    "description_for_human":"个性化查询不同地区的天气",(面向用户介绍插件,建议介绍插件的主要能力,相关限制等。不超过100个字符,前端可完整显示前40 个字符,超出的字符将在用户 hover 时展示。)
    "description_for_model":"帮助用户查询不同地区的天气",(面向模型的自然语言描述,请描述插件的核心能力、使用场景等,将用于模型参考解析是否触发插件,建议不超过200个字符。)
    "auth": (用户鉴权相关字段)
    {
        "type": "none"    
    },
    "api":API规范) 
    {
        "type": "openapi",
        "url": "http://127.0.0.1:8081/.well-known/openapi.yaml"
    },
    "logo_url": "http://127.0.0.1:8081/logo.png",(用于获取插件标识的URL"contact_email": "support@example.com",(安全/审核、支持和停用的电子邮件联系方式)
    "legal_info_url": "http://www.example.com/legal"(用户查看插件信息的重定向URL}

插件服务描述文件:openapi.yaml

openapi: 3.0.1
info:
  title: 天气预报
  description: 个性化查询不同地区的天气。
  version: "v1"
servers:
  - url: http://127.0.0.1:8081
paths:
  /get_weather:
    post:
      operationId: getWeather
      summary: 展示天气
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/getWeather"
      responses:
        "200":
          description: 天气展示完成
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/weatherResponse"
components:
  schemas:
    getWeather:
      type: object
      required: [city]
      properties:
        city:
          type: string
          description: 城市
    weatherResponse:
      type: object
      required: [weather]
      properties:
        weather:
          type: object
          description: 天气内容

开发自己的plugin-server

Python Web框架里比较有名当属Django,Flask相对于Django而言是轻量级的Web框架。

#!/usr/env python3
# -*- coding: UTF-8 -*-

from flask import Flask, request, send_file, make_response
from flask_cors import CORS
import json
import random
import requests

#读取key
file = open('.env')
KEY=file.readline()[4:]
print(KEY)
file.readline()

app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "https://yiyan.baidu.com"}})

def make_json_response(data, status_code=200):
    response = make_response(json.dumps(data), status_code)
    response.headers["Content-Type"] = "application/json"
    return response

@app.route("/logo.png")
async def plugin_logo():
    """
        注册用的:返回插件的logo,要求48 x 48大小的png文件.
        注意:API路由是固定的,事先约定的。
    """
    return send_file('logo.png', mimetype='image/png')


@app.route("/.well-known/ai-plugin.json")
async def plugin_manifest():
    """
        注册用的:返回插件的描述文件,描述了插件是什么等信息。
        注意:API路由是固定的,事先约定的。
    """
    host = request.host_url
    with open(".well-known/ai-plugin.json", encoding="utf-8") as f:
        text = f.read().replace("PLUGIN_HOST", host)
        return text, 200, {"Content-Type": "application/json"}


@app.route("/.well-known/openapi.yaml")
async def openapi_spec():
    """
        注册用的:返回插件所依赖的插件服务的API接口描述,参照openapi规范编写。
        注意:API路由是固定的,事先约定的。
    """
    with open(".well-known/openapi.yaml", encoding="utf-8") as f:
        text = f.read()
        return text, 200, {"Content-Type": "text/yaml"}

@app.route("/get_weather", methods=["POST"])
async def get_weather():
    """
        查询天气
    """
    city = request.get_json().get('city')
    r=requests.get("第三方接口?key="+KEY+"&city="+city)
    return make_json_response(json.loads(r.text))

@app.route('/')
def index():
    return 'welcome to my webpage!'

if __name__ == '__main__':
    app.run(debug=True, host='127.0.0.1', port=8081)

第三步:上传插件

在这里插入图片描述
可以通过输入http:127.0.0.1:8081或者项目压缩包(rar、zip)提交。

在这里插入图片描述

SDK

SDK文档:https://github.com/PaddlePaddle/ERNIE-Bot-SDK
这个功能需要进行认证鉴权,付费服务,支持的模型平台有以下三个。
在这里插入图片描述

例子:
在这里插入图片描述


相关链接

百度文心一言插件文档:https://yiyan.baidu.com/developer
百度文心一言SDK:https://github.com/PaddlePaddle/ERNIE-Bot-SDK
高德天气查询文档:https://lbs.amap.com/api/webservice/guide/api/weatherinfo/#t1
高德开放平台:https://lbs.amap.com/
单词本demo:https://pan.baidu.com/share/init?surl=K7wjPMPMprxtosnF5D-3tQ&pwd=q7xa

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS中安装数据库

1.下载 网址:https://dev.mysql.com/downloads/mysql/ 按如图选择,然后点击Download 这里它让我们登录,我们直接选择不登录,直接下载 2.关闭防火墙 systemctl disable firewalld3.正式安装 切换到/usr/local下 cd /usr/l…

岳阳楼3D模型纹理贴图

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 岳阳楼,位于湖南省岳阳市岳阳楼区洞庭北路,地…

simulink同步机储能二次调频AGC,连续扰动负荷,储能抑制频率波动振荡震荡

若想观测二次调频性能,,切换为单一扰动即可,如下图所示。 AGC调速器都已经封装。后续也可加入风机光伏水电等资源。

时光相册下载 时光相册停运

可以私信或加底部联系方式,小偿支持 很遗憾听到这个消息。时光相册是一个让用户分享和保存珍贵回忆的平台,但由于各种原因,它可能已经停止运营了。建议你尽快备份你的相册和保存重要照片和视频。同时,可以考虑使用其他相册服务来…

数据结构 | 二叉树的各种遍历

数据结构 | 二叉树的各种遍历 文章目录 数据结构 | 二叉树的各种遍历创建节点 && 创建树二叉树的前中后序遍历二叉树节点个数二叉树叶子节点个数二叉树第k层节点个数二叉树查找值为x的节点二叉树求树的高度二叉树的层序遍历判断二叉树是否是完全二叉树 我们本章来实现二…

易点易动设备管理系统--提升设备能耗管理效率的工具

在当今的节能环保意识日益增强的社会背景下,设备能耗管理成为了市场推广人员关注的焦点之一。为了帮助市场推广人员提升设备能耗管理效率,易点易动设备管理系统应运而生。本文将详细介绍易点易动设备管理系统的功能和优势,以及如何借助该系统…

Python 对中文名称逐字按字母表进行排序并输出

使用场景 代码适用于需要对中文名称进行排序并规范化输出的情景,具体为处理一个包含中文姓名的文本文件,按姓名的拼音首字母进行排序,并以规范的格式输出。 排序规则: 将名称按照姓氏首字母A-Z的次序,进行排序&#x…

微服务实战系列之J2Cache

前言 经过近几天陆续发布Cache系列博文,博主已对业界主流的缓存工具进行了基本介绍,当然也提到了一些基本技巧。相信各位盆友看见这么多Cache工具后,在选型上一定存在某些偏爱: A同学说:不管业务千变万化,我对Redis的…

STM32-新建工程(标准库)

目录 STM32F10x新建工程(标准库) 移植文件夹 新建工程 添加启动文件和必需文件 在工程中加载新添加的文件 在工程中添加文件路径 在工程中添加main函数 添加lib库 添加必需文件 添加宏定义 点亮LED(标准库) STM32F10x新…

小型洗衣机什么牌子好又便宜?小型洗衣机全自动

随着科技的快速发展,现在的人们越来越注重自己的卫生问题,不仅在吃上面会注重卫生问题,在用的上面也会更加严格要求,而衣服做为我们最贴身的东西,我们对它的要求也会更加高,所以最近这几年较火爆的无疑是内…

【银行测试】第三方支付功能测试点+贷款常问面试题(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、第三方支付功能…

k8s 安装 Longhorn

Longhorn 的 helm 模板官网地址:Longhorn 加入仓库 helm repo add longhorn https://charts.longhorn.iohelm repo update开始部署 helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --version 1.5.3检查pod运行状态是…

12V转5V3A同步降压芯片WT6043

12V转5V3A同步降压芯片WT6043 WT6043是一款具有内部功率 MOSFET的同步整流降压转换器,它的工作输入范围为4V-18V,提供3A的连续输出电流,具有出色的负载和线路调节能力。WT6043采用SOT23-6封装,是一款高度集成的降压转换器&#x…

基于SSM框架的在线投票系统

基于SSM框架的在线投票系统 文章目录 基于SSM框架的在线投票系统 一.引言二.系统设计三.技术架构四.功能实现五.界面展示六.源码获取 一.引言 随着科技的不断发展,人们对于民主参与的需求也越来越高。在线投票系统应运而生,为人们提供了便捷、高效的投票…

使用dcmtk读取dicom Tag信息

dicom文件由导言、前缀和多个数据元素构成,一个.dcm文件可以形象的看成一本字典,而每个字都由特定的Tag作为检索。 Tag的值中存放有该图对应患者的姓名、年龄、性别等,还包括拍摄医院的名称、操作技师的名字等,以及每一张图的像素…

Vue学习笔记-<router-link>的replace的属性

router-link的replace属性 作用:控制路由跳转时操作浏览器历史记录的模式 浏览器的历史记录有两种写入方式:push和replace,其中push是追加历史记录(将浏览的url请求入栈),replace则是替换当前记录&#x…

Python sorted函数及用法以及如何用json模块存储数据

Python sorted函数及用法 sorted() 函数与 reversed() 函数类似,该函数接收一个可迭代对象作为参数,返回一个对元素排序的列表。 在交互式解释器中测试该函数,可以看到如下运行过程: >>> a [20, 30, -1.2, 3.5, 90, 3.…

Vulnhub-DC-4 靶机复现完整过程

一、搭建环境 1.工具 kali:攻击机 IP地址:192.168.200.4 DC-4:靶机 IP地址:暂时未知 2.注意 这里搭建环境两台机器应该选用同类的网络连接方式:这里两台的连接方式为模式 二、信息收集 1.主机发现 找寻同网段下存活的主机&…

维修上门预约小程序源码系统 附带完整的搭建教程

随着互联网的普及和科技的不断发展,人们对维修服务的需求也在不断增加。为了满足这一需求,维修上门预约小程序应运而生。 以下是部分代码示例: 系统特色功能一览: 1.用户注册登录 用户可以通过手机号或微信号注册账号&#xff0…

【C++11】线程库/异常

一:线程库 1.1:线程库(thread) 1.1.1:为什么要有线程库 1.1.2:thread库中的成员函数 1.1.3:线程函数参数 1.2:互斥锁(mutex) 1.2.1:为什么要有互斥锁 1.2.2:C11中的互斥锁 1.3:原子操作(atomic) 1.4:条件变…