通往人工智能的 Go 之路

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 通往人工智能的 Go 之路

Agency

该库旨在为那些希望通过清晰、高效且符合 Go 语言惯例的方法来探索大型语言模型(LLMs)和其他生成式人工智能的开发人员而设计。

特点

  • 纯 Go 语言:快速、轻量级,静态类型,无需涉及 Python 或 JavaScript
  • 编写清晰的代码并遵循清晰的架构,将业务逻辑与具体实现分离
  • 通过实现简单接口轻松创建自定义操作
  • 将操作组合成流程,并通过拦截器观察每个步骤
  • OpenAI API 绑定(可用于任何兼容 OpenAI API 的 API:文本到文本(完成),文本到图像,文本到语音,语音到文本)

为什么需要 Agency?

Agency 的核心目标是赋予用户构建自主代理的能力。虽然适用于从聊天界面到复杂数据分析的各种生成式人工智能应用,但我们的库的最终目标是简化自主人工智能系统的创建过程。无论您是构建个体助手还是协调代理群集,Agency 提供了所需的工具和灵活性,以轻松高效地实现这些先进概念。

在生成式人工智能领域,基于 Go 语言的库并不常见。最著名的是 LangChainGo,它是 Python LangChain 的 Go 语言移植版。然而,将 Python 转换为 Go 可能会显得笨拙,并且可能与 Go 的惯用风格不太匹配。此外,即使在 Python 中,一些人也对 LangChain 的设计提出质疑。这种情况表明,需要一种符合 Go 语言特点的替代方案。

我们的目标是用以 Go 为中心的库来填补这一空白,强调清晰、简单的代码,并避免不必要的复杂性。Agency 的设计核心小巧而稳健,易于扩展,并完全适应 Go 语言在静态类型和性能方面的优势。它是我们对生成式人工智能中缺乏本地 Go 解决方案的回应。

示例

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)
 }
}

go-openai

该库为 OpenAI API 提供非官方的 Go 客户端。支持以下功能:

  • ChatGPT
  • GPT-3,GPT-4
  • DALL·E 2
  • Whisper

获取 OpenAI API 密钥的步骤:

  • 访问OpenAI网站,网址为 https://platform.openai.com/account/api-keys
  • 如果您没有账号,请点击"注册"创建一个账号。如果已有账号,请点击"登录"。
  • 登录后,进入API密钥管理页面。
  • 点击"创建新的密钥"。
  • 输入您的新密钥名称,然后点击"创建密钥"。
  • 新的API密钥将显示出来。请将此密钥用于与OpenAI API进行交互。

注意:您的API密钥是敏感信息,请不要与他人分享。

示例

package main
import (
 "context"
 "fmt"
 openai "github.com/sashabaranov/go-openai"
)
func main() {
 client := openai.NewClient("your token")
 resp, err := client.CreateChatCompletion(
  context.Background(),
  openai.ChatCompletionRequest{
   Model: openai.GPT3Dot5Turbo,
   Messages: []openai.ChatCompletionMessage{
    {
     Role:    openai.ChatMessageRoleUser,
     Content: "Hello!",
    },
   },
  },
 )
 if err != nil {
  fmt.Printf("ChatCompletion error: %v\n", err)
  return
 }
 fmt.Println(resp.Choices[0].Message.Content)
}

gin-api-mono

如果您目前在 Go 方面的经验不足,需要一个 简洁、轻量级的 API 框架,能够根据自己的需求灵活选择并使用所需的功能,那么您可以考虑使用这个框架。

快速入门

  1. 运行使用
  2. 配置路由
  3. 处理请求参数
  4. 操作数据库
  5. 编译成二进制文件

进阶

  1. 自定义编写中间件及使用
  2. 统一定义错误码并进行语言汉化
  3. 接口返回值规范的最佳实践方法
  4. 开发环境下实现代码的热更新部署
  5. 集成 aes 对称加密算法
  6. 集成 rsa 非对称加密算法
  7. 集成 snowflake 实现生成唯一 ID
  8. 集成 cors 实现允许前端跨域请求
  9. 集成 swag 实现自动生成接口文档
  10. 集成 pprof 实现应用程序性能分析
  11. 集成 jwt 实现身份认证及验证中间件
  12. 集成 prometheus 客户端实现注册和暴露指标
  13. 自定义调试方法,支持将调试日志收集到上下文日志中
  14. 集成 gorm 操作 MySQL 数据,支持将操作日志收集到上下文日志中
  15. 集成 redis/v8 操作 Redis 数据,支持将操作日志收集到上下文日志中
  16. 集成 resty/v2 请求 HTTP 接口,支持将请求/响应日志收集到上下文日志中
  17. 集成 mongo-driver 操作 MongoDB 数据,支持将操作日志收集到上下文日志中
  18. 强大的日志收集功能,根据「请求唯一ID」可串联请求日志、响应日志、调试日志、MySQL 操作日志、Redis 操作日志、Mongo 操作日志、三方 HTTP 请求响应日志等

