脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Golang - 一篇学会AI与Go语言无缝对接

一篇学会AI与Go语言无缝对接

2023-12-05 13:59爱发白日梦的后端 Golang

在这个AI盛行的时代,我们深知Go语言开发者对于高效、简单而强大的AI工具的需求。Agency的诞生旨在填补Go语言领域的空白,为开发者提供一种更直观、更贴近Go编程理念的AI解决方案。

在当今应用开发领域,类似OpenAI API等生成式AI技术的蓬勃发展正在彻底改变着应用开发的格局。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解决方案。

原文地址:https://mp.weixin.qq.com/s/GKYPMyOGfZHq__BmC-ejJQ

  • AI
  • Go
  • 延伸 · 阅读

    精彩推荐
    • GolangGo编译32位GNU静态链接库的方法

      Go编译32位GNU静态链接库的方法

      Go链接库系统的难用可谓是人尽皆知,不同Go版本编译出来的不兼容,而且只支持GNU的,不能编译出Windows上的dll和lib。这篇文章给大家介绍Go编译32位GNU静态...

      FanZheng''''s Debug Blog4132020-07-06
    • Golang关于Golang中range指针数据的坑详解

      关于Golang中range指针数据的坑详解

      这篇文章主要给大家介绍了关于Golang中range指针数据的坑的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值...

      脚本之家3302020-05-22
    • GolangGo语言实现登录验证代码案例

      Go语言实现登录验证代码案例

      这篇文章主要介绍了Go语言实现登录验证代码案例,代码和图文讲解的很清晰,有感兴趣的可以学习下...

      cui_yonghua8332021-04-01
    • Golanggolang类型转换组件Cast的使用详解

      golang类型转换组件Cast的使用详解

      这篇文章主要介绍了golang类型转换组件Cast的使用详解,帮助大家更好的理解和学习使用golang,感兴趣的朋友可以了解下...

      三十三重天8802021-03-30
    • GolangGolang小数操作指南之判断小数点位数与四舍五入

      Golang小数操作指南之判断小数点位数与四舍五入

      这篇文章主要给大家介绍了关于Golang小数操作指南之判断小数点位数与四舍五入的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有...

      头秃猫轻王5922022-09-05
    • Golanggolang中defer的关键特性示例详解

      golang中defer的关键特性示例详解

      defer是golang语言中的关键字,用于资源的释放,会在函数返回之前进行调用。下面这篇文章主要给大家介绍了关于golang中defer的关键特性,文中通过示例代码...

      三月沙5022020-05-08
    • GolangGoFrame框架gcache的缓存控制淘汰策略实践示例

      GoFrame框架gcache的缓存控制淘汰策略实践示例

      这篇文章主要为大家介绍了GoFrame框架gcache的缓存控制淘汰策略的实践示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职...

      王中阳Go4962022-10-18
    • Golang解决Goland中利用HTTPClient发送请求超时返回EOF错误DEBUG

      解决Goland中利用HTTPClient发送请求超时返回EOF错误DEBUG

      这篇文章主要介绍了解决Goland中利用HTTPClient发送请求超时返回EOF错误DEBUG,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

      PrnyNing11622021-02-25