手把手带你用Python和文心一言搭建《AI看图写诗》网页项目(附上完整项目源码)
大模型开发/技术交流
- LLM
- API
- 文心大模型
2023.12.128945看过
一、实现思路
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 erniebotif __name__ == '__main__':# img_str,access_token需要传入img_str = '树, 瀑布, 江河, 峡谷, 山峦' # 这里需要图片识别的内容信息access_token = "这里替换为自己的TOken"content = '根据'+img_str,'写10首两句七言诗'erniebot.api_type = 'aistudio'erniebot.access_token = access_tokenresponse = 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 AipImageClassifyapp = 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: strapp_id: strapi_key: strclassify_secret_key: strfile: 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_tokenAPP_ID = app_idAPI_KEY = api_keyCLASSIFY_SECRET_KEY = classify_secret_keyclient = 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_tokenresponse = erniebot.ChatCompletion.create(model='ernie-bot',messages=[{'role': 'user', 'content': f"{content}”"}],)data_str = response.resultreturn data_str.replace("\n", " ")
2.5 完整项目拷贝
博主已经将这个项目的完整源码上传到Gitee上开源,小伙伴们可以自行下载和修改项目:
2.6 项目运行步骤
1、根据上面教程提前准备好百度智能云AppId、百度智能云API Key、百度智能云Secret Key、飞浆星河Access Token
2、下载拷贝完整源码,创建虚拟环境,pip安装依赖包
3、进入源码路径,启动对应虚拟环境,在cmd输入下面命令启动代码:
uvicorn main:app --reload
如图:
4、选择HTML代码,从pycharm点击打开网页:
5、打开主界面如下所示:
6、点击选择图片,并展示图片:
7、填写根据上面教程准备好的百度智能云AppId、百度智能云API Key、百度智能云Secret Key、飞浆星河Access Token(注意:这个四个都需要填写):
8、点击生成诗句:
9、等待一会就生成完成了:
OK这里完整项目运行流程就结束了,大家还不速度上号体验一番!
————————————————
版权声明:本文为CSDN博主「袁袁袁袁满」的原创文章如有侵权,请联系千帆社区进行删除
评论