天知道我有多激動(dòng),作為產(chǎn)品經(jīng)理用Cursor獨(dú)立開(kāi)發(fā)了一款小程序

七吟覃
2 評(píng)論 1949 瀏覽 19 收藏 37 分鐘

本人經(jīng)管專(zhuān)業(yè),擔(dān)任AI產(chǎn)品經(jīng)理近8年。做夢(mèng)都在想各種天馬行空的idea,但終究只能因?yàn)椤安豢孔V”而擱置。做夢(mèng)也想不到,有一天我可以通過(guò) 獨(dú)立開(kāi)發(fā) 的方式來(lái)實(shí)現(xiàn)它們!

以下是我過(guò)去兩周利用業(yè)余時(shí)間開(kāi)發(fā)的第一款小程序產(chǎn)品:讀啥鴨

?? 按主題自動(dòng)匯聚各平臺(tái)書(shū)單

?? 讀啥鴨AI 給每份書(shū)單留下毒辣評(píng)論~

小程序已經(jīng)正式上線(xiàn),歡迎搜索“讀啥鴨”試用~

對(duì)于專(zhuān)業(yè)開(kāi)發(fā)人員而言這不算什么。

但天知道,我自己把核心功能跑通那一刻有多激動(dòng)。

以前(在工作沒(méi)有特別忙時(shí)),業(yè)余時(shí)間喜歡看書(shū),所以第一款練手的小產(chǎn)品自然而然選擇了書(shū)的方向。并沒(méi)有什么商業(yè)考量或者細(xì)致的需求分析,更不必經(jīng)過(guò)冗長(zhǎng)的討論決策,只是自己喜歡~

做自己喜歡的產(chǎn)品,帶著偏見(jiàn)!

做出這個(gè)決定,要追溯到國(guó)慶期間讀完知名獨(dú)立開(kāi)發(fā)者Pieter Levels的《MAKE:building startups the indie way》 (《創(chuàng)造:以獨(dú)立開(kāi)發(fā)者的方式創(chuàng)辦企業(yè)》)時(shí)不經(jīng)發(fā)出的感嘆:雖然不會(huì)寫(xiě)代碼,但看完《MAKE》我也想做獨(dú)立開(kāi)發(fā)者了。

這本書(shū)非常棒,有成為獨(dú)立開(kāi)發(fā)者想法的朋友去看看。

整本書(shū)讓我發(fā)生的最大觀念轉(zhuǎn)變是:以前總認(rèn)為要先學(xué)編程,然后才能做產(chǎn)品,但學(xué)編程這個(gè)事實(shí)在無(wú)法讓我興奮,也很長(zhǎng)時(shí)間無(wú)法獲得正反饋。而Levels提倡的是,先開(kāi)始做產(chǎn)品,碰到什么不會(huì)的再邊做邊學(xué)。從最開(kāi)始就感受創(chuàng)造(Make)的樂(lè)趣。不用對(duì)比什么具體的編程方法或工具,因?yàn)楦静恢匾?,先把產(chǎn)品“拼”出來(lái)。

雖然觀念轉(zhuǎn)變了,但真正上路時(shí),還是內(nèi)心忐忑。

直到遇到下一個(gè)“貴人”,是的,大模型!

如果去除注冊(cè)小程序、粗略學(xué)習(xí)一下微信開(kāi)發(fā)者工具基本操作等這些周邊工作。一邊學(xué)一邊寫(xiě),完成讀啥鴨核心頁(yè)面與功能邏輯總計(jì)應(yīng)該花了不過(guò)10個(gè)小時(shí)。注意,這里的“寫(xiě)”并非寫(xiě)代碼。并且直到今天這個(gè)最新版本,我一行代碼都沒(méi)寫(xiě)。

我主要干了四件事情:

  1. 學(xué)習(xí)相關(guān)工具:Cursor、微信開(kāi)發(fā)者工具、小程序后臺(tái)
  2. 向大模型提出清晰的需求,描述盡可能準(zhǔn)確無(wú)歧義
  3. 按照模型給出的說(shuō)明創(chuàng)建相關(guān)代碼文件和文件夾,復(fù)制粘貼模型給出的代碼
  4. 試運(yùn)行測(cè)試效果,描述問(wèn)題或復(fù)制報(bào)錯(cuò)信息給模型,然后修改代碼后重新進(jìn)行測(cè)試(這里也不需要寫(xiě)代碼,但需要有比較強(qiáng)的邏輯思維能力和新概念學(xué)習(xí)能力)

需要說(shuō)明的是:由于有近8年的產(chǎn)品經(jīng)驗(yàn),我雖然不會(huì)寫(xiě)代碼,但是日常與開(kāi)發(fā)人員溝通,對(duì)于一些開(kāi)發(fā)相關(guān)的概念(比如前端、后端、函數(shù)、編譯、數(shù)據(jù)庫(kù)、對(duì)象存儲(chǔ)、大模型…)是有認(rèn)知的,所以如果您是100%的小白,可能閱讀以下內(nèi)容過(guò)程中需要查閱和理解一些基本概念。不過(guò)它們真的不難,并且應(yīng)該不求甚解,先能跑起來(lái)就行,遇到不懂的或者報(bào)錯(cuò)直接搜索或者問(wèn)大模型,后面慢慢熟練使用了再循序漸進(jìn)深入理解。

