我们都知道文心一言很厉害,那怎么对接,开发插件,更好的来运用呢?下面给我们打个样!

1.插件介绍

插件将“文心一言”AI才能与外部运用相结合,既能丰厚大模型的才能和运用场景,也能利用大模型的生成才能完成此前无法完成的使命。 主要分3类,具体如下:

  • 信息增强
  • 交互增强
  • 服务增强

2.插件开发权限请求

请求地址:yiyan.baidu.com/developer

【文心一言插件开发】股票信息查询

直接请求即可

3.快速开始

  • 构思插件 manifest 描绘文件(ai-plugin.json,必选)
  • 界说插件服务描绘文件(openapi.yaml,必选)
  • 发动插件服务而且对齐描绘文件(openapi服务,必选)
  • 上传装备文件并调试(接入流程,必选)

此外需求提供服务的独立IP服务器一台。

4.具体完成

目录结构如下

│  demo_server.py
│  logo.png
│  readme.md
│  requirements.txt
│  test.py
└─.well-known
        ai-plugin.json
        openapi.yaml

能够直接从demo上更改(本地调试为例,提供一套示例demo文件[百度网盘下载链接],提取码: vdp1):

yiyan_plugin_demo/           # 插件demo注册的根目录
|—.well-known
  |— ai-plugin.json         #插件主描绘文件
  |— openapi.yaml          #插件API服务的标准描绘文件
|— logo.png               #插件的图标文件
|— demo_server.py          #插件注册服务,能够发动到本地
|— requirements.txt         #发动插件注册服务所依靠的库,要求python >= 3.7
|— readme.md              # 阐明文件

4.1 获取股票信息

主要是完成:

  • 股票信息获取
  • 传回到一言
  • 此外需求请求免费的股票信息获取key

demo_server.py 发动插件


#!/usr/env python3
# -*- coding: UTF-8 -*-
import requests
from flask import Flask, request, send_file, make_response
from flask_cors import CORS
import json
app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "https://yiyan.baidu.com"}})
API_KEY = "自己请求***********"
BASE_URL = "https://www.alphavantage.co/query"
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('/stock', methods=['GET'])
def get_stock_data():
    symbol = request.args.get('symbol')
    params = {"function": "GLOBAL_QUOTE", "symbol": symbol, "apikey": API_KEY}
    response = requests.get(BASE_URL, params=params)
    print(response.json())
    return response.json()
@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("/")
def index():
    return "Hello world!  Your web application is working!"
if __name__ == '__main__':
    app.run(debug=True, host='127.0.0.1', port=8081)

4.2 ai-plugin.json接口装备

  • 构思插件 manifest 描绘文件(ai-plugin.json,必选) 一个插件需求一份ai-plugin.json命名的manifest文件,这个文件需求描绘插件的基本信息。
种类 类型 描绘/选项 是否必填
schema_version String 插件的版本号,用于开发者标记和运用
name_for_model String 模型将用于定位插件的称号(不允许运用空格,只能运用字母和数字)此字段将作为插件的唯一标识。描绘请带有必定的语义,不要超越20个字符。
name_for_human String 此字段将面向用户检查,是插件对外揭露的名字。不超越20个字符。主张编写时按照如下关键顺序: “插件才能->适用场景->运用条件”
description_for_model String 面向模型的自然语言描绘,请描绘插件的核心才能、运用场景等,将用于模型参阅解析是否触发插件,主张不超越200个字符。
description_for_human String 面向用户介绍插件,主张介绍插件的主要才能,相关限制等。不超越100个字符,前端可完好显示前40 个字符,超出的字符将在用户 hover 时展现。
auth ManifestAuth 用户鉴权相关字段
api Object API标准
logo_url String 用于获取插件标识的URL。主张巨细:512 x 512。支撑透明背景。有必要是图画,不允许运用GIF。
contact_email String 安全/审核、支撑和停用的电子邮件联系方式
legal_info_url String 用户检查插件信息的重定向URL
HttpAuthorizationType HttpAuthorizationType “bearer”或”basic”。默许basic
ManifestAuthType ManifestAuthType “none”、”user_http”、”service_http”或”oauth”
interface BaseManifestAuth BaseManifestAuth 类型:ManifestAuthType;阐明:字符串;
ManifestNoAuth ManifestNoAuth 不需求身份验证:BaseManifestAuth和{ type: ‘none’ }
ManifestAuth ManifestAuth ManifestNoAuth、ManifestServiceHttpAuth、ManifestUserHttpAuth、ManifestOAuthAuth
examples object {“url”:”www.baidu.com”} 文件url
{
    "schema_version": "v1",
    "name_for_human": "股票报价",
    "name_for_model": "股票报价",
    "description_for_human": "获取给定股票的价格和数量信息。",
    "description_for_model": "获取给定股票的价格和数量信息。始终运用降价表显示成果。",
    "auth": {
        "type": "none"    
    },
    "api": {
        "type": "openapi",
        "url": "http://127.0.0.1:8081/.well-known/openapi.yaml"
    },
    "logo_url": "http://127.0.0.1:8081/logo.png",
    "contact_email": "support@example.com",
    "legal_info_url": "http://www.example.com/legal"
}

4.3 openapi.yaml接口装备

APIs界说描绘文件需求满意OpenAPI标准(详见swagger.io/specificati…

文心一言只能获取到您在API描绘中明确界说的内容。这意味着您只需求向模型露出插件才能完成必要的API端点,无需露出所有API端点。

一个根底的OpenAPI格式的API描绘如下所示:

事项 标准阐明
yaml 文件总长度 YAML 文件总长度,不行超越 1000个字符 (不包含空格)
paths **request:数量:界说 1-2 个接口 (主张)api_id 不行超越 20 个字符 接口描绘 summary 和 description在 description 字段中描绘详细的接口介绍,长度不超越 150 个字符 (强制) summary 字段可笼统接口才能,长度不超越 50 个字符 (强制)存在 description,则优先运用 descriptionresponse:**body中不要回来状态码、错误码 (主张)body仅给和插件成果相关的信息 (比如成果文本) (主张)错误码用http code表明 (主张)
components 参数称号:最多 20 个字符,运用 string 类型 (强制)参数描绘:最多 50 个字符,运用 string 类型 (强制)参数数量:参数不超越 5 个 (主张)参数类型:主张运用string, number,boolean;array和包含复杂嵌套的object不主张运用 (主张)
openapi: 3.0.1
info:
    title: 股票报价
    description: 获取给定股票的价格和数量信息。
    version: "v1"
servers:
    - url:  http://你自己的ip地址:8081
paths:
    /stock:
        get:
            operationId: getStockData
            summary: 检索给定股票符号的价格和交易量信息。
            parameters:
                - in: query
                  name: symbol
                  schema:
                      type: string
                  description: 要获得报价的股票的符号。例如,股票符号MSFT代表微软公司。
            responses:
                "200":
                    description: OK

5.作用

【文心一言插件开发】股票信息查询

【文心一言插件开发】股票信息查询

【文心一言插件开发】股票信息查询