成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

效率Max:AI讀了源碼后再教我

人工智能
在閱讀技術文章前,我們可以讓Webpilot對文章內容先做個總結,看完總結再閱讀會更輕松。既然這個項目這么有用,而且代碼是開源的,那不看看他的實現原理說不過去。況且,我還發現了作者團隊留下的樂子 —— 在Webpilot貢獻者一欄中,項目主程居然是ChatGPT。

大家好,我卡頌。

經常看技術博客的朋友,可能對Webpilot[1]并不陌生。這是個「能對網頁內容提問的AIGC瀏覽器插件」

他有什么作用呢?

比如,在閱讀技術文章前,我們可以讓Webpilot對文章內容先做個總結,看完總結再閱讀會更輕松。

既然這個項目這么有用,而且代碼是開源的,那不看看他的實現原理說不過去。況且,我還發現了作者團隊留下的樂子 —— 在Webpilot貢獻者一欄中,項目主程居然是ChatGPT。

既然代碼是ChatGPT寫的(姑且這么認為吧),那我們看代碼也不要人肉看了。

今天,讓我們試試 AIGC讀了項目源碼后再來教我們。

應用選擇

當前,代碼相關的AIGC應用的操作對象主要是「代碼片段」或「某個代碼文件」,比如:

  • Github Copilot
  • cursor

但我們希望應用了解整個項目,所以需要應用既能理解「代碼片段」或「某個代碼文件」,又能理解「代碼之間的依賴關系」。畢竟,代碼邏輯通常是跨文件的。比如,假設項目中存在方法fnA,他:

  • 在a.js中定義
  • 在b.js、c.js中使用

那么當提問fnA相關問題,AIGC應用的上下文中起碼應該包括以下信息:

  • 項目整體情況。
  • a.js、b.js、c.js的代碼。

才能回答好問題。

要實現類似效果,業界的常用做法是Embedding,即「將內容實體映射為低維向量,通過向量之間的相似度判斷內容關聯關系」。

比如,開源項目pdfGPT[2]可以接收PDF文檔,用戶就文檔內容向他提問。

文檔動輒幾百頁,GPT一次性能夠接收的token有限,他是如何實現「就用戶提問,在全文檔中檢索答案」呢?原理大體可以概括為:

  1. 將PDF文檔分割成小的內容塊。
  2. 將內容塊通過Embedding映射為低維向量,并存儲。
  3. 當用戶提問后,首先將問題映射為低維向量。
  4. 將3的低維向量與所有「存儲的低維向量」比較,尋找關聯度最高的向量。
  5. 將「用戶提問」、「與用戶提問關聯度最高的向量對應的內容塊」組合在一起向LLM提問。
  6. 獲得回答。

按照上述「解析PDF文檔」的思路,我找到了解析代碼的應用 —— bloop[3]。

bloop簡介

bloop有點類似pdfGPT,只不過他的接收的是代碼倉庫,用戶就代碼倉庫向他提問。

在官網下載bloop桌面應用后,綁定自己的Github賬號,即可免費使用。

注意:bloop會要求你所有public、private倉庫的讀寫權限。在意的同學可以像我一樣注冊個新Github賬號。

我已經fork了Webpilot項目(就是我們要學源碼的項目),這里直接讓bloop同步Webpilot。

在bloop內部,這一步應該會建立代碼文件的低維向量。

現在,我們可以就Webpilot項目向bloop提問了。來看看我們的第一個問題:

簡單介紹下這個項目。

很遺憾,第一句話就答錯了 —— Webpilot是「能對網頁內容提問的AIGC瀏覽器插件」,而不是一個文本到圖像的程序。

Webpilot項目中確實存在MidJourney(根據提示詞生成圖片的AIGC應用)相關代碼,但這樣回答肯定是以偏概全了。

那這是不是意味著bloop不中用呢?并不是的。

剛才我們已經提到,采用Embedding的實現方式只能獲得「與提問內容相關的內容」,再就這些內容向模型提問。并非是模型完全理解代碼邏輯后再提問。

換句話說,對于上述「提問fnA相關問題」的例子,采用Embedding后,我們會將下述信息整合后輸入給模型:

  • 項目整體情況
  • a.js、b.js、c.js的代碼
  • 用戶的提問

模型根據上述信息回答問題。

而不是模型理解項目代碼邏輯后,再回答「fnA相關問題」。

所以,在向bloop提問時,我們需要給到一些線索,比如:

  • 文件名
  • 函數名
  • 變量名

這樣,bloop才能根據線索,通過Embedding尋找相關內容。