以下通過(guò)文字我只描述關(guān)鍵步驟,因?yàn)橛性S多調(diào)頁(yè)面整樣式以及指導(dǎo)模型修bug的工作是比較重復(fù)繁瑣的。

好,現(xiàn)在開(kāi)始描述整個(gè)構(gòu)建過(guò)程的關(guān)鍵步驟。

一、準(zhǔn)備工作

1.1 小程序相關(guān)

小程序后臺(tái)登錄注冊(cè)地址:https://mp.weixin.qq.com/cgi-bin/wx?token=&lang=zh_CN

個(gè)人就可以進(jìn)行注冊(cè)并且順利完成認(rèn)證與備案,不過(guò)會(huì)有一些不允許個(gè)人經(jīng)營(yíng)的范疇。

微信開(kāi)發(fā)者工具下載地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html

該工具可用于開(kāi)發(fā)小程序、小游戲和插件。

小程序開(kāi)發(fā)微信官方文檔:https://developers.weixin.qq.com/miniprogram/dev/framework/

不用細(xì)看,直接開(kāi)始干就行,只是以防需要的時(shí)候可以翻一翻或者搜索

小程序開(kāi)發(fā)官方交流論壇:https://developers.weixin.qq.com/community/develop/mixflow

這個(gè)也是碰到問(wèn)題了再搜索或者提問(wèn)就行,我關(guān)于腳本的定時(shí)觸發(fā)問(wèn)題就是在這里解決的。

1.2 開(kāi)發(fā)工具相關(guān)

Cursor:https://www.cursor.com/

知名大模型輔助編程工具,就不贅述了,網(wǎng)上有大量介紹資料。大家也可以看我末尾視頻的操作演示,會(huì)用基本操作就夠了。

Bolt:https://bolt.new/

如果覺(jué)得Cursor還是有一定難度,也可以先嘗試Bolt來(lái)建立信心。這個(gè)操作就真的很簡(jiǎn)單了,會(huì)打字就行。

1.3 非必要工作(可略過(guò))

GitHub:https://github.com/

這是用來(lái)管理和分享代碼的地方,非必要,代碼在自己電腦上存著就行。我為了感受一下代碼版本管理和代碼開(kāi)源的過(guò)程,所以用了一下。

讀啥鴨代碼開(kāi)源地址(不是什么優(yōu)雅的代碼,不必點(diǎn)Star):https://github.com/wisdomqin/dushaya_readlistPS:使用Cursor與github聯(lián)動(dòng)總是超時(shí),不知道什么原因,所以最后使用Github Desktop來(lái)進(jìn)行代碼同步。

二、開(kāi)始開(kāi)發(fā)

2.1 創(chuàng)建小程序

賬號(hào)在上一步創(chuàng)建好了,這里創(chuàng)建的可以理解為代碼文件夾。打開(kāi)微信開(kāi)發(fā)者工具軟件,登錄軟件后看到如下界面。

點(diǎn)擊添加按鈕,出現(xiàn)如下頁(yè)面

  • 項(xiàng)目名稱(chēng),自己取一個(gè);
  • 目錄,選擇一個(gè)電腦本地目錄;
  • AppID,下拉框中會(huì)列出來(lái)你這個(gè)微信號(hào)剛才注冊(cè)的小程序的AppID;
  • 后端服務(wù),建議選“微信云開(kāi)發(fā)”(首月免費(fèi)),因?yàn)楹罄m(xù)有云數(shù)據(jù)庫(kù)、云存儲(chǔ)、云函數(shù)等可以使用,不必自己本地配置環(huán)境(我不會(huì));
  • 開(kāi)發(fā)模式,選小程序;
  • 模板選擇,由于沒(méi)有跟我需求類(lèi)似的模板所以我選的“不使用模板”,但奇怪的是選擇“不使用模板”之后,后端模式自動(dòng)變成了“不使用云服務(wù)”且不能改,但這并沒(méi)有影響我后續(xù)開(kāi)發(fā)時(shí)使用云開(kāi)發(fā)的服務(wù),不知道是不是bug。

點(diǎn)擊創(chuàng)建按鈕后進(jìn)入到該產(chǎn)品的開(kāi)發(fā)界面,4個(gè)主要區(qū)域見(jiàn)下圖。

理論上,傳統(tǒng)的開(kāi)發(fā)工作就是在區(qū)域2、3中創(chuàng)建代碼文件和編寫(xiě)代碼,在區(qū)域1預(yù)覽效果,在區(qū)域4中查看運(yùn)行信息和報(bào)錯(cuò)信息。

這看起來(lái)難度很高,但下面有請(qǐng)Cursor登場(chǎng)。

2.2 Cursor登場(chǎng)

打開(kāi)Cursor后應(yīng)該是這個(gè)頁(yè)面,點(diǎn)擊Open a folder按鈕。

