好飯不怕晚,Google基於人工智慧AI大語言對話模型Bard測試和API呼叫(Python3.10)

劉悅的技術部落格發表於2023-03-31

谷歌(Google)作為開源過著名深度學習框架Tensorflow的超級大廠,是人工智慧領域一股不可忽視的中堅力量,旗下新產品Bard已經公佈測試了一段時間,譭譽參半,很多人把Google的Bard和OpenAI的ChatGPT進行對比,Google Bard在ChatGPT面前似乎有些技不如人。

事實上,Google Bard並非對標ChatGPT的產品,Bard是基於LaMDA模型對話而進行構建的,Bard旨在構建一個對話式的AI系統,使其能夠更好地理解人類語言,並且具備進行多輪對話的能力。而GPT的目標是生成自然語言文字。

在特徵資料層面,Bard使用了像Gmail、Meet等Google社交產品線中的對話資料來進行訓練,這些資料已經經過了嚴格的隱私保護措施。而GPT則是透過大規模的網頁爬蟲來獲取資料,它的訓練資料量比LaMDA要大得多。

模型結構層面,Bard採用了一種稱為“Transformer”的神經網路結構,該結構可以處理長文字並保持資訊連貫性。GPT也使用了Transformer結構,但它還採用了一種稱為“自迴歸”的方式,即按照時間步驟一個接一個地生成文字。

說白了,在應用層面上,Bard適合開發智慧助手、聊天機器人、虛擬客服等應用。而GPT更適用於自然語言生成任務,例如文章撰寫、機器翻譯等等。

Bard對話測試(英文/中文)

訪問 bard.google.com ,隨後輸入聊天內容:

一望而知,對話輸入的內容只支援英文,並不能輸入中文。

但事實上,只要稍微改變一下對話邏輯,也可以讓Bard返回中文資訊,比如:

Bard程式碼能力

私以為Bard的程式碼能力並不輸於ChatGPT:

尤其是對自家的深度學習框架Tensorflow更是如數家珍,生成的程式碼如下:

import tensorflow as tf  
  
def load_model():  
  """Loads the TensorFlow image recognition model."""  
  model = tf.keras.models.load_model('mobilenet_v2_1.0_224')  
  return model  
  
def recognize_objects(image):  
  """Recognizes objects in an image."""  
  # Convert the image to a tensor.  
  image = tf.image.convert_image_dtype(image, dtype=tf.float32)  
  
  # Resize the image to 224x224 pixels.  
  image = tf.image.resize(image, [224, 224])  
  
  # Normalize the image.  
  image = tf.image.normalize(image, mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])  
  
  # Predict the labels of the objects in the image.  
  predictions = model.predict(image)  
  
  # Return the labels of the objects in the image.  
  return predictions  
  
def main():  
  # Load the image recognition model.  
  model = load_model()  
  
  # Load an image.  
  image = tf.io.read_file('image.jpg')  
  
  # Recognize objects in the image.  
  predictions = recognize_objects(image)  
  
  # Print the labels of the objects in the image.  
  for prediction in predictions:  
    print(prediction)  
  
if __name__ == '__main__':  
  main()

這裡是使用Tensorflow內建小模型mobilenet_v2_1.0_224的智慧識圖邏輯,簡潔而嚴謹。

Bard網路架構

在瀏覽器(B端)架構上,Google極其自信地使用了HTTP2協議的介面進行通訊,而沒有仿效ChatGPT使用SSE協議:

我們知道ChatGPT使用SSE協議其實是等而下之的次優選擇,因為GPT模型在推理上需要時間,所以走的模式是一邊推理一邊返回的流式模型,關於流式返回,請移玉步至:逐句回答,流式返回,ChatGPT採用的Server-sent events後端實時推送協議Python3.10實現,基於Tornado6.1,這裡不再贅述。

而Google的Bard選擇一次性返回所有推理資料:

所以推理效率上,Bard要優於ChatGPT,但僅限於免費產品線,截止本文釋出,ChatGPT的收費產品gpt3-turbo和gpt4的推理效率都要遠遠高於其免費產品。

Bard的遠端介面API呼叫

和免費版本的ChatGPT一樣,Bard目前只支援瀏覽器端(B端)的使用,但也可以透過瀏覽器儲存的Token進行遠端呼叫,首先安裝Bard開源庫:

pip3 install --upgrade GoogleBard

隨後複製瀏覽器端的token秘鑰:

接著在終端透過Session進行注入:

python3 -m Bard --session UggPYghLzQdQTNx1kQiCRzbPBA1qhjC-dndTiIPCk3YPLR5TexmP7OQ7AfUdsfdsf1Q.

隨後就可以進入終端內的對話場景,使用alt+enter組合鍵或者esc+enter組合鍵傳送資訊即可:

➜  work python3 -m Bard --session UggPYghLzQdQTNx1kQiCRzbPBA1qhjC-dndTiIPCk3YPLR5TexmP7OQdfgdfgdfUSg0UQ.  
  
        Bard - A command-line interface to Google's Bard (https://bard.google.com/)  
        Repo: github.com/acheong08/Bard  
  
        Enter `alt+enter` or `esc+enter` to send a message.  
          
You:  
hi  
   
   
  
Google Bard:  
Hi there! How can I help you today?

非常方便,主要是速度相當驚豔。

結語

僅就免費版本所提供的產品力而言,Google Bard和ChatGPT可謂是各有千秋,私以為Google Bard在效率和使用邏輯上要更勝一籌,並不是網上所傳言的那麼不堪。所謂一枝獨秀不是春,百花齊放才是春滿園,Google Bard和百度的文心一言,都會對ChatGPT形成壓力,讓ChatGPT保持光速更新,成為更好的自己。

相關文章