在當今應用開發領域,類似AI target=_blank class=infotextkey>OpenAI API等生成式AI技術的蓬勃發展正在徹底改變著應用開發的格局。Python/ target=_blank class=infotextkey>Python和JAVAScript等語言已經擁有豐富的資源來支持這些技術,其中LangChain就是一個顯著的例子。然而,Go語言開發者面臨的選擇卻相對有限。LangChainGo,作為LangChain的Go語言版本,一直在努力與Go的編程理念保持一致,而LangChain本身則常被認為過于復雜。
為了滿足對一個既簡單又強大的Go兼容工具的需求,我們推出了Agency。這個Go框架采用了一種精簡的方法論,與Go固有的靜態類型和性能效率的優勢完美契合。它代表了我們對向Go編程社區引入用戶友好且高效的AI功能的解決方案。
Agency的特性
- Go編程理念契合: 與LangChainGo不同,Agency注重與Go的編程理念的一致性,使得開發者更容易上手。
- 簡潔而強大: 我們精心打磨了Agency的框架,確保其在保持簡潔易用的同時,不失強大的功能。
- 靜態類型與性能效率: 利用Go語言的靜態類型和出色的性能優勢,Agency在處理AI功能時更為高效。
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解決方案。