選擇剛才創(chuàng)建小程序時(shí)選擇的“目錄”文件夾,然后就會(huì)看到如下界面??梢钥吹阶筮吘褪莿偛旁谖⑿砰_(kāi)發(fā)者工具界面中的區(qū)域2(代碼文件管理),右邊就是具體編寫(xiě)某個(gè)代碼文件的地方。所以我們?cè)贑ursor中編輯的代碼(由于兩邊所指定的目錄位置一致)在微信開(kāi)發(fā)者工具中也同樣會(huì)更新。稍后在Cursor中寫(xiě)完代碼后會(huì)回到微信開(kāi)發(fā)者工具中進(jìn)行預(yù)覽調(diào)試。

然后點(diǎn)擊下圖中右上角這個(gè)按鈕。

你將看到一直陪伴你(哦不對(duì),代碼全是它寫(xiě)的…)開(kāi)發(fā)助手(雖然有點(diǎn)土,但就這么叫它吧)。

如上圖所示位置可以切換模型,默認(rèn)應(yīng)該就是claude-3.5-sonnet,作為Cursor免費(fèi)用戶(hù),有免費(fèi)使用的次數(shù)(應(yīng)該是500次),這已經(jīng)完全夠開(kāi)發(fā)出一款類(lèi)似讀啥鴨這樣的產(chǎn)品了。 如果沒(méi)有看到claude-3.5-sonnet或者選擇了無(wú)法使用,可以看下是否在Cursor客戶(hù)端沒(méi)有登錄賬號(hào)。

2.3 正式開(kāi)始開(kāi)發(fā)

終于到了最激動(dòng)的環(huán)節(jié)。來(lái)看看我發(fā)出的前兩個(gè)請(qǐng)求:

我一次性幾乎把讀啥鴨的所有頁(yè)面和主要功能邏輯都告訴它了。它給了我設(shè)計(jì)思路,但幾乎沒(méi)什么代碼。

于是我繼續(xù)明確要求它幫我寫(xiě)代碼。這次它幫我把每個(gè)頁(yè)面的主要代碼都寫(xiě)了出來(lái)。(圖片太長(zhǎng),后面幾個(gè)頁(yè)面的代碼就省略了)

然后我告訴他我按照他提供的代碼完成了相應(yīng)文件夾及文件的創(chuàng)建,并把它提供的代碼都復(fù)制到了對(duì)應(yīng)文件中。(Cursor要是文件也能自動(dòng)創(chuàng)建那就更簡(jiǎn)單了)

可以看到我把我做了什么事情也會(huì)同步給他, 我覺(jué)得是挺有用的。對(duì)當(dāng)前狀態(tài)和需求的描述盡量清晰準(zhǔn)確,有助于它給出更正確的建議和代碼。

然后我就按照以上它給出的一步步把代碼復(fù)制到對(duì)應(yīng)的文件中。這個(gè)時(shí)候我回到微信開(kāi)發(fā)者工具中,就已經(jīng)發(fā)現(xiàn)可以看到粗糙的頁(yè)面了(可惜沒(méi)有截圖)。但由于沒(méi)有數(shù)據(jù),所以讓它幫我生成了一些示例數(shù)據(jù)。

這樣首頁(yè)(書(shū)單列表)就有了比較真實(shí)的樣子。不過(guò)默認(rèn)生成的頁(yè)面比較丑,比如提交書(shū)單頁(yè)是下面這樣。

所以我先調(diào)整展示效果。(最開(kāi)始我想的是簡(jiǎn)潔黑白風(fēng)格)

按照它的代碼進(jìn)行修改。

這里會(huì)碰到一個(gè)新情況,這里不是完全新建一個(gè)代碼文件,而是在某個(gè)已經(jīng)存在一些代碼的文件中進(jìn)行修改,而開(kāi)發(fā)助手在輸出代碼時(shí)可能會(huì)省略一些內(nèi)容(這是有好處的,就比如我已經(jīng)寫(xiě)了1000字的文章,我讓它幫我加一個(gè)案例,它沒(méi)有必要把我寫(xiě)好的內(nèi)容又復(fù)述一遍,所以它會(huì)說(shuō)哪里到哪里不變,從哪里開(kāi)始插入xxxx),此時(shí)我們就沒(méi)法完全復(fù)制粘貼代碼了。

這個(gè)時(shí)候Cursor有個(gè)功能,簡(jiǎn)稱(chēng)為“自動(dòng)修改”,如下圖所示,只需定位到對(duì)應(yīng)的代碼文件,然后點(diǎn)擊新寫(xiě)代碼的“apply”按鈕,Cursor就會(huì)自動(dòng)判斷需要在當(dāng)前代碼的哪里進(jìn)行 增刪改 。

這個(gè)功能非常有用,這也是我不用寫(xiě)一行代碼就完成開(kāi)發(fā)的重要原因之一。

