介绍 Agency: 使AI与Go语言无缝对接

TimLiuDream · 2023-12-05 15:21:00 · 830 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2023-12-05 15:21:00 的主题,其中的信息可能已经有所发展或是发生改变。

关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力!

在当今应用开发领域,类似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在实战中的应用

    ```text 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解决方案。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

830 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传