学会后,你将达到了 Go 的中级水平。在这个过程中,你将会学习到框架的核心设计思路和封装思想,并获得宝贵的学习经验。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
RL向左?几何深度学习向右?通往第三代人工智能的理论之路如何走?
RL向左?几何深度学习向右?通往第三代人工智能的理论之路如何走?
419 0
RL向左?几何深度学习向右?通往第三代人工智能的理论之路如何走?
|
人工智能 监控 安全
政府部门通往人工智能的发展之路
如今,政府部门拥有前所未有的机会,可以利用人工智能(AI)大幅提升其部门的现代化水平。虽然基于人工智能技术的实验已经开始,但远远没有完全整合。
130 0
政府部门通往人工智能的发展之路
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能:从基础理论到实践应用
【8月更文挑战第39天】在本文中,我们将深入探讨人工智能(AI)的基本概念、发展历程以及其在现实世界中的应用。我们将首先介绍AI的定义和主要分类,然后回顾其发展历史,最后通过一个实际的代码示例来展示AI的应用。无论你是AI领域的初学者还是有一定基础的学习者,这篇文章都将为你提供有价值的信息和启示。
|
20天前
|
机器学习/深度学习 人工智能 搜索推荐
人工智能在医疗领域的应用
【8月更文挑战第26天】随着科技的进步,人工智能(AI)已经逐渐渗透到我们生活的各个方面,其中医疗领域是其最重要的应用领域之一。AI技术的应用不仅可以提高医疗服务的效率和质量,还可以帮助医生进行更准确的诊断和治疗。本文将探讨AI在医疗领域的应用,包括疾病预测、辅助诊断、个性化治疗方案等方面的内容。同时,也将分享一些实际的代码示例,以帮助读者更好地理解和掌握这些技术。
|
5天前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的奥秘与应用
本文深入浅出地探讨了人工智能领域中的核心技术——机器学习,揭示了其背后的原理和广泛的实际应用。通过浅显易懂的语言和生动的例子,本文旨在为非专业读者打开一扇了解并利用机器学习的大门,同时激发对这一前沿技术的兴趣和思考。
20 1
|
10天前
|
机器学习/深度学习 数据采集 人工智能
探索人工智能在文本情感分析中的应用
【9月更文挑战第4天】本文旨在通过一个简化的模型,介绍如何利用AI技术对文本进行情感分析。我们将从基础理论出发,逐步深入到实际操作,展示如何训练一个简单的情感分析模型。文章不仅涵盖了理论知识,还提供了代码示例,帮助读者更好地理解并实践所学知识。
|
16天前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的应用与挑战
【7月更文挑战第61天】 随着技术的进步,人工智能(AI)已逐渐渗透到各行各业,特别是在医疗领域。AI在提高诊断准确性、个性化治疗和疾病预防方面的潜力巨大。本文旨在探讨AI在医疗诊断中的应用,包括图像识别、模式分析和预测建模,并分析其面临的主要挑战,如数据隐私、算法透明度以及医疗专业人员的接受度。通过实例说明AI如何辅助医生进行更精确的决策,同时指出了目前技术的局限性和未来的发展方向。
|
16天前
|
机器学习/深度学习 人工智能 自动驾驶
探索人工智能的未来应用:从智能助手到自动驾驶
【8月更文挑战第30天】 在本文中,我们将深入探讨人工智能(AI)的未来应用,从智能助手到自动驾驶。我们将看到AI如何改变我们的生活,并讨论其潜在的影响和挑战。让我们一起探索这个令人兴奋的领域吧!
|
19天前
|
传感器 人工智能 自动驾驶
人工智能在现代生活中的应用与挑战
【8月更文挑战第27天】本文将探讨人工智能(AI)如何在各个领域中改变我们的生活,并讨论它所面临的挑战。我们将从AI的基础知识入手,逐步深入到其在医疗、交通和教育等领域的应用案例,最后讨论AI技术发展过程中的道德和隐私问题。文章旨在为读者提供一个全面而深入的视角,理解AI技术的潜力和风险。