文心一言插件开发全流程,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: getWeathersummary: 展示天气requestBody:required: truecontent:application/json:schema:$ref: "#/components/schemas/getWeather"responses:"200":description: 天气展示完成content:application/json:schema:$ref: "#/components/schemas/weatherResponse"
components:schemas:getWeather:type: objectrequired: [city]properties:city:type: stringdescription: 城市weatherResponse:type: objectrequired: [weather]properties:weather:type: objectdescription: 天气内容
开发自己的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_urlwith 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/
相关文章:
文心一言插件开发全流程,ERNIE-Bot-SDK可以调用文心一言的能力
文心一言插件开发 前言插件插件是什么工作原理申请开发权限 开始第一步:安装python第二步:搭建项目manifest 描述文件:ai-plugin.json插件服务描述文件:openapi.yaml开发自己的plugin-server 第三步:上传插件 SDK相关链…...
Keepalived+LVS负载均衡
Keepalived 是一个用于实现高可用性的开源软件,它基于 VRRP(Virtual Router Redundancy Protocol)协议,允许多台服务器协同工作,以确保在某个服务器出现故障时服务的连续性。Keepalived 的核心思想是将多台服务器配置成…...
接口测试学习
1、curl 命令 无参:curl -X POST -H"Authorization: abcdefghijklmn" https://xxx.xxxxx.com/xxxx 有参:curl -X POST -H"Authorization:abcdefghijklmn " -H"Content-Type:application/json" https://xxx.xxxxx.com/…...
怎么用外网访问自己的网站?快解析内网端口映射来实现
想要访问服务器上的网站需要直接或间接访问服务器IP地址,但是如果服务器没有公网IP地址,那么就需要借助外网进行访问。当我们需要远程访问内网的Web服务器时,我们需要使用一些技术来实现此目的。这就需要通过使用类似快解析内网端口映射方式进…...
zabbix学习1--zabbix6.x单机
文章目录 1. 环境2. MYSQL8.02.1 单节点2.2 配置主从 3. 依赖组件4. zabbix-server5. agent5.1 yum5.2 编译 附录my.cnfJDK默认端口号 1. 环境 进入官网查看所需部署环境配置以及应用版本要求https://www.zabbix.com/documentation/current/zh/manual/installation/requiremen…...
Flink 的 Kafka Table API Connector
Flink datastream connectors 和 Flink table api connectors 的区别: Flink DataStream Connectors和Table API Connectors是Flink中用于连接外部数据源的两种不同的连接器。 1. Flink DataStream Connectors: - Flink DataStream Connectors是用于将外部数据源连…...
tcpdump 命令
一、TCPDUMP指定IP 在网络流量分析过程中,我们经常需要对指定的IP进行抓取和分析。使用TCPDUMP指定IP非常简单,只需要通过命令行参数-i指定需要抓取的网卡,并使用host参数指定目标IP地址即可:tcpdump -i eth0 host 192.168.0.1 上…...
哪些测试项目可以使用自动化测试?
通常,软件测试v的测试方式分为人工测试和自动化测试,人工测试是由测试人员编写并执行测试用例,然后观察测试结果与预期结果是否一致的过程;自动化测试是通过测试工具来代替或辅助人工去验证系统功能是否有问题的过程。 采用自动化测试需要满…...
【八大经典排序算法】冒泡排序
【八大经典排序算法】冒泡排序 一、概述二、思路解读三、代码实现四、优化 一、概述 冒泡排序由于其简单和易于理解,使其成为初学者学习排序算法的首选,也是初学者接触到的第一个排序算法。其原理是通过重复交换相邻的元素来将最大的元素逐步“冒泡”到…...
【IEEE会议】第五届机器人、智能控制与人工智能国际学术会议(RICAI 2023)
【IEEE列表会议】第五届机器人、智能控制与人工智能国际学术会议(RICAI 2023) 2023 5th International Conference on Robotics, Intelligent Control and Artificial Intelligence 第五届机器人、智能控制与人工智能国际学术会议(RICAI 20…...
如何在本地 Linux 主机上实现 Yearning SQL 审核平台的远程访问?
文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用…...
android.support.multidex.MultiDexApplication:DexPathList
修改项目的build.gradle文件,使用multidex并添加multidex库作为依赖,如下所示: android { defaultConfig { ... minSdkVersion 21 targetSdkVersion 28 multiDexEnabled true } ... } dependencies { compile com.android.support:multidex…...
云HIS医院信息化系统:集团化管理,多租户机制,满足医院业务需求
随着云计算、大数据、物联网等新兴技术的迅猛发展,HIS模式的理念、运行机制更新,衍生出了新的HIS模式——云HIS。云HIS是基于云计算、大数据、互联网等高新技术研发的医疗卫生信息平台,它实现了医院信息化从局域网向互联网转型,并…...
Docker拉取nginx镜像,部署若依Vue前端
前言 本文主要用来描述,如何用nginx部署若依项目的前端。 一、Docker 拉取 Nginx镜像 命令:docker pull nginx 二、Vue项目打包 2.1 先配置线上后端路径 说明:由于我打包命令是 npm run build:stage ,所以项目生效的环境文…...
简单介绍神经网络中不同优化器的数学原理及使用特性【含规律总结】
当涉及到优化器时,我们通常是在解决一个参数优化问题,也就是寻找能够使损失函数最小化的一组参数。当我们在无脑用adam时,有没有斟酌过用这个是否合适,或者说凭经验能够有目的性换用不同的优化器?是否用其他的优化器可…...
JL653—一个基于ARINC653的应用程序仿真调试工具
JL653是安装在PC机Windows操作系统上面的一层接插件,它能够真实地模拟ARINC653标准规定的功能性行为,从而可以供研发人员在PC机Windows环境下高效、快速的进行基于ARINC653的应用程序的开发、调试等。 JL653提供了ARINC 653 Part 1中要求的以下服务&…...
MQTT Paho Android 支持SSL/TLS(亲测有效)
MQTT Paho Android 支持SSL/TLS(亲测有效) 登录时支持ssl的交互 这是调测登录界面设计 代码中对ssl/tls的支持 使用MqttAndroidClient配置mqtt客户端请求时,不加密及加密方式连接存在以下几点差异: url及端口差异 val uri: String if (tlsConnect…...
STM32——SPI通信
文章目录 SPI(Serial Peripheral Interface)概述:SPI的硬件连接:SPI的特点和优势:SPI的常见应用:SPI的工作方式和时序图分析:工作模式传输模式与时序分析工作流程 SPI设备的寄存器结构和寄存器设…...
Linux虚拟机局域网IP配置
前言 应用程序包部署在主机(Window)的虚拟机(Linux CentOS7)上,把主机当做一个服务器,在局域网中访问部署在主机上的应用程序,配置Linux网络。 文章如有侵权,无意为之,…...
MacOS删除.DS_Store文件
目录 .DS_Store是什么删除命令防止再生命令 .DS_Store是什么 在 Mac OS X 系统下,几乎绝大部分文件夹中都包含 .DS_Store 隐藏文件,这里保存着针对这个目录的特殊信息和设置配置,例如查看方式、图标大小以及这个目录的一些附属元数据。 而在…...
为什么你的unipush消息收不到?详解个推通道状态检测与事件触发逻辑
为什么你的UniPush消息收不到?深度解析推送失效的7大关键因素 在移动应用开发中,消息推送是维系用户活跃度的核心功能之一。许多开发者在使用UniPush服务时,经常会遇到消息未能如期送达的困扰。本文将系统性地剖析消息推送失效的底层逻辑&…...
OneAgent智能体全球发布会圆满落幕:引领金融AI交易新时代
2026年3月25日,聚焦金融AI领域的盛会《OneAgent智能体全球产品发布会》在中国杭州成功落幕。本次发布会吸引了全球金融科技领域的行业专家、投资机构以及技术爱好者的关注,标志着OneAgent在全球AI金融市场的战略布局正式启动。AI原生对冲交易新物种&…...
别再手动同步了!利用STM32定时器主从模式与ITR触发,实现硬件级精准定时联动
嵌入式系统中的定时器协同:STM32主从模式与ITR触发的硬件级联动 在工业控制、电机驱动和精密测量等场景中,多个定时器的精确协同往往是系统可靠性的关键。想象一下,当你的电机控制PWM需要与电流采样ADC严格同步,或者多个通信接口必…...
苹果内购订阅的“时间陷阱”:如何正确处理UTC与东八区的时间转换(附Java代码)
苹果订阅时间戳的时区陷阱:UTC与东八区转换的实战指南 1. 为什么时间戳处理如此重要? 在苹果应用内购(IAP)订阅系统中,时间戳处理看似简单,实则暗藏玄机。许多开发者都曾踩过这样的坑:用户明明购…...
基于springboot大学生兼职管理系统设计与开发(源码+精品论文+答辩PPT等资料)
博主介绍:CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…...
多模态扩展实验:OpenClaw+Qwen3-32B处理图片描述生成
多模态扩展实验:OpenClawQwen3-32B处理图片描述生成 1. 实验背景与动机 最近在探索如何将OpenClaw的自动化能力扩展到视觉领域。作为一个长期依赖文本交互的框架,OpenClaw能否结合多模态大模型处理图像任务?这引发了我的兴趣。恰好手头有台…...
5分钟掌握League Akari:英雄联盟玩家的智能助手终极指南
5分钟掌握League Akari:英雄联盟玩家的智能助手终极指南 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari…...
AsrTools全攻略:革新语音转文字效率的智能解决方案
AsrTools全攻略:革新语音转文字效率的智能解决方案 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate tex…...
旧Mac重生指南:用OpenCore Legacy Patcher解锁macOS新版本
旧Mac重生指南:用OpenCore Legacy Patcher解锁macOS新版本 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台性能依然强劲却被苹果官方抛弃的旧Mac&…...
Clawdbot网关配置教程:实现Qwen3-VL:30B与飞书的无缝对接
Clawdbot网关配置教程:实现Qwen3-VL:30B与飞书的无缝对接 1. 准备工作与环境概述 在开始配置前,请确保已完成以下准备工作: 已在CSDN星图AI云平台完成Qwen3-VL:30B的私有化部署(参考上篇教程)拥有飞书开放平台的企业…...
