手把手带你用Python和文心一言搭建《AI看图写诗》网页项目(附上完整项目源码)

news2024/11/25 0:38:03

今年年初,ChatGPT的火爆在全球掀起AI大模型的开发热潮,国内外的科技公司纷纷加入“百模大战”行列。百度在率先发布了国内第一款人工智能大语言模型“文心一言”后,又推出了文心千帆大模型平台,帮助企业和开发者加速大模型应用落地。

而最近百度创始人、董事长兼首席执行官李彦宏在一场活动上透露了百度世界大会2023的重磅消息,他将在10月17号百度世界大会召开的时候,“手把手教你怎么做AI原生应用”。

我自己也突发奇想用文心一言搭建一个AI小应用:《看图写诗》,说干就干,接下来就跟着博主一起实现这个网页吧!


文章目录

  • 一、实现思路
  • 二、《AI看图写诗》网页搭建实现步骤
    • 2.1 网页前端
    • 2.2 图像识别
      • 2.2.1 安装百度智能云Python SDK
      • 2.2.2 创建应用
      • 2.2.3 Python代码测试
    • 2.3 文心一言写诗
      • 2.3.1 安装ERNIE Bot SDK
      • 2.3.2 获取令牌Token
      • 2.3.3 Python代码测试
    • 2.4 网页后端
    • 2.5 完整项目拷贝
    • 2.6 项目运行步骤
    • 2.7 运行流程视频
  • 三、未来优化
  • 四、总结

一、实现思路

1、设计一款网页实现接受上传图片和接收文心一言令牌Token功能

2、Python调用百度智能云的图片识别接口,识别图片类别和内容

3、Python调用文心一言接口,输入图片类别,通过文心一言写诗

4、Python后端将诗返回到网页上

二、《AI看图写诗》网页搭建实现步骤

2.1 网页前端

网页前端采用HTML+CSS+JavaScript技术,实现了上传图片、展示图片,传入百度智能云AppId、百度智能云API Key、百度智能云Secret Key、飞浆星河Access Token和点击写诗功能,界面如下:

2.2 图像识别

百度智能图像识别接口是百度提供的一项人工智能服务,能够对图片进行高精度的内容识别,该接口支持多种图像识别任务,包括通用物体识别、场景识别、文字识别、动物识别等,这里我们通过Python直接调用免费的通用物体识别图像识别接口,极大的提高了开发工作的效率。

2.2.1 安装百度智能云Python SDK

可以通过pip安装百度智能云Python SDK。在终端下输入以下命令:

pip install baidu-aip 

安装完毕后,你就可以在Python代码中导入该包了:

from aip import AipImageClassify

2.2.2 创建应用

1、登录百度智能云的官网:https://console.bce.baidu.com

2、依次找到点击 产品 》人工智能 》图像识别

3、登录控制台后点击免费尝鲜:

4、勾选全部然后点击0元领取:

5、创建成功后,点击应用进入应用详情页,进入应用管理菜单,点击API Key,可查看API Key和Secret Key,用于Python代码调用API。

在这里插入图片描述

2.2.3 Python代码测试

经过以上两步准备工作,我们便可以开始编写Python代码,实现百度智能图片识别。以下是一个简单的测试示例,需要修改AppId 、API Key、Secret Key和图片路径:

from aip import AipImageClassify

# 定义百度智能云API的参数
APP_ID = '你的API ID'
API_KEY = '你的API Key'
SECRET_KEY = '你的 Secret Key'

# 实例化AipImageClassify
client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

# 读取并设置图片路径
filePath = "1.png"

# 打开图片文件
with open(filePath, 'rb') as fp:
   image = fp.read()

# 定义可选参数
options = {"baike_num": 1}

# 调用图片标签识别接口
result = client.advancedGeneral(image, options)

# 输出结果
for res in result['result']:
   print(res['keyword'], end=", ")

我输出图片是这张风景图,没有文字还是很有挑战的:

识别效果,图片上的信息都给识别出来了:

在这里插入图片描述

接下来我们就需要把识别出来的图像内容传给文心一言写诗了。

2.3 文心一言写诗

这里我是通过ERNIE Bot SDK提供便捷易用的接口,可以调用文心一言的能力,包含文本创作、通用对话、语义向量、Al作图等,并且可以免费调用100万Token:

2.3.1 安装ERNIE Bot SDK

