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

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

时间:2023-10-14 10:07:43浏览次数:39  
标签:Python access AI API 文心 Key 百度

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

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

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

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

一、实现思路

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

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

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

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

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

2.1 网页前端

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

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

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、依次找到点击 产品 》人工智能 》图像识别

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

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

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

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

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

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

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

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=", ")

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

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

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

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

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

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

2.3 文心一言写诗

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

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

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}):

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

2.3.2 获取令牌Token

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

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

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

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

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

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)

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

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

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

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

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>

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

2.6 项目运行步骤

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

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

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

uvicorn main:app --reload

如图:

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

4、点击打开网页:

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

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

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

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

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

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

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

8、点击生成诗句:

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

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

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

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

2.7 运行流程视频

三、未来优化

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

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

3、网站部署上线

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

四、总结

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

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

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

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

标签:Python,access,AI,API,文心,Key,百度
From: https://blog.51cto.com/u_15558466/7857902

相关文章

  • python程序打包exe
    最前先提醒下,如果项目没有专门的环境,建议搞个虚拟环境打包,这样打包的exe会小点。丢一段虚拟环境命令方便复制:新建虚拟环境:condacreate-nyour_env_namepython=3.8激活虚拟环境:condaacitvateyour_env_name在这个环境里安装好需要的包。 首先安装Pyinstaller,cmd输入:pip......
  • python实现fasta文件碱基序列每行按照指定数目输出
     001、(base)[root@pc1test1]#lsa.fatest.py(base)[root@pc1test1]#cata.fa##测试fasta>chr1tttcccggg>chr2tttgggjjjcccjjjjjj>chr3ccc>chr4aaaaatt(base)[root@pc1test1]#cattest.py##程序#!/usr/bin/envpython3#......
  • 在Python中使用LSTM和PyTorch进行时间序列预测|附代码数据
    全文链接:http://tecdat.cn/?p=8145最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出。顾名思义,时间序列数据是一种随时间变化的数据类型。例如,24小时内的温度,一个月内各种产品的价格,一年中特定公司的股票价格诸如长期短期记忆网络(LSTM)之类的高级深度学习模型能......
  • python 实现统计fasta文件每一条序列的长度
     001、a、[root@pc1test1]#lsa.fatest.py[root@pc1test1]#cata.fa##测试fasta>chr1tttcccggg>chr2tttgggccc>chr3cccttt>chr4aaaaattt[root@pc1test1]#cattest.py##统计每条序列的长度#!/usr/bin/envpython3#-*-coding:......
  • 洛谷B2005 字符三角形(python)
    这题重点在如果输入print(a,a,a,a,a),逗号会使输出的时候五个字符之间有空格,应该用a+a+a+a+a。代码如下a=input();print(""+a)print(""+a+a+a)print(a+a+a+a+a) ......
  • AI为啥吃算力,今天算是开眼
    AI为啥吃算力,今天算是开眼AI从应用来讲,目前应是替代边缘脑力劳动,对人来讲更像是某一方面的统帅,协调各方AI工具工作。目前AI并不具备自主意识,本质上只能作为人的附庸。当然人的要求各异,用各自的数据训练她,成为不同的附庸而已。听相关专家解说,构建AI大模型,采用多维数组,结合AI算法......
  • Python 集合(Sets)3
    Python-合并集合在Python中,有几种方法可以合并两个或多个集合。您可以使用union()方法,该方法返回一个包含两个集合中所有项的新集合,或使用update()方法,将一个集合中的所有项插入另一个集合中:示例,union()方法返回一个包含两个集合中所有项的新集合:set1={"a","b","c"}se......
  • 智慧矿山&矿山安全生产:AI算法实现矿山井下堆料检测
    在矿山行业中,堆料是一个重要的环节。堆料过程中,常常出现堆料不均匀、溢堆、重叠等问题,影响了生产效率和质量。传统的堆料检测方法耗时且不准确,无法满足井下作业的需求,因此需要一种智能化的堆料检测解决方案,这就是AI算法实现井下堆料检测的应用场景。AI算法技术在矿山行业中的应用日......
  • 使用Python解决面试题:计算青蛙跳上n个台阶的跳法总数
    面试题要求我们计算一个青蛙跳上具有n个台阶的跳法总数,其中青蛙每次可以跳上一个台阶或两个台阶。这是一个经典的递归问题,我们可以使用Python编写一个递归函数来实现。解决方案:我们可以使用递归函数来计算青蛙跳上n个台阶的跳法总数。我们可以考虑最后一步青蛙跳了多少个台阶,以此将......
  • 行行AI公开课:AIGC重塑内容运营
    2023年开年,ChatGPT兴起,AI的风吹进各个角落。一场有关AI的变革风起云涌。AIGC为内容运营带来了新动能、新变革和新未来,正在通过内容重塑用户、平台和品牌的交互关系。把内容运营提升到一个战略新高度。如果AI的时代必将到来,内容运营该在意的或许不是“我们是否会被取代”,而是“我们......