Go Wiki: AI

關於使用 Go 訪問 AI(人工智慧)服務的資源列表,特別是大型語言模型(LLM)和機器學習(ML)系統。

您可以用 Go 構建什麼樣的 AI 應用?

Go 是一種非常適合編寫使用 AI 服務的程式的語言。這包括使用 LLM 服務來總結或分類資料、根據資料庫回答問題或避免重複性任務的程式。這些服務可以在網際網路上訪問(託管服務),也可以本地執行(下載的服務)。

例如,程式 golang.org/x/cmd/vulndb/vulnreport 使用 AI 來總結漏洞報告。當 Go 安全團隊的成員執行該程式並輸入新的漏洞報告時,vulnreport 會聯絡一個生成式 AI 服務(在此例中是 Google 的生成式 AI 服務)。它會傳遞一個 prompt(提示)以及漏洞的原始描述。AI 服務將回復一個簡潔的摘要。然後,Go 安全團隊成員可以將其提煉成最終的人工可讀報告。

如何查詢 Go 包來訪問 AI 服務?

這是一個快速發展的領域,這些答案可能會發生變化。

如果您有特定的服務或服務提供商,許多服務提供商都有自己的 Go 包。

如果您希望靈活選擇服務,可以使用像 langchaingoOllama 這樣的通用框架。

一些特定服務

如何從 Go 呼叫託管服務?

這取決於具體服務,但基本步驟如下:

  • 建立客戶端
  • 組裝要傳送給模型的訊息
    • 訊息將包含一個 prompt,用於提出問題或告訴服務要做什麼
    • 訊息可以包含不同的部分
  • 將訊息傳送給客戶端
  • 接收回復

這是一個使用 Google AI 服務的完整小型示例

如何從 Go 呼叫下載的服務?

Ollama 為使用下載的服務提供了一個很好的框架。Ollama 在本地機器上執行,但會在 localhost 上開啟一個埠以提供 REST API。此時,Ollama 可以被視為一個託管服務,但實際的 AI 計算將在本地機器上完成。

這是一個從 Go 使用 Ollama 的完整小型示例

如何在 Go 中構建 LLM 驅動的應用?

要了解如何使用不同的 LLM 框架構建應用,請檢視如何使用各種 LLM 框架構建 RAG 伺服器

如何在 Go 中管理 prompt?

傳送給 LLM 服務的訊息被稱為 prompt(提示)。在許多情況下,程式會有一個包含變數的通用 prompt,這些變數會根據使用者輸入進行填充。在 Go 中,一種自然的方法是使用 text/template 包


此內容是 Go Wiki 的一部分。