ERNIE Bot SDK是文心&飞桨官方提供的Python软件开发工具包,简称EB SDK,通过下面的pip命令安装:

pip install erniebot

EB SDK认证鉴权主要是设置后端和access token,分别通过api_type和access_token参数来指定,默认使用aistudio后端(api_type为aistudio),将个人中心令牌Token,复制后填入下面代码中即可(替换{YOUR-ACCESS-TOKEN}):

2.3.2 获取令牌Token

1、打开飞浆星河社区的官网:https://aistudio.baidu.com/cooperate/erniebotsdk

2、注册完账号后,点击查看:

3、获取自己的Token令牌并复制,后面我们用Python去调用接口会使用到:

2.3.3 Python代码测试

下面我们来单独测试一下通过ERNIE Bot SDK调用文心一言接口写诗的能力,完整代码如下(只需要替换为自己的Token):

import erniebot


if __name__ == '__main__':
   # img_str,access_token需要传入
   img_str = '树, 瀑布, 江河, 峡谷, 山峦' # 这里需要图片识别的内容信息
   access_token = "这里替换为自己的TOken"
   content = '根据'+img_str,'写10首两句七言诗'

   erniebot.api_type = 'aistudio'
   erniebot.access_token = access_token
   response = erniebot.ChatCompletion.create(
       model='ernie-bot',
       messages=[{'role': 'user', 'content': f"{content}”"}],
   )
   print(response.result)

运行输出结果还是非常不错的:

在这里插入图片描述

接下来就只需要将生成的诗句传递给网页端展示出来就可以啦。

2.4 网页后端

使用到了下面两个Python库,执行pip命令安装一下:

pip install fastapi
pip install pydantic

网页后端实现接收前端传入的图片和令牌,然后调用百度智能云的图片识别接口和文心一言大模型接口,然后将生成的诗句返回给网页前端的功能,后端代码如下:

from fastapi import FastAPI, File, Form, UploadFile
from pydantic import BaseModel
from fastapi.middleware.cors import CORSMiddleware
import erniebot
from aip import AipImageClassify

app = FastAPI()
origins = [
   "http://localhost.tiangolo.com",
   "https://localhost.tiangolo.com",
   "http://localhost",
   "http://localhost:8000",
   "http://localhost:63342",
   # "http://127.0.0.1:8000"
]
app.add_middleware(
   CORSMiddleware,
   allow_origins=origins,
   allow_credentials=True,
   allow_methods=["*"],
   allow_headers=["*"],
)
class PoeSimpleReq(BaseModel):
   access_token: str
   app_id: str
   api_key: str
   classify_secret_key: str
   file: bytes = File(default=None)

@app.post("/poe")
async def read_root(access_token: str = Form(), app_id: str = Form(), api_key: str = Form(),
                   classify_secret_key: str = Form(), image: UploadFile = File()):
   if access_token is None or app_id is None or api_key is None or classify_secret_key is None or classify_secret_key is None or image is None:
       return "Supplementary information on the left"
   access_token = access_token

   APP_ID = app_id
   API_KEY = api_key
   CLASSIFY_SECRET_KEY = classify_secret_key

   client = AipImageClassify(APP_ID, API_KEY, CLASSIFY_SECRET_KEY)
   # 定义可选参数
   options = {"baike_num": 5}
   # 调用图片标签识别接口
   result = client.advancedGeneral(image.file.read(), options)
   print("pic result:", result)
   keyword_list = []

   for res in result['result']:
       keyword_list.append(res['keyword'])
   keyword_string = ', '.join(keyword_list)
   content = '根据' + keyword_string + '写10首两句七言诗'
   erniebot.api_type = 'aistudio'
   erniebot.access_token = access_token
   response = erniebot.ChatCompletion.create(
       model='ernie-bot',
       messages=[{'role': 'user', 'content': f"{content}”"}],
   )

   data_str = response.result
   return data_str.replace("\n", "  ")

2.5 完整项目拷贝

博主已经将这个项目的完整源码上传到Gitee上开源,小伙伴们可以自行下载和修改项目:
https://gitee.com/xiaoyuan-itsuper/AI.git

2.6 项目运行步骤

1、根据上面教程提前准备好百度智能云AppId、百度智能云API Key、百度智能云Secret Key、飞浆星河Access Token