不過(guò)在這里Cursor有時(shí)是會(huì)犯錯(cuò)的,比如當(dāng)整個(gè)代碼比較復(fù)雜之后,它可能會(huì)忘了之前某些代碼是做什么用的,可能會(huì)錯(cuò)誤刪除一些代碼,導(dǎo)致出問(wèn)題。(因?yàn)檫@里涉及到大模型一個(gè)固有的限制,即上下文長(zhǎng)度,這個(gè)短時(shí)間內(nèi)很難解決。非大模型行業(yè)從業(yè)者可以忽略底層技術(shù)原理,可以簡(jiǎn)單理解為 開(kāi)發(fā)助手 的記憶能力有限,只記得跟你最近十幾次或者幾十次的交互內(nèi)容)

所以有時(shí)我們需要適時(shí)告訴它某個(gè)頁(yè)面之前有什么樣的功能,在這個(gè)基礎(chǔ)上上讓它修改代碼,或者讓它盡量在不要?jiǎng)h除原代碼功能的基礎(chǔ)上給出修改建議。這里相關(guān)的功能演示如下,在提需求和問(wèn)題時(shí)可以帶上相關(guān)的代碼。

當(dāng)然這個(gè)過(guò)程不像上面我描述的這么簡(jiǎn)單,有時(shí)也確實(shí)會(huì)出現(xiàn)代碼改壞了的情況,所以完成重要功能后可以把整個(gè)代碼文件夾復(fù)制一份進(jìn)行備份。同時(shí),當(dāng)你經(jīng)驗(yàn)豐富之后,你也能發(fā)現(xiàn)這次它應(yīng)該改壞了,于是可以不急于修改代碼,可以重新表述你的需求,帶上更多的背景信息或者一些限制要求。

這個(gè)過(guò)程你可以嘗試把它當(dāng)做一個(gè)人,一個(gè)真的開(kāi)發(fā)人員來(lái)看待,來(lái)給他提出要求。比如下面有一個(gè)很好的例子。

感覺(jué)怎么樣?

當(dāng)我發(fā)現(xiàn)它能準(zhǔn)確理解我的需求并解決問(wèn)題時(shí),真的太爽了。

再比如它有時(shí)會(huì)給我一段代碼和一些說(shuō)明,但我并不懂,于是我直接引用那段代碼并問(wèn)它:

2.4 與云開(kāi)發(fā)環(huán)境相關(guān)的一些高階功能開(kāi)發(fā)

主要頁(yè)面設(shè)計(jì)和基本交互功能都差不多完成了,我開(kāi)始考慮如何填充真實(shí)數(shù)據(jù)。于是我先問(wèn)問(wèn)它的思路。

考慮得還挺全面的。

我先后構(gòu)建了兩個(gè)功能,一個(gè)是用戶(hù)提交書(shū)單鏈接,我使用大模型能力自動(dòng)解析鏈接中的書(shū)單內(nèi)容;另一個(gè)是每隔20分鐘,自動(dòng)從網(wǎng)上爬取一些書(shū)單內(nèi)容。

先講第一個(gè)功能,用戶(hù)提交。以下是一個(gè)在調(diào)試頁(yè)面測(cè)試的過(guò)程:用戶(hù)提交書(shū)單鏈接,自動(dòng)解析內(nèi)容,并給出評(píng)級(jí)和評(píng)價(jià),輸出還帶有打字機(jī)效果,在手機(jī)端還有震動(dòng)效果。

從每個(gè)書(shū)單鏈接中會(huì)自動(dòng)生成書(shū)單信息,包括以下幾部分:【書(shū)單名稱(chēng)】、【書(shū)單作者】、【書(shū)單描述】、【書(shū)單內(nèi)容】、【標(biāo)簽】、【讀啥鴨評(píng)級(jí)】、【讀啥鴨評(píng)價(jià)】實(shí)現(xiàn)這個(gè)功能涉及三個(gè)重要概念:云函數(shù)、大模型應(yīng)用、云數(shù)據(jù)庫(kù)

云函數(shù),我理解其實(shí)就是一個(gè)有著特定處理邏輯的功能,我這里實(shí)現(xiàn)的就是:接受用戶(hù)輸入的url,從url中返回書(shū)單信息。

它應(yīng)該也可以直接寫(xiě)在某個(gè)頁(yè)面的處理邏輯中,但如果它跟各個(gè)頁(yè)面都沒(méi)有關(guān)系,或者是一個(gè)多個(gè)頁(yè)面或功能都可以復(fù)用的功能,那么就可以把它作為云函數(shù)單獨(dú)拿出來(lái)。另外還有一個(gè)好處,我看起來(lái)云函數(shù)的更新不需要微信官方進(jìn)行審核,直接上傳到云開(kāi)發(fā)環(huán)境即可。

根據(jù)開(kāi)發(fā)助手給我的指引,我創(chuàng)建了cloudfunctions文件夾(必須叫這個(gè)名字,應(yīng)該是微信開(kāi)發(fā)的規(guī)范),然后在里面創(chuàng)建了processBookList文件夾(自己命名的,代表“處理書(shū)單”的功能)。同樣按照開(kāi)發(fā)助手的指引在該文件夾內(nèi)創(chuàng)建必需的幾個(gè)文件:

為了標(biāo)記能看得清晰,我把Cursor的主題色改成了白色

