自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ChatGPT 開(kāi)源了第一款插件,都來(lái)學(xué)習(xí)一下源碼吧!

人工智能
關(guān)于 ChatGPT 插件的介紹、開(kāi)發(fā)及配置等資料還比較少,畢竟是新推出的。但是,申請(qǐng) waitlist 的個(gè)人和組織已經(jīng)數(shù)不勝數(shù)了,一旦開(kāi)放使用,各式各樣的插件一定會(huì)像 Python 社區(qū)豐富的開(kāi)源庫(kù)一樣,也將極大擴(kuò)展 ChatGPT 的生態(tài)。

3 月 23 日,OpenAI 又投出了一枚重磅炸彈:為 ChatGPT 推出插件系統(tǒng)!

此舉意味著 ChatGPT 將迎來(lái)“APP Store”時(shí)刻,也就是圍繞它的能力,形成一個(gè)開(kāi)發(fā)者生態(tài),打造出基于 AI 的“操作系統(tǒng)”!

插件系統(tǒng)將為 ChatGPT 帶來(lái)質(zhì)的飛躍,因?yàn)榻柚诓寮?wù),它可以獲取實(shí)時(shí)的互聯(lián)網(wǎng)信息、調(diào)用第三方應(yīng)用(預(yù)定酒店航班、點(diǎn)外賣(mài)、購(gòu)物、查詢股票價(jià)格等等)。

ChatGPT 是一個(gè)無(wú)比聰明的大腦,而插件會(huì)成為它的眼睛、耳朵、手腳、甚至于翅膀,能力驚人,未來(lái)不敢想象!

官方目前提供了兩個(gè)插件:

  • 一個(gè)網(wǎng)頁(yè)瀏覽器。利用新必應(yīng)瀏覽器的 API,實(shí)時(shí)搜索互聯(lián)網(wǎng)內(nèi)容,并給出答案和鏈接
  • 一個(gè)代碼解釋器。利用 Python 解釋器,可以解決數(shù)學(xué)問(wèn)題、做數(shù)據(jù)分析與可視化、編輯圖片、剪輯視頻等等,還支持下載處理后的文件

另外,OpenAI 還開(kāi)源了一個(gè)知識(shí)庫(kù)檢索插件 chatgpt-retrieval-plugin ,這個(gè)插件通過(guò)自然語(yǔ)言從各種數(shù)據(jù)源(如文件、筆記、郵件和公共文檔)檢索信息。有了開(kāi)源代碼后,開(kāi)發(fā)者可以部署自己的插件版本。

想象一下,假如我提供了一個(gè)“Python 知識(shí)庫(kù)插件”,以所有官方文檔作為數(shù)據(jù)源,那以后有任何 Python 使用上的問(wèn)題,我就只需詢問(wèn) ChatGPT,然后它調(diào)用插件并解析數(shù)據(jù),最后返回給我準(zhǔn)確的答案。這將節(jié)省大量的時(shí)間!

不僅如此,你還可以用書(shū)籍作為數(shù)據(jù)源,打造出“西游記知識(shí)庫(kù)”、“紅樓夢(mèng)知識(shí)庫(kù)”、“百科全書(shū)知識(shí)庫(kù)”、“個(gè)人圖書(shū)館知識(shí)庫(kù)”,等等;以專業(yè)領(lǐng)域的論文與學(xué)術(shù)期刊為數(shù)據(jù)源,創(chuàng)造出一個(gè)專家助手,從此寫(xiě)論文查資料將無(wú)比輕松;以蘇格拉底、喬布斯、馬斯克等名人的資料為數(shù)據(jù)源,創(chuàng)造出人格化的個(gè)人顧問(wèn)……

作為第一個(gè)開(kāi)源的 ChatGPT 插件,chatgpt-retrieval-plugin 項(xiàng)目一經(jīng)發(fā)布,就登上 Github 趨勢(shì)榜第一,發(fā)布僅一周就獲得 11K stars。

這個(gè)項(xiàng)目完全是用 Python 寫(xiě)的,不管是出于學(xué)習(xí)編程的目的,還是為了將來(lái)開(kāi)發(fā)別的插件作借鑒,這都值得我們花時(shí)間好好研究一下。

接下來(lái),我將分享自己在閱讀項(xiàng)目文檔和源碼時(shí),收獲到的一些信息。

