机构:Go语言的AI方式
专为开发人员设计的库,旨在通过一种简洁、高效且符合Go语言习惯的方式,探索大型语言模型(LLM)和其他生成式AI的潜力。
欢迎加入机构! 🕵️♂️
💻 快速开始
安装包:
go get github.com/neurocult/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 := openai.
New(openai.Params{Key: os.Getenv("OPENAI_API_KEY")}).
TextToText(openai.TextToTextParams{Model: "gpt-3.5-turbo"}).
SetPrompt("你是一个乐于助人的助手。")
消息 := []agency.Message{}
读取器 := bufio.NewReader(os.Stdin)
上下文 := context.Background()
for {
fmt.Print("用户: ")
文本, err := 读取器.ReadString('\n')
if err != nil {
panic(err)
}
输入 := agency.UserMessage(文本)
回答, err := assistant.SetMessages(消息).Execute(上下文, 输入)
if err != nil {
panic(err)
}
fmt.Println("助手: ", 回答)
消息 = append(消息, 输入, 回答)
}
}
就是这么简单!
查看示例以了解更复杂的用例,包括RAGs和多模态操作。
🚀 特性
✨ 纯Go语言:快速、轻量、静态类型,无需处理Python或JavaScript
✨ 编写干净的代码并遵循干净的架构,将业务逻辑与具体实现分开
✨ 通过实现简单接口,轻松创建自定义操作
✨ 将操作组合成流程,并通过拦截器观察每个步骤
✨ OpenAI API绑定(可用于任何兼容openai的API:文本到文本(补全)、文本到图像、文本到语音、语音到文本)
🤔 为什么需要Agency?
Agency的核心目标是让用户能够构建自主代理。虽然非常适合各种生成式AI应用,从聊天界面到复杂的数据分析,我们库的最终目标是简化自主AI系统的创建。无论你是构建单个助手还是协调代理群,Agency都提供了实现这些先进概念所需的工具和灵活性,轻松高效地实现这些目标。
在生成式AI领域,基于Go语言的库非常少见。最著名的例子是LangChainGo,这是Python LangChain的Go语言移植版。然而,将Python转换为Go可能会显得笨拙,不太符合Go的惯用风格。而且,有些人甚至质疑LangChain在Python中的设计。这种情况凸显了一个符合Go语言习惯的替代方案的明确需求。
我们的目标是通过一个以Go为中心的库来填补这一空白,该库强调简洁、易懂的代码,并避免不必要的复杂性。Agency设计了一个小而强大的核心,易于扩展,完美契合Go在静态类型和性能方面的优势。这是我们对生成式AI领域缺乏原生Go语言解决方案的回应。
教程
🛣 路线图
在接下来的版本中:
- 支持外部函数调用
- 元数据(使用的令牌、音频时长等)
- 更多的提供者适配器,不仅仅是openai
- 图像到文本操作
- 用于自主代理的强大API
- 标记和JSON输出解析器