其中最核心的是index.js文件,包含了該云函數(shù)的運(yùn)行邏輯;config.json則是用來(lái)控制一些諸如超時(shí)時(shí)間、內(nèi)容最大限制、定時(shí)觸發(fā)機(jī)制等內(nèi)容;package.json最主要的作用我理解就是描述該云函數(shù)正常運(yùn)行所需要的依賴(lài)項(xiàng);node_modules文件夾中我理解應(yīng)該就是存儲(chǔ)所需依賴(lài)項(xiàng)的,這個(gè)文件夾是我們?cè)诎惭b依賴(lài)項(xiàng)時(shí)被自動(dòng)創(chuàng)建的。

如何安裝依賴(lài)項(xiàng)?

點(diǎn)擊下圖右上角這個(gè)按鈕,中間的下方會(huì)出現(xiàn)一個(gè)新的區(qū)域,先稱(chēng)之為命令行區(qū)域,它默認(rèn)會(huì)定位到你當(dāng)前代碼那個(gè)文件夾內(nèi),通過(guò)命令行的方式打開(kāi)文件夾(命令行常見(jiàn)操作方法見(jiàn):https://blog.csdn.net/Evankaka/article/details/49227669)。進(jìn)入到processBookList這個(gè)云函數(shù)文件夾內(nèi),然后按照開(kāi)發(fā)助手的指引,執(zhí)行npm install axios安裝axios這個(gè)依賴(lài)項(xiàng)。

安裝完成后有一堆看不懂的信息,可以復(fù)制給開(kāi)發(fā)助手,他會(huì)給你解釋?zhuān)话銇?lái)講沒(méi)什么需要修改的。

到這里,這個(gè)云函數(shù)需要開(kāi)發(fā)的部分OK了,然后進(jìn)入到微信開(kāi)發(fā)者工具,如下圖點(diǎn)擊左上角“云開(kāi)發(fā)”按鈕

進(jìn)入云開(kāi)發(fā)控制臺(tái)。點(diǎn)擊“云函數(shù)”,這里后面還會(huì)用到“數(shù)據(jù)庫(kù)”、“存儲(chǔ)”功能。

點(diǎn)擊“新建”一個(gè)名為processBookList的云函數(shù)。

然后進(jìn)入微信開(kāi)發(fā)者工具,如下圖,右鍵點(diǎn)擊該云函數(shù),然后點(diǎn)擊上傳(“上傳所有文件”適用于依賴(lài)項(xiàng)有更新的情況,“上傳但不包含node_modules”適用于沒(méi)有更新依賴(lài)項(xiàng)的情況)。

上傳成功之后,再進(jìn)入云開(kāi)發(fā)控制臺(tái),選擇該函數(shù)的“云端測(cè)試”。

然后在日志中可以查看這次運(yùn)行的日志,如果有報(bào)錯(cuò)的話(huà)把它發(fā)給開(kāi)發(fā)助手進(jìn)行調(diào)整修改,修改完重新上傳并測(cè)試,直至成功。

講完第一個(gè)重要概念 云函數(shù) ,第二個(gè)是 大模型應(yīng)用開(kāi)發(fā) 。

該云函數(shù)主要做兩件事情,第一是調(diào)用遠(yuǎn)程的書(shū)單內(nèi)容解析服務(wù)獲取書(shū)單信息,第二是把獲取的信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,用來(lái)后續(xù)在各個(gè)列表頁(yè)進(jìn)行展示。

由于各個(gè)平臺(tái)(豆瓣、微信讀書(shū)、微博、小紅書(shū)…)書(shū)單內(nèi)容結(jié)構(gòu)是不一樣的,如果針對(duì)每個(gè)平臺(tái)單獨(dú)寫(xiě)代碼解析書(shū)單內(nèi)容,開(kāi)發(fā)和維護(hù)成本很高,于是我就想到用大模型的能力,大模型可以類(lèi)似人一樣去讀網(wǎng)頁(yè)中的內(nèi)容、理解內(nèi)容,然后按照我的需求輸出。另外 ,除了網(wǎng)頁(yè)中已有的 內(nèi)容:【書(shū)單名稱(chēng)】、【書(shū)單作者】、【書(shū)單描述】、【書(shū)單內(nèi)容】,我還希望獲得更多有意思的增量?jī)?nèi)容:【標(biāo)簽】、【讀啥鴨評(píng)級(jí)】、【讀啥鴨評(píng)價(jià)】,所以傳統(tǒng)代碼的方式就更不可行了。

所以這里書(shū)單內(nèi)容解析服務(wù)我使用了自家的大模型應(yīng)用開(kāi)發(fā)平臺(tái):畢昇BISHENG 。

BISHENG是一款 開(kāi)源 LLM應(yīng)用開(kāi)發(fā)平臺(tái),專(zhuān)攻企業(yè)場(chǎng)景, 可完全私有化部署在公司內(nèi)部,已有大量行業(yè)頭部組織及世界500強(qiáng)企業(yè)在使用。

