写点什么

手把手带你用 Python 和文心一言搭建《AI 看图写诗》网页项目

作者:袁袁袁袁满
  • 2023-10-14
    四川
  • 本文字数:3713 字

    阅读完需:约 12 分钟

手把手带你用Python和文心一言搭建《AI看图写诗》网页项目

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


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


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


一、实现思路

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'
# 实例化AipImageClassifyclient = 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 fastapipip install pydantic
复制代码


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


from fastapi import FastAPI, File, Form, UploadFilefrom pydantic import BaseModelfrom fastapi.middleware.cors import CORSMiddlewareimport erniebotfrom 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 这里完整项目运行流程就结束了,大家还不速度上号体验一番!


三、未来优化

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


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


3、网站部署上线


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

四、总结

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


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



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

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2022-04-28 加入

还未添加个人简介

评论

发布
暂无评论
手把手带你用Python和文心一言搭建《AI看图写诗》网页项目_Python_袁袁袁袁满_InfoQ写作社区