项目介绍:Agency
项目概述
Agency 是一个专为开发人员设计的库,旨在通过一种简洁、高效和符合 Go 语言惯用法的方法,探索大型语言模型(LLMs)和其他生成式 AI 的潜力。它提供了一种纯粹的 Go 体验,使开发人员能够摆脱 Python 或 JavaScript 的困扰,建立干净和可扩展的代码架构。
快速开始
要开始使用 Agency,开发人员首先需要安装这个包:
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("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)
answer, err := assistant.SetMessages(messages).Execute(ctx, input)
if err != nil {
panic(err)
}
fmt.Println("Assistant: ", answer)
messages = append(messages, input, answer)
}
}
更多复杂的用例,包括 RAGs 和多模态操作,可以在示例中找到。
功能特色
- 纯 Go:快速轻量,静态类型,不需要处理 Python 或 JavaScript。
- 干净代码:通过将业务逻辑与具体实现分离,遵循干净架构原则。
- 自定义操作:通过实现简单接口轻松创建自定义操作。
- 操作组合:将多个操作组合成过程,并可以通过拦截器观察每一步。
- OpenAI API 绑定:支持任何 OpenAI 兼容 API,包括文本到文本、文本到图像、文本到语音、语音到文本的转换。
为什么选择 Agency?
Agency 的核心目标是赋能用户构建自主代理,它适用于各种生成式 AI 应用程序,从聊天界面到复杂的数据分析。Agency 致力于简化构建自主 AI 系统的过程,不论是创建个人助手还是协调代理群。
生成式 AI 领域中的 Go 库相对稀少,而 Agency 正填补了 Python 向 Go 转换可能出现的不合适,提供一种更接近 Go 语言风格的替代方案。Agency 强调简洁和可扩展性,充分利用 Go 在静态类型和性能上的优势,成为生成式 AI 领域的强大工具。
未来计划
在后续版本中,项目计划加入以下功能:
- 支持外部函数调用
- 支持元数据(使用的令牌、音频时长等)
- 更多提供者适配器,而不仅仅是支持 OpenAI
- 图像到文本的操作
- 强大的自主代理 API
- 支持标记和 JSON 输出解析
Agency 正在不断发展,以满足开发人员和生成式 AI 领域日益增长的需求。