當我們將「簡單介紹下這個項目」修改為「根據README的信息,介紹下這個項目的用途」后,bloop給到了我們想要的答案:

其中,README就是我們給到的線索。

用bloop讀源碼

我們與bloop的對話不僅是為了尋求答案,更是為了給bloop提供更多線索。比如,當bloop回答:

Webpilot允許你與網頁進行自由形式的對話,或者與其他用戶進行自動的爭論......

后,這個答案不僅是告訴我們的,也是告訴bloop自己的。在回答前,他也不知道Webpilot到底能干嘛。在回答后,我們就能繼續提問:

“與網頁進行自由形式的對話”這部分邏輯在哪里定義的

此時,bloop告訴了我們關鍵信息 —— 應用的主要邏輯在useAskAi方法中:

那么接下來,我們讓bloop詳細解釋useAskAi方法的作用就能了解Webpilot的實現原理:

現在讓我們思考一個問題,如果我們詢問:

useAskAi方法都在哪些模塊被使用?

bloop能給出正確答案么?答案是:不太能。

這有點反直覺,畢竟,在程序員看來,作為一個代碼瀏覽器,bloop完全可以靜態分析模塊依賴關系后找到答案。

但是,bloop是基于Embedding技術實現的。在bloop底層,并不存在模塊依賴圖,而是「代碼塊對應的低維向量」。

所以,bloop能找到部分「使用useAskAi方法的模塊」,但可能找錯、也可能找不全。

總結

bloop是基于Embedding技術實現的代碼問答工具,對他提問需要遵循幾個原則:

  • 問題盡量詳細,給bloop更多線索。

壞問題:簡單介紹下這個項目。

好問題:根據README的信息,介紹下這個項目的用途。

  • 提問「詳細的業務邏輯問題」時,可以分步驟提問。

壞問題:“與網頁進行自由形式的對話”怎么實現的?

好問題:

  • 根據README的信息,介紹下這個項目的用途。
  • “與網頁進行自由形式的對話”怎么實現的?

一句話總結 —— bloop了解很多「關于你項目的知識」,但在向他提問時,得先讓他明白你的問題和「他了解的哪部分知識」相關。

能做到以上這點,bloop將會是你得力的源碼閱讀助手。

參考資料

[1]Webpilot:https://github.com/webpilot-ai/Webpilot。

[2]pdfGPT:https://github.com/bhaskatripathi/pdfGPT。

[3]bloop:https://bloop.ai/。

責任編輯:姜華 來源: 魔術師卡頌
相關推薦

2021-10-20 18:23:22

源碼VolatileEureka

2025-03-26 07:00:00

AI應用場景AI驅動人工智能

2022-04-29 08:15:40

Python技巧Max

2021-07-17 06:48:09

AI人工智能

2023-06-01 11:42:53

大模型人工智能

2015-07-23 15:25:26

90后態度

2019-10-28 10:37:08

虎賁T710

2021-11-30 09:51:19

微軟操作系統Windows

2023-10-09 09:02:50

.Net析構函數分配

2025-03-06 07:48:02

2022-05-17 09:17:45

JS 代碼越來越難讀

2022-05-27 11:44:53

JS代碼

2023-04-18 08:01:30

AI寫作時間

2015-05-18 18:38:26

戴爾

2025-03-03 00:00:15

2020-12-01 16:05:04

微軟小冰人工智能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲不卡在线观看 | 国产伦精品一区二区 | 中国免费黄色片 | 国产精品夜夜春夜夜爽久久电影 | 欧美日韩成人 | 最近日韩中文字幕 | 久久国产精品视频 | 成人av一区二区在线观看 | 天堂av在线影院 | 成人激情视频免费在线观看 | 鸳鸯谱在线观看高清 | 色婷婷精品国产一区二区三区 | 国精久久 | 日韩成人在线网址 | 国产精品污www一区二区三区 | 亚洲福利一区二区 | 一区二区三区四区不卡 | 亚洲成人蜜桃 | 天天操,夜夜爽 | 欧美性猛片aaaaaaa做受 | 国产999精品久久久久久 | 免费视频99 | 青青久在线视频 | 久久久久久久久久久成人 | www.亚洲精品 | 激情五月婷婷在线 | 精品久久99 | 观看毛片 | 日韩精品视频在线免费观看 | 日韩一区二区精品 | 欧美中文字幕一区二区三区亚洲 | 九色91视频 | 国产精品久久一区二区三区 | 欧美三区| 欧美男男videos| 黑人巨大精品欧美一区二区免费 | 奇米av| 亚洲欧美中文字幕在线观看 | 欧美精品福利 | 国产 日韩 欧美 在线 | 国产亚洲精品久久yy50 |