2、下载拷贝完整源码,创建虚拟环境,pip安装依赖包

3、进入源码路径,启动对应虚拟环境,在cmd输入下面命令启动代码:

uvicorn main:app --reload

如图:

在这里插入图片描述

4、点击打开网页:

5、打开主界面如下所示:

6、点击选择图片,并展示图片:

7、填写根据上面教程准备好的百度智能云AppId、百度智能云API Key、百度智能云Secret Key、飞浆星河Access Token(注意:这个四个都需要填写):

8、点击生成诗句:

在这里插入图片描述

9、等待一会就生成完成了:

在这里插入图片描述

OK这里完整项目运行流程就结束了,大家还不速度上号体验一番!

2.7 运行流程视频

《AI看图写诗》项目运行流程

三、未来优化

1、网页主页界面UI设计优化。

2、增强新功能,如:通过文心一言的接口实现根据文字绘画、文档整理等功能。

3、网站部署上线

大家有更好多想法可以评论区留言我们一起去实现!

四、总结

通过这小案例我们了解到了如何通过AI实现了看图写诗应用,主要依靠的还是百度智能云的图片识别接口和文心一言大模型的文本生成能力,当然除了文本生成以外,文心一言大模型还可以生成图片、音频和视频功能等等,这些非常都值得我们后续不断去探索和应用。

以“生成未来”为主题的百度世界大会将于10月17日在北京首钢园举行,除了李彦宏的现场教学“手把手教你怎么做AI原生应用”,百度世界大会2023还将带来大模型、AI原生应用、生成式AI生态等内容的最新进展。让我们一起抓住大模型应用这场机遇吧!

直播地址分享给大家:https://baiduworld.baidu.com/m/world/2023/#intro-title

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

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

相关文章

ARRI阿莱MXF(ALEXA Mini LF)多碎片重组案例

三大影视巨头ARRI、RED、ATOMOS,ARRI阿莱的设备以提供电影级的画质而在影视圈有很大的名气。ARRI的文件一般是两种,一种是高清MOV(苹果为ARRI专门出过特殊认证的编码);一种是高清MXF;相比之下MXF文件比较少…

Vue之Jwt的运用(一起探索JWT在Vue中的用途吧)

目录 前言 一、JWT简介 1. 什么是JWT 2. JWT的工作原理 3. JWT的组成 4. 使用JWT的好处 二、JWT工具类 JwtFilter JwtUtils 工具类的作用 工具类的测试 测试代码 test01()测试结果 test02()测试结果 test03()测试结果 test04测试结果 test05测试结果 三、JWT集成SPA项…

Arya科普 | 程序员常用英语 Java常用名词解释 计算机常用英语汇总

本篇博客汇总了程序员常用的英文单词,Java中常用的名词解释,计算机常用的英语汇总。 英文 A~D array数组 accessible 可存取的 area面积 audio 音频 addition 加法 action 行动 arithmetic 算法 adjustment 调整 actual 真实的 argument 参量 ascent …

CVE-2017-7529 Nginx越界读取内存漏洞

漏洞概述 当使用Nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header请求,来获取响应中的缓存文件头部信息。在某些配置中,缓存文件头可能包含后端服务器的IP地址或其它敏感信息,从而导致信息泄露。 影响版本 Ngin…

Ubutntu 命令行界面显示UI 【FrameBuffer显示GuiLiteSample-Hello3D】

参考资料 https://www.cnblogs.com/jzcn/p/16898249.html https://github.com/idea4good/GuiLiteSamples/tree/master/Hello3D https://github.com/idea4good/GuiLite 显示效果:(看看左上角处立方体) 使用场景: 嵌入式Linux…

《动手学深度学习 Pytorch版》 8.5 循环神经网络的从零开始实现

%matplotlib inline import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2lbatch_size, num_steps 32, 35 train_iter, vocab d2l.load_data_time_machine(batch_size, num_steps) # 仍然使用时间机器数据集8.…

深度学习验证码项目

项目代码: GitHub - kerlomz/captcha_trainer: [验证码识别-训练] This project is based on CNN/ResNet/DenseNetGRU/LSTMCTC/CrossEntropy to realize verification code identification. This project is only for training the model. GitHub - Python3WebSpi…

锂电池行业新技术,RFID技术赋能生产、溯源

