目錄
應用程式架構
总结
参考资料
首頁 科技週邊 人工智慧 如何兩天時間上線一款AI應用?

如何兩天時間上線一款AI應用?

Apr 11, 2023 pm 06:25 PM
前端 ai應用

如何兩天時間上線一款AI應用?

大家好,我卡頌。

最近幾個月,AI相關新聞不斷搶佔大家的注意力。逞著這波熱度,各路開發者都投入到AI​​應用的開發。

例如,15歲的開發者saviomartin7[1]開發的IconifyAI[2]可以根據文字描述產生應用Logo。網頁上線5天就賺到接近1.5k刀了。

如何兩天時間上線一款AI應用?

這波機會對前端同學有很大利好,因為各種基礎服務(例如各種儲存服務、AI服務、部署)都有成熟的解決方案可以直接使用,前端同學只需專注業務邏輯的實現即可。

本文讓我們來看看一位國外老哥是如何用一個週末時間開發一款AI應用。該應用上線僅40天,就獲得了20wUV。

如何兩天時間上線一款AI應用?

應用程式架構

首先介紹下這款應用,應用名為restorephotos[3],用戶上傳模糊的舊照片後,使用AI會修復照片,並返回更清晰的版本。應用程式的完整程式碼已開源。

應用開源程式碼位址[4]

如何兩天時間上線一款AI應用?

#整個應用程式的架構分為4部分:

  1. #前端(Next.js)
  2. 圖片儲存服務
  3. Next.js服務端
  4. AI API

如何兩天時間上線一款AI應用?

##完整工作流程如下:

    使用者在前端上傳舊照片
  1. 前端呼叫圖片儲存服務,返回圖片儲存位址給前端
  2. #前端將圖片儲存位址傳送給後端
  3. 後端呼叫AI API處理圖片
  4. AI API傳回處理後的圖片給後端,後端回傳給前端
  5. 前端展示處理後的效果
前端部分

整個前後端的實作使用Next.js,前端主要包括兩個部分:

    圖片上傳
  • AI處理後的圖片展示
所有主要功能均使用開源程式庫實作。其中,圖片上傳功能使用react-uploader[5]實作:

<UploadDropzone
 uploader={uploader}
 options={options}
width="670px"
 height="250px"
 onUpdate={(file) => {
 // ...如何兩天時間上線一款AI應用?上传成功后的逻辑
 }}
/>;
登入後複製

處理後的圖片展示效果使用react-compare-slider[6]:

如何兩天時間上線一款AI應用?

PS:這裡用的是我祖父的老照片๑¯◡¯๑

#後端部分

後端核心邏輯包括兩部分:

    用Redis做介面呼叫頻率限制。
Redis使用@upstash-redis[7],這是一款基於HTTP的Redis客戶端。在線上建立Redis資料庫後,我們可以在服務端透過HTTP請求的方式呼叫它。

    用replicate提供的swinir模型處理圖片。
replicate是機器學習的雲端服務商,我們可以根據業務需求選擇不同機器學習模型,例如:

    處理圖片清晰度
  • 破碎照片修復
  • 文字轉圖片
  • ...

如何兩天時間上線一款AI應用?

#在Next.js服務端,我們透過HTTP的形式呼叫模型API:

// 我们上传的如何兩天時間上線一款AI應用?地址
const imageUrl = req.body.imageUrl;
// 请求模型接口
const startResponse = await fetch('https://api.replicate.com/v1/predictions', {
 method: 'POST',
 // ...省略代码
 body: JSON.stringify({
// 我们需要的模型对应的版本
version: '9283608cc6b7be6b65a8e44983db012355fde4132009bf99d976b2f0896856a3',
input: { img: imageUrl, version: 'v1.4', scale: 2 }
 })
});
登入後複製

值得注意的是,模型计算需要时间,所以在服务端,我们每秒轮询一次结果,如果模型返回处理后的如何兩天時間上線一款AI應用?,我们就将如何兩天時間上線一款AI應用?返回给前端:

// 保存模型处理后的结果
let restoredImage: string | null = null;
while (!restoredImage) {
// 请求模型API
let finalResponse = await fetch(endpointUrl, {
method: "GET",
// ...省略代码
});
let jsonFinalResponse = await finalResponse.json();

if (jsonFinalResponse.status === "succeeded") {
// 模型返回如何兩天時間上線一款AI應用?成功
restoredImage = jsonFinalResponse.output;
} else if (jsonFinalResponse.status === "failed") {
// 模型返回如何兩天時間上線一款AI應用?失败
break;
} else {
// 模型还未返回如何兩天時間上線一款AI應用?,1s后轮询
await new Promise((resolve) => setTimeout(resolve, 1000));
}
}
登入後複製

总结

可以发现,所有基础服务均有现成产品可供使用,这极大加快了前端的开发效率,降低了开发成本。

作者运行这个应用的成本是多少呢?其中:

  • 如何兩天時間上線一款AI應用?存储使用的是upload.io[8]提供的存储服务。这里作者使用的是35刀/月的基础付费版本,每月有50GB的上传空间。
  • Redis云服务考虑到仅用来做接口调用频率限制,使用免费版就好。
  • 整个应用使用Vercel部署,Vercel Pro每月20刀。
  • 20wUV的模型API调用费用,大概是900刀。