首先,該項(xiàng)目含 Python 代碼約 3 K,規(guī)模不算大。項(xiàng)目結(jié)構(gòu)也很清晰,目錄如下:

目錄

描述

??datastore??

包含使用各種向量數(shù)據(jù)庫(kù)提供程序存儲(chǔ)和查詢文檔嵌入的核心邏輯

??examples??

包括配置示例、身份驗(yàn)證方法和面向程序提供方的示例

??models??

包含插件使用的數(shù)據(jù)模型,例如文檔和元數(shù)據(jù)模型

??scripts??

存放實(shí)用的腳本,用于處理和上傳來(lái)自不同數(shù)據(jù)源的文件

??server??

存放主要的 FastAPI 服務(wù)端實(shí)現(xiàn)

??services??

包含用于任務(wù)(如分塊、元數(shù)據(jù)提取和 PII 檢測(cè))的實(shí)用服務(wù)

??tests??

包括各種向量數(shù)據(jù)庫(kù)提供程序的集成測(cè)試

??.well-known??

存儲(chǔ)插件清單文件和 OpenAPI 格式,定義插件配置和 API 規(guī)范等信息

除去示例、測(cè)試、配置文件等內(nèi)容外,最主要的三個(gè)目錄如下:

datastore 數(shù)據(jù)存儲(chǔ)

數(shù)據(jù)源的文本數(shù)據(jù)會(huì)被映射到低維度向量空間,然后存儲(chǔ)到向量數(shù)據(jù)庫(kù)中。官方已提供 Pinecone、Weaviate、Zilliz、Milvus、Qdrant、Redis 這幾種數(shù)據(jù)存儲(chǔ)方案的示例。另外,有幾個(gè) pull requests 想要加入 PostgreSQL 的支持,大概率將來(lái)會(huì)合入。

這里使用了抽象工廠設(shè)計(jì)模式 ,DataStore 是一個(gè)抽象類,每種數(shù)據(jù)存儲(chǔ)庫(kù)是具體的實(shí)現(xiàn)類,需要實(shí)現(xiàn)三個(gè)抽象方法:

(1)_upsert(chunks: Dict[str, List[DocumentChunk]]) -> List[str] 方法,接收一個(gè)字典參數(shù),包含有 DocumentChunk 對(duì)象列表,將它們插入到數(shù)據(jù)庫(kù)中。返回值為文檔 ID 的列表。

(2)_query(queries: List[QueryWithEmbedding]) -> List[QueryResult] 方法,接收一個(gè)列表參數(shù),包含被 embedding 的查詢文本。返回一個(gè)包含匹配文檔塊和分?jǐn)?shù)的查詢結(jié)果列表。

(3)delete(ids: Optional[List[str]] = None, filter: Optional[DocumentMetadataFilter] = None, delete_all: Optional[bool] = None, ) -> bool 

值得注意的是,該目錄下的factory.py 模塊使用了 Python 3.10 新引入的 match-case 語(yǔ)法,緊跟著 Python 社區(qū)的新潮流呢~

server 服務(wù)端接口

這個(gè)目錄只有一個(gè)main.py 文件,是整個(gè)項(xiàng)目的啟動(dòng)入口。它使用了目前主流的 FastAPI 框架,提供了增刪改查的幾個(gè) API,另外使用 uvicorn 模塊來(lái)啟動(dòng)服務(wù)。

  • /upsert-file 接口,用于上傳單個(gè)文件,將其轉(zhuǎn)換為 Document 對(duì)象,再進(jìn)行新增或更新
  • /upsert 接口,上傳一系列的文檔對(duì)象,用于新增或更新
  • /query 接口,傳入一系列的文本條件,轉(zhuǎn)成 QueryWithEmbedding 對(duì)象后,再?gòu)南蛄繑?shù)據(jù)庫(kù)查詢
  • /delete 接口,根據(jù)條件刪除或者全部刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù)

在這幾個(gè)接口中,增改刪功能主要是給開(kāi)發(fā)者/維護(hù)者使用的,ChatGPT 只需調(diào)用插件的查詢接口。因此,代碼中還創(chuàng)建了一個(gè)“/sub”子應(yīng)用,只包含/query 接口,提供給 ChatGPT 調(diào)用。

