最近機緣巧合參加了內部 AI 分享會上財務同學的介紹後,看到一個之前沒怎麼接觸過編程的同學,也能在短時間內生成一個像模像樣的小工具,那一刻確實有被 AI Coding 的能力震撼到。AI生成代碼的能力,無疑會大大降低編程的門檻,提升編程的效率。

好奇心驅使,結合目前團隊的需求,在這一個月裏,我對 Qoder 進行了深度使用,並完成了兩個初步可用的小系統,目前這兩個系統已穩定運行了一段時間。結合自己使用上的一些經歷,決定把這段時間的一些感想記錄下來,希望能給其他正在使用這款工具進行系統&工具研發的同學一些啓發。

初步嘗試

應用一:基於大模型的前沿安全研究資訊服務平台

因為我目前在安全技術崗位,為了保持攻防技術上的不斷更新,因此需要對前沿的安全資訊,安全技術保持關注,人工查閲篩選這些信息無疑十分耗時耗力。大模型的出現能夠很好的幫助我們快速篩選,摘要出我們關注的技術領域的信息。

因此我藉助 Qoder開發了一款前沿安全研究資訊服務平台。這個系統能夠爬取前沿安全諮詢,並調用大模型進行諮詢分析,之後產生分析文章,並釘釘通知的功能。

需求也很簡單,細節就不再展開講,可以直接看下效果。

調用通義千問進行安全會議議題分析:

零基礎上手 Qoder,我的一些感悟分享_專家經驗

會議總結&摘要釘釘通知:

零基礎上手 Qoder,我的一些感悟分享_專家經驗_02

可以看到 AI 給出了比較豐富的安全議題總結,能夠輔助安全工程師快速判斷這項研究我們自己是否需要關注。並且這款工具能定期爬蟲,AI分析和通知,有新增的安全資訊會及時告知安全工程師,防止錯過重要的安全信息。

應用二:雲廠商安全功能競對分析系統

在做雲產品的安全能力建設過程中,我們經常會調研友商同類產品新出的安全功能,並進行深度對比,瞭解差距,從而補齊對應的產品能力。大模型的出現,讓我們能夠對各廠商雲產品的產品能力進行深度對比分析,並給出初步建議,幫助我們及時感知到友商在產品安全能力上的演進。

藉助 Qoder,我開發了一個雲產品的安全功能對比分析系統,能夠定期爬取各雲廠商的官方頁面,並調用大模型對比分析,給出初步的對比結果。

能根據不同時間線,監測各廠商安全功能的發佈記錄。

零基礎上手 Qoder,我的一些感悟分享_專家經驗_03

同時,也能對某個產品進行不同雲廠商間的深度對比。

零基礎上手 Qoder,我的一些感悟分享_安全資訊_04

目前實現了基本的功能,但是對比結果和分數是大模型自己生成的,後面會繼續優化。

思考

遇到的坑

在使用Qoder的過程中,遇到了一些坑,花了很多時間來修復這些bug,事後想想這些bug如果在開發之前被很好的考慮,可能就不會遇到,因此這裏記錄下。

提示詞歧義遇到的坑

在開發安全資訊平台的過程中,我給的提示詞大概是“對會議的頁面進行爬取並解析,獲得不同會議session的頁面結構並解析成結構化格式”。

session這個詞,英文裏有"會議"的意思,同時我們知道session在web開發中,是指用户與服務器之間的一次交互過程,是有特殊含義的。這就導致這個詞放在這個語義的提示詞中時,大模型會誤把session當成是WEB開發中的專業術語,從而不斷的去優化爬蟲中會話建立的那部分代碼。

零基礎上手 Qoder,我的一些感悟分享_專家經驗_05

剛好巧合的是,這個網站的頁面元素中,剛好會議議題這個元素,在html的頁面結構中,就是以“session”字段標識的。當頁面爬取下來之後,大模型會誤認為session是客户端和服務端建立的會話,而不是這個頁面元素,從而有意識的忽略了議題頁面的容器,導致一直找不到具體的議題頁面。

後來經過人工對html頁面的分析,發現了這個坑,再次將提示詞裏的“session”全都改成“會議議題”,修復了這個bug。

零基礎上手 Qoder,我的一些感悟分享_專家經驗_06

在這個bug的處理過程中,深刻意識到我們給到大模型的提示詞一定要準確,尤其是在項目建立之初,第一次給到智能體的提示詞,一定要準確,因為第一次給的提示詞決定了整個項目的框架脈絡。要儘量避免中英文混用,注意英文一詞多義,以及計算機專業術語等。

零基礎上手 Qoder,我的一些感悟分享_代碼實現_07

簡單的事情複雜化

其次,在使用Qoder進行一些稍微複雜的項目開發時,要適當結合一些人工經驗。智能體是很誠實的,提示詞怎麼寫,他就會根據提示詞,去海量的代碼倉庫中去搜索類似的代碼實現。可能這個需求不需要用複雜的代碼實現,用一條命令就能實現,這個時候就需要我們人工介入處理下。

例如,當在開發安全資訊平台過程中,需要定時爬取頁面。智能體誠實的根據我提示詞裏“定期”兩個詞,幫我生成了一個幾百行代碼的任務調度器來處理這個任務。當然智能體這麼做沒有錯,不過結合我自己的需求,這個事情其實通過 crontab的一條命令就行實現。

因此,我們在用智能體生成代碼時,可以選擇是否接受她給的方案,如果自己有簡化的方案更好。

一些使用上的建議

提示詞很重要

一個好的提示詞,能夠讓智能體準確的瞭解我們的意圖,生成符合我們預期功能的代碼。那什麼是好的提示詞呢?這裏引用下上次分享會上講師給的建議:

例1:編寫一個貪吃蛇小遊戲

什麼編程語言?

貪吃蛇,蛇、食物、牆是啥樣的?

有多少關卡?

是否需要聯網支持多人對戰?

是否需要氪金?

是否要出入廣告?

....

例2:這個界面太醜了,重新做一個

哪裏醜?顏色醜?圖片醜?圖標醜?字體醜?

美的標準是什麼?

需要調整哪裏?

好的提示詞

專注聚焦

充分詳細

避免歧義

清晰具體

大概能總結上面幾條,對於大多數用户,我們其實在將提示詞輸入給智能體之前,可以讓大模型幫我們優化一下,然後自己根據優化結果再適當修改,效果就會好很多。

需要不斷雕琢

使用Qoder等智能體開發一個項目的過程中,是一個不斷測試,不斷優化、迭代、打磨的過程。無論第一次提示詞輸入的多麼完美,Qoder不可能一次性生成一個滿足你需求,馬上可用的系統。剛開始可能只是個框架輪廓,不斷的修剪和優化,最終才能成型。

零基礎上手 Qoder,我的一些感悟分享_專家經驗_08

適當引入專家經驗

AI Coding技術的發展,降低了編程的門檻,同時是讓會寫代碼的人更高效的寫代碼。使用智能體生成代碼的過程中,對技術專家而言,更能發揮自身的經驗優勢,清晰的告訴大模型用什麼編程語言,什麼框架,如何調優,什麼方案最簡潔等等。這些在具體場景可能都不一樣,此時專家經驗就非常重要。

總結

寫本篇文章的目的,是記錄下這個月在使用Qoder過程中的一些感想。正如上次分享會上講的,AI Coding目前還處於一個手動擋汽車階段,要實現自動駕駛還需要很長一段時間。目前關於這個工具的使用經驗貼還不太多,歡迎大家交流討論,用好這個工具,提升工作效率。