介紹 Agency: 使 AI 與 Go 語言無縫對接

在當今應用開發領域,類似 OpenAI API 等生成式 AI 技術的蓬勃發展正在徹底改變着應用開發的格局。Python 和 JavaScript 等語言已經擁有豐富的資源來支持這些技術,其中 LangChain 就是一個顯著的例子。然而,Go 語言開發者面臨的選擇卻相對有限。LangChainGo,作爲 LangChain 的 Go 語言版本,一直在努力與 Go 的編程理念保持一致,而 LangChain 本身則常被認爲過於複雜。

爲了滿足對一個既簡單又強大的 Go 兼容工具的需求,我們推出了 Agency。這個 Go 框架採用了一種精簡的方法論,與 Go 固有的靜態類型和性能效率的優勢完美契合。它代表了我們對向 Go 編程社區引入用戶友好且高效的 AI 功能的解決方案。

Agency 的特性

Agency 在實戰中的應用



package main

import (
 "bufio"
 "context"
 "fmt"
 "os"

 _ "github.com/joho/godotenv/autoload"

 "github.com/neurocult/agency"
 "github.com/neurocult/agency/providers/openai"
)

func main() {
 // 初始化Assistant
 assistant := openai.
  New(openai.Params{Key: os.Getenv("OPENAI_API_KEY")}).
  TextToText(openai.TextToTextParams{Model: "gpt-3.5-turbo"}).
  SetPrompt("You are helpful assistant.")

 // 交互式聊天
 messages := []agency.Message{}
 reader := bufio.NewReader(os.Stdin)
 ctx := context.Background()

 for {
  fmt.Print("User: ")

  text, err := reader.ReadString('\\n')
  if err != nil {
   panic(err)
  }

  // 用戶輸入
  input := agency.UserMessage(text)

  // 執行Assistant
  answer, err := assistant.SetMessages(messages).Execute(ctx, input)
  if err != nil {
   panic(err)
  }

  // 打印Assistant回答
  fmt.Println("Assistant: ", answer)

  // 更新消息記錄
  messages = append(messages, input, answer)
 }
}

以上是一個簡單的 Chat 例子,展示瞭如何使用 Agency 框架與 OpenAI 的 API 實現基於 Go 的交互式聊天。這個例子體現了 Agency 的簡單易用,以及如何與 Go 的語言特性無縫結合,爲 Go 語言開發者提供了一種高效且友好的 AI 功能引入方式。

結語

在這個 AI 盛行的時代,我們深知 Go 語言開發者對於高效、簡單而強大的 AI 工具的需求。Agency 的誕生旨在填補 Go 語言領域的空白,爲開發者提供一種更直觀、更貼近 Go 編程理念的 AI 解決方案。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/GKYPMyOGfZHq__BmC-ejJQ