另外,它使用 FastAPI 的 mount 方法掛載了一個(gè)“/.well-known”靜態(tài)文件目錄,暴露了關(guān)于本插件的基本信息,例如名稱、描述、作者、logo、郵箱、提供給 OpenAPI 的接口文檔等等。

services 任務(wù)處理方法

這個(gè)目錄下是一些通用的函數(shù),比如下面這些:

(1)chunks.py 文件包含了將字符串和 Document 對(duì)象分割成小塊、以及為每個(gè)塊獲取嵌入向量的函數(shù)。

(2)file.py 文件提供了從上傳的文件中提取文本內(nèi)容及元數(shù)據(jù)的函數(shù)。目前支持解析的文件類型包括 PDF、純文本、Markdown、Word、CSV 和 PPTX。

(3)openai.py 文件包含兩個(gè)函數(shù):get_embeddings 函數(shù)使用 OpenAI 的 text-embedding-ada-002 模型對(duì)給定的文本進(jìn)行嵌入。get_chat_completion 函數(shù)使用 OpenAI 的 ChatCompletion API 生成對(duì)話。

整個(gè)而言,這個(gè)插件的幾個(gè)接口功能很清晰,代碼邏輯也不算復(fù)雜。核心的文本嵌入操作是借助于 openai 的 Embedding 接口,文本分塊信息的存儲(chǔ)及查詢操作,則是依賴于各家向量數(shù)據(jù)庫(kù)的功能。

YouTube 上有博主手畫(huà)了一張示意圖,字體雖潦草,但大家可以意會(huì)一下:

圖片

他這個(gè)視頻 值得推薦一看,因?yàn)?up 主不僅簡(jiǎn)明地介紹了插件的工作原理,還手把手演示如何部署到 Digital Ocean、如何修改配置、如何調(diào)試,而且他有 ChatGPT 的插件權(quán)限,可以將自己部署的插件接入 ChatGPT,現(xiàn)場(chǎng)演示了知識(shí)庫(kù)插件的使用!

視頻:https://www.youtube.com/watch?v=hpePPqKxNq8

目前,關(guān)于 ChatGPT 插件的介紹、開(kāi)發(fā)及配置等資料還比較少,畢竟是新推出的。但是,申請(qǐng) waitlist 的個(gè)人和組織已經(jīng)數(shù)不勝數(shù)了,一旦開(kāi)放使用,各式各樣的插件一定會(huì)像 Python 社區(qū)豐富的開(kāi)源庫(kù)一樣,也將極大擴(kuò)展 ChatGPT 的生態(tài)。

最后,插件 chatgpt-retrieval-plugin 的官方文檔是最為詳細(xì)的一手資料,推薦大家研究一番。?https://github.com/openai/chatgpt-retrieval-plugin??

??作者 l 豌豆花下貓  

來(lái)源 l Python貓(ID:python_cat)

作者簡(jiǎn)介 ▽

豌豆花下貓,生于廣東畢業(yè)于武大,現(xiàn)為蘇漂程序員,有一些極客思維,也有一些人文情懷,有一些溫度,還有一些態(tài)度。

責(zé)任編輯:武曉燕 來(lái)源: Python貓
相關(guān)推薦

2015-09-08 10:44:15

MIAOW圖形處理器開(kāi)源

2009-03-24 08:41:45

Dell智能手機(jī)移動(dòng)OS

2022-02-23 14:21:20

Chrome插件瀏覽器

2013-03-08 17:28:53

飛魚(yú)星企業(yè)級(jí)路由器移動(dòng)互聯(lián)網(wǎng)

2016-03-17 14:26:09

QLogic

2011-07-13 10:54:08

寶德游戲云平臺(tái)云計(jì)算

2010-08-11 10:32:41

龍芯產(chǎn)品封裝

2015-08-31 20:36:51

微簡(jiǎn)

2009-07-14 13:28:56

SketchFlow原型設(shè)計(jì)工具Expression

2012-04-04 12:40:37

HTC

2012-04-26 09:44:41

Cargo-BotiPad編程工具

2019-03-25 10:05:23

Freeplane開(kāi)源思維導(dǎo)圖

2015-08-31 17:45:14

微簡(jiǎn)

2013-10-15 10:29:44

天天酷跑手游

2013-12-16 10:50:55

IPv6

2014-06-05 16:33:10

網(wǎng)康

2023-10-05 06:16:02

2011-09-16 14:55:47

HTML 5
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)