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

news2024/12/27 12:23:34

文心一言插件开发

  • 前言
  • 插件
    • 插件是什么
    • 工作原理
    • 申请开发权限
  • 开始
    • 第一步:安装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/

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

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

相关文章

记录一次开机内存分析的全过程

作者:zzy的学习笔记 记录一次开机内存分析的全过程,尽量详尽的介绍常用内存分析工具和命令行的使用,结合具体问题探讨开机内存分析的实践经验。通过这篇文章我会介绍开机内存的常用测试分析工具的基本使用方法,以及如何通过抓取出…

在UMG中播放图像序列,出现卡帧怎么办?

在虚幻引擎中播放图像序列 前期步骤可以参考上面链接中官方文档的步骤1-13 如果在媒体播放器中播放的时候,出现卡帧现象,说明你的图片序列的帧率与默认的不匹配 需要在lmg Media Source类型文件中,覆写你的帧率 比如,我的图片序…

VSCode错误整理

文章目录 一、zsh: command not found: python二、Python pip安装Django异常Could not find a version that satisfies the requirement pytz (from django)三、WARNING: You are using pip version 21.2.4, however version 23.2.1 is available.四、pip install django下载报…

Sui参会必备|Token 2049活动一览

TOKEN2049是在新加坡举办的一年一度首屈一指地加密货币活动,吸引了顶级的Web3公司和项目的创始人和高管,他们将在这里分享行业观点、聚焦全球发展,同时以独特且广泛的视角审视这个生态系统及其广阔的机会。 自5月份主网上线以来,S…

lv3 嵌入式开发-11 Linux下GDB调试工具

目录 1 GDB简介 2 GDB基本命令 3 GDB调试程序 1 GDB简介 GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。 一般来说,GDB主要帮助你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序&#…

七、MySql表的内置函数

文章目录 一、日期函数(一)常用日期函数1.获得年月日:2.获得时分秒:3.获得时间戳:4.在日期的基础上加日期:5.在日期的基础上减去时间:6.计算两个日期之间相差多少天 (二)…

基于Spring Boot 3.1.0的Dubbo代码实现(以Redis作为注册中心)

目录 基于Spring Boot 3.1.0的Dubbo代码实现(以Redis作为注册中心)一 简介二 前言三 文档查阅四 依赖项1 注意事项2 版本3 dependencyManagement依赖4 dependency依赖 五 配置文件1 注意事项2 代码 六 yml文件 基于Spring Boot 3.1.0的Dubbo代码实现&…

RRU-Net:The Ringed Residual U-Net for Image Splicing Forgery Detection阅读笔记一

文章目录 1. Introduction2. Related Work3. The Ringed Residual U-Net (RRU-Net)3.1. Residual Propagation3.2. Residual Feedback3.3. Ringed Residual Structure and Network Architectures 4. Evaluation Experiment and Comparative Analysis 1. Introduction 根据现有…

Golang 常用的几种密码加密方式

加密方式 加密有两种方式,一种是直接加密,一种是盐值加密 **直接加密(Plain Hashing)**指的是将原始密码直接进行加密,而不进行任何额外的操作。这种方式可能存在一些安全风险,因为相同的密码在经过加密后…

STM32F4X DMA

STM32F4X DMA 什么是DMASTM32F4X DMADMA框图DMA通道DMA仲裁器DMA FIFO DMA传输模式DMA传输方向存储器到存储器存储器到外设外设到存储器 DMA循环模式和普通模式循环模式(Circular)普通模式(Normal) DMA源、目标寄存器增量模式DMA例…

一文简介,数字时代的数据交易模式

在数字时代,数据作重要的信息和资源,未来获得更高质量的数据资源,数据交易越来越常见,数据也成为企业重要的无形资产。 2022年3月出台的《中共中央、国务院关于加快建设全国统一大市场的意见》强调要加快培育数据要素市场&#xf…

Zabbix登录绕过漏洞复现(CVE-2022-23131)

0x00 前言 最近在复现zabbix的漏洞(CVE-2022-23131),偶然间拿到了国外某公司zabbix服务器。Zabbix Sia Zabbix是拉脱维亚Zabbix SIA(Zabbix Sia)公司的一套开源的监控系统。该系统支持网络监控、服务器监控、云监控和…

Jetpack Compose 1.5 发布:全新 Modifier 系统助力性能提升

不久前 Compose 1.5.0 稳定版发布,在组合的性能方面得到明显改善,这主要归功于对 Modifier API 的持续重构。 Modifier 是 Compose 中的重要概念,为 Composition 中的 LayoutNode 配置各种样式信息以用于后续渲染。在 1.3.0 之前的 Modifier …

Java知识点二

Java知识点二 1、Comparable内部比较器,Comparator外部比较器2、源码结构的区别:1)Comparable接口:2)Comparator接口: 2、Java反射 1、Comparable内部比较器,Comparator外部比较器 我们一般把Comparable叫…

【MySQL】表的增删改查

目录 MySQL表的增删查改 Create 单行数据全列插入 多行数据指定列插入 插入否则更新 替换数据 Retrieve SELECT 列 全列查询 指定列查询 查询字段为表达式 为查询结果指定别名 结果去重 WHERE 条件 查询英语不及格的同学及其英语成绩 查询语文成绩在80到90分的…

【自动化测试】如何在jenkins中搭建allure

相信大家在做自动化测试过程中,都会用到自动化测试环境,目前最常见的就是通过容器化方式部署自动化测试环境,但对于一些测试小白,不是很会搭建持续集成环境,特别是从0-1的过程,需要自行搭建很多依赖环境&am…

完全保密的以太坊交易:Aztec网络的隐私架构

1. 引言 Aztec为隐私优先的以太坊zkRollup:即其为具有完全隐私保护的L2。 为了理解私有交易的范式变化性质,以及为什么将隐私直接构建到网络架构中很重要,必须首先讨论为什么以太坊不是私有的。 2. 以太坊:公有链 以太坊为具有…

设计师常用的8款作图软件推荐

在数字时代,绘图软件已经成为设计师不可缺少的工具。从图形设计到插图,从传统绘图到人工智能绘画,为了实现高效、方便、创意的设计,设计师需要一个强大的绘图软件。本文将介绍8个易于使用的绘图软件,每个软件都具有独特…

ME51N 采购申请屏幕增强仅显示字段

1、业务需求 通过委外工单生成的采购申请,需要将自定义“图号”字段显示在采购申请中,且只用于显示即可 2、增强实现 增强表EBAN的结构CI_EBANDB 增强点CMOD:MEREQ001 出口EXIT_SAPLMEREQ_001 首先在TOP文件中引入全局CI_EBANDB 创建子屏…

动态渲染 echarts 饼图(vue 2 + axios + Springboot)

目录 前言1. 项目搭建1.1. 前端1.2. 后端 2. 后端数据渲染前端2.1 补充1:在 vue 中使用 axios2.2. 补充2:Springboot 处理跨域问题2.3. 修改前端代码2.3.1 修改饼图样式2.3.2 调用后台数据渲染饼图2.3.3 改造成内外两个圈 前言 因为上文中提到的需求就是…