由于BISHENG可以開(kāi)發(fā)非常復(fù)雜的應(yīng)用,所以 讀啥鴨 的這個(gè)需求,如下圖所示,我基于BISHENG一個(gè)簡(jiǎn)單的應(yīng)用模板稍作修改即可。它主要實(shí)現(xiàn)了網(wǎng)頁(yè)文本內(nèi)容的解析,然后把解析的文本與提示詞一起傳給大模型。大模型會(huì)按照提示詞中的要求輸出所需的書(shū)單信息。

我當(dāng)前的提示詞是這樣的:

# 角色
你是一名毒辣的{input},態(tài)度要非常鮮明。

# 任務(wù)
1. 首先你需要閱讀下方”書(shū)單文章”,從中提取出【書(shū)單名稱(chēng)】、【書(shū)單作者】、【書(shū)單描述】、【書(shū)單內(nèi)容】四項(xiàng)信息,這四個(gè)信息很重要,不能編造,如果”書(shū)單文章”中不存在該信息,則置空,其中【書(shū)單內(nèi)容】用 書(shū)名+作者名 這樣的形式表達(dá),每本書(shū)之間用換行分隔,如:
《鋼鐵是怎樣練成的》奧斯特洛夫斯基
《老人與海》歐內(nèi)斯特·海明威
2. 然后根據(jù)你的知識(shí),分析“書(shū)單文章”內(nèi)容,并輸出【標(biāo)簽】、【評(píng)級(jí)】?jī)身?xiàng)信息,其中【標(biāo)簽】可以是多個(gè),但是不要超過(guò)5個(gè);其中【評(píng)級(jí)】從以下幾種中選擇:平淡無(wú)奇、普通、有意思、別具一格、栩栩如生、艱深晦澀、見(jiàn)微知著、引人入勝、刻骨銘心、 發(fā)人深省、氣勢(shì)磅礴、一針見(jiàn)血、意味深長(zhǎng)、彌足珍貴、典藏、出神入化,其中越往后要求越高、出現(xiàn)的概率也越低。
3.最重要的來(lái)了,對(duì)這個(gè)書(shū)單中列出的這些書(shū)進(jìn)行【評(píng)價(jià)】,評(píng)價(jià)最主要的內(nèi)容是說(shuō)明為什么要讀這些書(shū)??梢蕴暨x幾本進(jìn)行簡(jiǎn)評(píng),也可以評(píng)價(jià)整個(gè)書(shū)單。語(yǔ)言風(fēng)格詼諧幽默、一針見(jiàn)血、出人意料,內(nèi)容中穿插不少于5個(gè)emoji表情,表達(dá)準(zhǔn)確的前提下字?jǐn)?shù)越少越好。注意:開(kāi)頭不要“哇”、“哇塞”這些驚嘆的詞,直接說(shuō)內(nèi)容;并且不要用“xxx簡(jiǎn)直是xxx”的說(shuō)法。
舉一個(gè)好的例子:
書(shū)單中包含:《西游記》、《水滸傳》、《紅樓夢(mèng)》、《三國(guó)演義》
評(píng)價(jià):《西游記》?? 也可以說(shuō)是“公費(fèi)吃喝,到此一游”???,何為真經(jīng),孰能定義 ?? 《紅樓夢(mèng)》可是文學(xué)巔峰,擁有極高的藝術(shù)成就和思想價(jià)值,可惜一般人不懂 ??
舉一個(gè)不好的例子(評(píng)價(jià)沒(méi)有詼諧幽默及出人意料):
書(shū)單中包含:《西游記》、《水滸傳》、《紅樓夢(mèng)》、《三國(guó)演義》
評(píng)價(jià):中國(guó)四大名著,文學(xué)成就極高,人一生絕不可錯(cuò)過(guò)的書(shū)
4. 以上七項(xiàng)信息使用的語(yǔ)言與”書(shū)單文章”的語(yǔ)言保持一致,如”書(shū)單文章”內(nèi)容是中文則為中文,若”書(shū)單文章”內(nèi)容是英文則七項(xiàng)信息的內(nèi)容也為英文。
5. 以上七項(xiàng)信息務(wù)必以JSON的格式進(jìn)行輸出。
6. 如果你判斷“書(shū)單文章”中的內(nèi)容并非書(shū)單,則不必輸出以上七項(xiàng)信息,告訴用戶(hù)這里面沒(méi)有書(shū)單信息請(qǐng)用戶(hù)檢查即可,語(yǔ)氣可以俏皮可愛(ài)一點(diǎn)。

# 書(shū)單文章
{content}

你的輸出:

構(gòu)建完成后點(diǎn)擊“對(duì)外發(fā)布”按鈕,可以看到該應(yīng)用的接口調(diào)用方法。

如果你的場(chǎng)景需要實(shí)現(xiàn)的大模型應(yīng)用跟我類(lèi)似,你又完全不懂技術(shù),調(diào)用方式可以參考我的。

把這些提供給開(kāi)發(fā)助手,它就會(huì)幫你寫(xiě)好調(diào)用該接口的代碼。

基于BISHENG我們還可以開(kāi)發(fā)許多更復(fù)雜的大模型應(yīng)用。