对于想构建自己的AI应用的朋友,可以参考本文的实现与成本,行动起来吧。

参考资料

[1]saviomartin7:https://twitter.com/saviomartin7

[2]IconifyAI:http://IconifyAI.com

[3]restorephotos:https://www.restorephotos.io/

[4]应用开源代码地址:https://github.com/Nutlope/restorePhotos

[5]react-uploader:https://www.npmjs.com/package/react-uploader

[6]react-compare-slider:https://www.npmjs.com/package/react-compare-slider

[7]@upstash-redis:https://docs.upstash.com/redis/overall/pricing

[8]upload.io:https://upload.io/pricing

以上是如何兩天時間上線一款AI應用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1654
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1225
24
PHP與Vue:完美搭檔的前端開發利器 PHP與Vue:完美搭檔的前端開發利器 Mar 16, 2024 pm 12:09 PM

PHP與Vue:完美搭檔的前端開發利器在當今網路快速發展的時代,前端開發變得愈發重要。隨著使用者對網站和應用的體驗要求越來越高,前端開發人員需要使用更有效率和靈活的工具來創建響應式和互動式的介面。 PHP和Vue.js作為前端開發領域的兩個重要技術,搭配起來可以稱得上是完美的利器。本文將探討PHP和Vue的結合,以及詳細的程式碼範例,幫助讀者更好地理解和應用這兩

Django是前端還是後端?一探究竟! Django是前端還是後端?一探究竟! Jan 19, 2024 am 08:37 AM

Django是一個由Python編寫的web應用框架,它強調快速開發和乾淨方法。儘管Django是web框架,但要回答Django是前端還是後端這個問題,需要深入理解前後端的概念。前端是指使用者直接和互動的介面,後端是指伺服器端的程序,他們透過HTTP協定進行資料的互動。在前端和後端分離的情況下,前後端程式可以獨立開發,分別實現業務邏輯和互動效果,資料的交

C#開發經驗分享:前端與後端協同開發技巧 C#開發經驗分享:前端與後端協同開發技巧 Nov 23, 2023 am 10:13 AM

身為C#開發者,我們的開發工作通常包括前端和後端的開發,而隨著技術的發展和專案的複雜性提高,前端與後端協同開發也變得越來越重要和複雜。本文將分享一些前端與後端協同開發的技巧,以幫助C#開發者更有效率地完成開發工作。確定好介面規範前後端的協同開發離不開API介面的交互。要確保前後端協同開發順利進行,最重要的是定義好介面規格。接口規範涉及到接口的命

Go語言前端技術探秘:前端開發新視野 Go語言前端技術探秘:前端開發新視野 Mar 28, 2024 pm 01:06 PM

Go語言作為一種快速、高效的程式語言,在後端開發領域廣受歡迎。然而,很少有人將Go語言與前端開發聯繫起來。事實上,使用Go語言進行前端開發不僅可以提高效率,還能為開發者帶來全新的視野。本文將探討使用Go語言進行前端開發的可能性,並提供具體的程式碼範例,幫助讀者更了解這一領域。在傳統的前端開發中,通常會使用JavaScript、HTML和CSS來建立使用者介面

前端怎麼實現即時通訊 前端怎麼實現即時通訊 Oct 09, 2023 pm 02:47 PM

實作即時通訊的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。詳細介紹:1、WebSocket,它可以在客戶端和伺服器之間建立持久連接,實現即時的雙向通信,前端可以使用WebSocket API來創建WebSocket連接,並透過發送和接收訊息來實現即時通訊;2、Long Polling,是一種模擬即時通訊的技術等等

前端面試官常問的問題 前端面試官常問的問題 Mar 19, 2024 pm 02:24 PM

在前端開發面試中,常見問題涵蓋廣泛,包括HTML/CSS基礎、JavaScript基礎、框架和函式庫、專案經驗、演算法和資料結構、效能最佳化、跨域請求、前端工程化、設計模式以及新技術和趨勢。面試官的問題旨在評估候選人的技術技能、專案經驗以及對行業趨勢的理解。因此,應試者應充分準備這些方面,以展現自己的能力和專業知識。

Django:前端和後端開發都能搞定的神奇框架! Django:前端和後端開發都能搞定的神奇框架! Jan 19, 2024 am 08:52 AM

Django:前端和後端開發都能搞定的神奇框架! Django是一個高效、可擴展的網路應用程式框架。它能夠支援多種Web開發模式,包括MVC和MTV,可以輕鬆地開發出高品質的Web應用程式。 Django不僅支援後端開發,還能夠快速建構出前端的介面,透過模板語言,實現靈活的視圖展示。 Django把前端開發和後端開發融合成了一種無縫的整合,讓開發人員不必專門學習

Golang與前端技術結合:探討Golang如何在前端領域發揮作用 Golang與前端技術結合:探討Golang如何在前端領域發揮作用 Mar 19, 2024 pm 06:15 PM

Golang與前端技術結合:探討Golang如何在前端領域發揮作用,需要具體程式碼範例隨著互聯網和行動應用的快速發展,前端技術也愈發重要。而在這個領域中,Golang作為一門強大的後端程式語言,也可以發揮重要作用。本文將探討Golang如何與前端技術結合,以及透過具體的程式碼範例來展示其在前端領域的潛力。 Golang在前端領域的角色作為一門高效、簡潔且易於學習的

See all articles