当前位置:AIGC资讯 > AIGC > 正文

【文心一言】使用飞桨 AI Studio 快速搭建,看图识猜成语应用


目录

一、背景 二、实践 三、创建应用 3.1、零代码开发 3.2、应用名称 3.2、模型训练 3.3、开始训练 四、应用部署 4.1、发布项目 4.2、搜索应用 4.3、应用部署 4.4、获取令牌 4.4、导入依赖 4.5、配置CORS 4.6、使用测试API 4.7、运行 4.8、测试API接口 4.9、前端API接口 五、启动前端 5.1、模块文件夹 5.2、基础模块 5.3、镜像源切换 5.4、安装服务依赖 5.5、启动前端 5.6、修改环境配置 5.7、运行效果 六、完整代码 七、总结

一、背景

在大模型时代,人人都能成为大模型开发者!
飞桨星河社区是百度飞桨和文心大模型的生态社区,为开发者和生态合作伙伴提供算力、模型、数据、工具链、社区交流等全方位服务。开发者可以通过星河社区提供的开发工具集ERNIE Bot SDK,调用领先的文心4.0大模型能力,高效开发高质量的文心一言应用,与飞桨和文心大模型生态共建、共创、共享。

二、实践

本次使用 飞桨 AI Studio 快速搭建,看图猜成语应用,实现思路如下:
1、体验零代码开发、创建AI绘画应用
2、部署自己训练的AI绘画模型,或者使用已经社区已经训练好得模型
3、搭建 Python、Node 运行环境
4、基于 Python Flask 进行看图猜成语应用的API开发
5、基于 Vue 构建看图猜成语应用

三、创建应用

3.1、零代码开发

打开应用页面,点击创建应用,创建零代码开发选项

3.2、应用名称

博主这里得应用名称是【看图猜歌曲】,根据自己功能取对应的应用名称,然后应用类型选择AI绘画应用

3.2、模型训练

1)基础模型
一般选择Stable Diffusion XL,质量会比较高
2)标记词
标记词输入仅限英文、数字、-、_ 并且需要在10个字符以内。
标记词用来标记训练数据内容,建议使用无意义的字符,无意义字符串更利于模型的训练效果,我的理解是不会相互冲突,独立在一个训练模型里
3)迭代步数
默认使用普通(1000)
模型训练的轮数越大,质量越高,相应的训练时间也越长。
4)学习率
默认使用适中(0.0001)
模型训练每一次迭代的步长,步长越大,收敛越快,步长越小,收敛越慢。
5)上传训练数据
数据集可以是特定的图像风格(梵高画风、新海诚等),也可以是特定的人物或物体,数据数量需要在10到30张。图片的背景尽量干净,如果是人物/物体,尽量使用统一的人物形象,如果是风格,尽量保证场景多样性,同时图片质量(分辨率)越高越好。

3.3、开始训练

保存应用更改后,点击开始训练即可,这时会在右上角看到训练已经在排队中,可以点击查看详情浏览训练日志,训练时间在 20-50 分钟左右

应用构建成功

四、应用部署

封装大模型API

4.1、发布项目


4.2、搜索应用

点应用页面,输入自己应用名称并点击跳转到体验页面

4.3、应用部署

点击生成画作,等几秒后生成,即可点击应用部署按钮

服务运行成功如下

4.4、获取令牌

可前往,https://aistudio.baidu.com/index/accessToken 查看访问令牌

4.4、导入依赖

这里要特别注意token那里,记得是token+空格后才是字符串,否则会提示无权限。

import requests
from flask import Flask, request, jsonify
from flask_cors import CORS
import random

4.5、配置CORS

app = Flask(name)
CORS(app, resources={r"/": {"origins":""}}, send_wildcard=True)

4.6、使用测试API

app = Flask(name)
CORS(app, resources={r"/": {"origins":""}}, send_wildcard=True)

4.7、运行

完成上面代码后,即可运行python代码,会有如下链接,用于API接口访问。
每个人的环境和习惯不一样,博主python用的少,就通过下面方式启动,能运行起来就行。

& “C:/Program Files (x86)/Microsoft Visual Studio/Shared/Python39_64/python.exe” d:/svn/BaiduPython/feijiang_node20-master/app.py

查看页面效果
终端也是能够监测有访问请求

4.8、测试API接口

app.py因为已经配置了一个test的API接口路由,所以访问test路由返回如下信息说明调用成功

4.9、前端API接口

@app.route('/image/generations', methods=['POST'])
def generation():
    data = request.json
    n = data.get('n')
    prompt = data.get('prompt')
    size = data.get('size')
    steps = data.get('steps')

    return query({
        'seed': random.randint(100000, 999999999),
        'n': n,
        'negative_prompt': '皮卡丘',
        'prompt': prompt,
        'size': size,
        'steps':steps
      })

五、启动前端

前端源码:https://gitee.com/TestsLing/feijiang_node20

5.1、模块文件夹

在安装过程中,可能会存在权限问题,需要以管理员权限运行cmd,并跳转到对应目录进行操作
确保对应目录下有安装模块文件夹和文件

5.2、基础模块

npm install
安装过程中,会自动创建基础功能模块文件夹和文件

5.3、镜像源切换

有时候网络速度问题,可能安装不成功,可以试下切换镜像源

npm config set registry https://registry.npm.taobao.org
升级版本
npm install -g npm
再安装
npm install @vue/cli-service

5.4、安装服务依赖

在目录下创建文本文档,requirement.txt,内容如下

requests
flask
flask_cors

执行以下命令进行依赖安装

pip install -i https://pypi.douban.com/simple -r requirement.txt

5.5、启动前端

运行启动命令,直接在浏览器上输入下面地址

npm run serve

5.6、修改环境配置

打开环境配置文件,将地址改为API地址,就直接使用test那个路由。
然后重新运行下前端

5.7、运行效果

六、完整代码

# -*- coding: utf-8 -*-

import requests
from flask import Flask, request, jsonify
from flask_cors import CORS
import random

app = Flask(__name__)
CORS(app, resources={r"/*": {"origins":"*"}}, send_wildcard=True)

API_URL = "https://ca13k4vfxd48w6sa.aistudio-hub.baidu.com/image/generations"
headers = {
    # 请前往 https://aistudio.baidu.com/index/accessToken 查看 访问令牌
    "Authorization": "token 您的at",
    "Content-Type": "application/json"
}


def query(payload):
    response = requests.post(API_URL, headers=headers, json=payload)
    return response.json()

@app.route('/')
def hello():
    return 'API应用已启动!'

@app.route('/test')
def test():
    return query({
        "prompt":"杰作,高品质,超精细,全细节,8k"
    })

@app.route('/image/generations', methods=['POST'])
def generation():
    data = request.json
    n = data.get('n')
    prompt = data.get('prompt')
    size = data.get('size')
    steps = data.get('steps')

    return query({
        'seed': random.randint(100000, 999999999),
        'n': n,
        'negative_prompt': '皮卡丘',
        'prompt': prompt,
        'size': size,
        'steps':steps
      })


if __name__ == '__main__':
    app.run(host='0.0.0.0')

七、总结

通过目标图片的训练,能够返回规定返回元素的背景图片,这样就能够逐渐转为我们自己垂直领域模型数据,并且能够快速构建和发布具有外网服务的API接口,我们只需要在自己属于的后端开发领域写好接口对接即可,然后处理好返回来的json数据,返回到目标前端。

更新时间 2023-12-15