現(xiàn)在我們獲取到了正確的書(shū)單信息,接下來(lái)就是存到數(shù)據(jù)庫(kù)。你在描述處理書(shū)單需求時(shí),可以告訴開(kāi)發(fā)助手你需要把處理結(jié)果存儲(chǔ)到微信云開(kāi)發(fā)環(huán)境的云數(shù)據(jù)庫(kù)中,它就會(huì)提示你需要?jiǎng)?chuàng)建一個(gè)名為“xxx”的集合。如下圖所示,點(diǎn)擊添加按鈕進(jìn)行創(chuàng)建即可。

好了,中間再經(jīng)過(guò)各種調(diào)試修改,就可以通過(guò)頁(yè)面提交書(shū)單內(nèi)容了!為了增加趣味性,我又提出了如下幾個(gè)新的要求。

沒(méi)錯(cuò),只需要像這樣直接提出你的要求,基本馬上就能實(shí)現(xiàn)。太爽了~

2.5 定時(shí)自動(dòng)運(yùn)行

用戶(hù)可以提交書(shū)單了,這很好。但早期哪有什么用戶(hù)來(lái)提交書(shū)單?

于是我讓他想辦法自動(dòng)獲取

a few moments later

a few moments later

根據(jù)指引基本配置成功了。后來(lái)又增加了兩個(gè)優(yōu)化項(xiàng):

  1. 調(diào)用大模型耗時(shí)比較長(zhǎng)且每次調(diào)用都產(chǎn)生一點(diǎn)費(fèi)用,所以降低錯(cuò)誤調(diào)用(有些鏈接不是書(shū)單信息),所以在云函數(shù)中先寫(xiě)了一個(gè)邏輯讓它用正則匹配網(wǎng)頁(yè)中是否有“出版社”之類(lèi)的關(guān)鍵字,有才去調(diào)用大模型應(yīng)用。
  2. 由于bing搜索出來(lái)的無(wú)效鏈接太多,改成定向搜索豆瓣豆列。

排查云函數(shù)及定時(shí)觸發(fā)錯(cuò)誤過(guò)程中發(fā)現(xiàn)幾個(gè)注意事項(xiàng):

1、超時(shí)時(shí)間

改一下超時(shí)時(shí)間,默認(rèn)是3秒,而我每次需要更新的書(shū)單數(shù)量比較多,所以改成了最長(zhǎng)的60秒

2、定時(shí)器設(shè)置在該云函數(shù)的config.json文件中設(shè)置。我這里設(shè)置的意思是10分鐘執(zhí)行一次。

需要注意的是,微信云函數(shù)的定時(shí)觸發(fā)器使用的是一種特殊的 cron 表達(dá)式,它包含 7 個(gè)字段,而不是標(biāo)準(zhǔn) cron 表達(dá)式的 5 個(gè)字段。3、更新云函數(shù)、清理緩存

由于修改其他頁(yè)面代碼只需要保存代碼文件即可,修改云函數(shù)需要上傳生效,有時(shí)候會(huì)忘記這個(gè)步驟,導(dǎo)致怎么測(cè)都不行。。。

另外有些改動(dòng)需要清理緩存才能生效,所以如果已經(jīng)按要求修改了代碼卻總是不行(會(huì)有點(diǎn)崩潰),可以清除緩存試試,我一般選擇“全部清除”。

2.6 其他經(jīng)驗(yàn)

2.6.1 云存儲(chǔ)的使用