随着新能源汽车用动力电池的快速扩大,对锂电池的发展高安全性、高一致性、高合格率和低制造成本提出了更高的要求。而RFID技术被广泛应用在锂电池行业,为锂电池的生产、管理、溯源等生产管理方面提供了极大地便利,提升了生产效率、产品质量和…

【工具软件】mediamtx——网页、vue3项目中播放 rtsp 视频流(支持265转码)

声明 本文只做 mediamtx 的使用实操,请务必参考下面的博客,,我也参考下面的大佬博客,感谢唯一602的无私分享: 在web页面中直接播放rtsp视频流,重点推荐:mediamtx,不仅仅是rtsp mediamtx 介绍 …

Vue的学习补充

1.Vue路由-404 作用:当路径找不到匹配时,给个提示页面 位置:配在路由最后 语法:path:*(任意路径)-前面不匹配就命中最后这个 2.Vue路由-模式设置 hash路由(默认) 例如&#xff…

ubuntu mmdetection配置

mmdetection配置最重要的是版本匹配,特别是cuda,torch与mmcv-full 本项目以mmdetection v2.28.2为例介绍 1.查看显卡算力 因为gpu的算力需要与Pytorch依赖的CUDA算力匹配,低版本GPU可在相对高的CUDA版本下运行,相反则不行 算力…

【多线程】Thread类的基本用法

文章目录 线程创建线程中断线程等待线程休眠 线程创建 方法一:用一个类 继承Thread 重写run方法 //创建一个类 继承Thread class MyThread extends Thread {//run方法是线程的入口Overridepublic void run() {while (true){System.out.println("hello Thread…

Unity 3D基础——缓动效果

1.在场景中新建两个 Cube 立方体,在 Scene 视图中将两个 Cude的位置错开。 2.新建 C# 脚本 MoveToTarget.cs(写完记得保存) using System.Collections; using System.Collections.Generic; using UnityEngine;public class MoveToTarget : M…

代理和多级代理

文章目录 代理使用场景代理过程实验演示多级代理 代理使用场景 1、拿下远程 web 服务器 2、webshell 链接不稳定,需要使用稳定的木马程序 3、远程服务器无法直接链接攻击者电脑 4、需要借助公网vps转发来自失陷服务器的木马流量 5、借助frp服务端(vps)和客户端(内网…

AI为锚,创新为帆,谱写数实融合发展新篇章

云聚园区,智享未来。9月27日,在苏州工业园区管理委员会、华为云计算技术有限公司的指导下,由SISPARK(苏州国际科技园)、华为(苏州)人工智能创新中心联合主办,东北大学工业智能与系统…

2.用Flask框架创建一个简单的Web程序

怎么安装Flask框架 在终端输入以下命令: pip install flask 验证flask安装: flask --version 编写app.py文件 app文件py如下: #导入flask框架中的两个模块 #Flask允许创建一个Flask应用实例,处理路由、请求和响应等功能 #render…

【交叉编译】tslib库交叉编译

tslib 是一个捕捉触屏事件的工具。qt 库在交叉编译的时候,提供了 -tslib 选项,使用该选项需要提前对 tslib 库进行交叉编译。 目录 1、源码下载 2、安装依赖 3、创建编译脚本 4、开始编译 1、源码下载 tslib 源码下载地址: https://github.com/lib…

oracle 与mysql兼容日期(格式:YYYY年MM月DD日)

日期类型:date 查询sql: select concat(concat(concat(to_char(END_DATE,YYYY),年),concat(to_char(END_DATE,MM),月)),concat(to_char(END_DATE,DD),日)) AS dateInfo from test显示结果:

python jieba 词性标注 中文词性分类 nlp jieba.posseg

参考:https://blog.csdn.net/yellow_python/article/details/83991967 from jieba.posseg import dt dt.word_tag_tab[好看] >>> vflag_en2cn { ‘a’: ‘形容词’, ‘ad’: ‘副形词’, ‘ag’: ‘形语素’, ‘an’: ‘名形词’, ‘b’: ‘区别词’, ‘…

2023年工业大麻行业研究报告

第一章 行业概况 1.1 定义 工业大麻行业是一个多面向且快速发展的领域,涵盖了从种植、加工到分销各个环节。与休闲大麻不同,工业大麻主要用于制造和商业用途。工业大麻的种植重点放在产生纤维、籽和生物质等有价值的产品上,而非产生高含量的…