我用即夢(mèng)(https://jimeng.jianying.com)畫(huà)了許多種書(shū)單評(píng)級(jí)勛章。

原本這些圖片都是放到代碼文件夾中的,但是微信會(huì)限制小程序代碼整體不能超過(guò)2M,所以就需要把這些圖片存儲(chǔ)在云存儲(chǔ)中。

操作也比較簡(jiǎn)單,直接點(diǎn)擊“上傳文件”按鈕,把所有文件傳上來(lái)。然后每個(gè)文件的“文件id”就是讀取該文件的地址。根據(jù)開(kāi)發(fā)助手的指引,把對(duì)相關(guān)圖片地址逐個(gè)進(jìn)行替換即可。

2.6.2 質(zhì)疑開(kāi)發(fā)助手與自我能力提升

開(kāi)發(fā)助手很強(qiáng)(本質(zhì)是大模型很強(qiáng)),它不僅能幫我寫(xiě)代碼,它甚至知道微信開(kāi)發(fā)者工具各個(gè)按鈕在什么位置(應(yīng)該是模型訓(xùn)練數(shù)據(jù)中有其開(kāi)發(fā)者手冊(cè)數(shù)據(jù)),引導(dǎo)我操作。

不過(guò)有時(shí)候也會(huì)有錯(cuò)誤以及一些它不知道的事情,所以發(fā)現(xiàn)它給的建議沒(méi)作用時(shí),可以使用搜索引擎來(lái)查找答案。

另一種好方法是,你察覺(jué)到它給出的答案有問(wèn)題,可以嘗試給他一些反問(wèn)和提醒。

如果你開(kāi)始有能力給出一些正確的反問(wèn),代表你開(kāi)始對(duì)代碼有一定的認(rèn)知了。這是一個(gè)循序漸進(jìn)的過(guò)程,你在一步步調(diào)試以及開(kāi)發(fā)助手給你的說(shuō)明當(dāng)中,逐漸開(kāi)始理解許多概念。先從前端的簡(jiǎn)單的頁(yè)面設(shè)計(jì)開(kāi)發(fā)到后端的邏輯到數(shù)據(jù)庫(kù)到一些函數(shù)的執(zhí)行,一點(diǎn)一點(diǎn)接觸和學(xué)習(xí)更加復(fù)雜的概念。

這是由你自己的需求增加,自然而然向前推動(dòng)的一個(gè)學(xué)習(xí)過(guò)程。我們不需要上來(lái)先去學(xué)一大堆概念,卻不知道有什么用。由于是面向一個(gè)具體的目標(biāo),我們會(huì)非常有動(dòng)力去理解和學(xué)習(xí),并且大部分是否有非??斓姆答?。

寫(xiě)到這里就差不多把開(kāi)發(fā) 讀啥鴨 過(guò)程中的主要經(jīng)驗(yàn)都分享了出來(lái)。

還有許多不完美的地方,待后續(xù)去迭代,比如用戶(hù)體系,比如通過(guò)收集書(shū)單評(píng)級(jí)徽章的形式激勵(lì)用戶(hù)上傳更多書(shū)單,比如激勵(lì)用戶(hù)分享,比如支持解析微信公眾號(hào)文章的鏈接(微信官方的反爬比較厲害),比如支持B站視頻形式的書(shū)單,比如我還想加一個(gè)自動(dòng)運(yùn)營(yíng)的功能(自動(dòng)挑選一些書(shū)單卡片并發(fā)布到抖音、小紅書(shū)等社交平臺(tái))…

后記:一年發(fā)布12款產(chǎn)品計(jì)劃

平均1個(gè)月一款產(chǎn)品。著名獨(dú)立開(kāi)發(fā)者Pieter Levels(《MAKE:building startups the indie way》 作者)也曾踐行過(guò)這個(gè)計(jì)劃。

每款產(chǎn)品不一定要做得很精美,應(yīng)當(dāng)盡早發(fā)布,盡早獲得真實(shí)反饋。用戶(hù)的真實(shí)反應(yīng)要抵過(guò)自己無(wú)數(shù)巧妙的思考、分析。

我的靈感庫(kù)中大約還有20多條想要做的產(chǎn)品。

后續(xù)產(chǎn)品的開(kāi)發(fā)過(guò)程也盡量(精力夠的話(huà))會(huì)使用類(lèi)似讀啥鴨這樣build in public的方式,通過(guò)公眾號(hào)、社群發(fā)布出來(lái)。

本文由 @七吟覃 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自 Unsplash,基于 CC0 協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
"="" class="meta">11-301278 瀏覽
"="" class="meta">
"="" class="meta"> "="" src="https://image.woshipm.com/2023/04/13/a5544d00-d9ea-11ed-a6e8-00163e0b5ff3.jpg!/both/120x80" alt="短暫登頂美榜、個(gè)位數(shù)留存,“霸總出海”禁不起尬吹">
評(píng)論
評(píng)論請(qǐng)登錄
  1. 深有同感。同為產(chǎn)品經(jīng)理(不過(guò)是金融產(chǎn)品),我也是今年年初開(kāi)始開(kāi)發(fā)小程序,目前做了一個(gè)在地鐵里找?guī)摹钡叵妈F廁所指南”,自然增長(zhǎng)半年有了5000個(gè)UV,春節(jié)期間在家花了5天時(shí)間,當(dāng)時(shí)用的還是gpt4和perplexity。之后本來(lái)一直用網(wǎng)頁(yè)版Claude,前兩個(gè)月開(kāi)始用Cursor后效率進(jìn)一步飛起,現(xiàn)在我已經(jīng)開(kāi)發(fā)了兩個(gè)微信小程序,一個(gè)網(wǎng)站和一個(gè)谷歌插件,還有一大堆to do list。ship more, ship fast,共勉。

    來(lái)自上海 回復(fù)
    1. 忘了說(shuō),對(duì)于多文件的修改,相對(duì)Chat功能,建議使用Cursor的Composer功能(Crtl+I),可以一次性對(duì)多個(gè)文件進(jìn)行修改,尤其是新開(kāi)發(fā)一個(gè)軟件時(shí),可以一鍵生成相關(guān)的代碼文件

      來(lái)自上海 回復(fù)
专题
16833人已学习12篇文章
如何搞懂财务和业务之间的关系,并推进业务系统财务模块的建设呢?本专题的文章分享了财务系统的设计指南。
专题
13469人已学习12篇文章
本专题的文章分享了B端产品经理的通用工作流程。
专题
12220人已学习12篇文章
瑞幸咖啡和茅台的这次联名合作,无疑让联名营销这类营销方式又掀起了热度。本专题的文章分享了联名营销指南。
专题
30987人已学习11篇文章
来看看别人家是怎么做产品优化的。