适用于 Node.js 的 Firebase Genkit 在 Google I/O 大会上发布之后,Firebase 和 Go 团队合作将 Genkit 引入 Go 社区。我们很高兴地宣布推出 Genkit for Go,这是一个开源框架,适用于使用 Go 来本地构建 AI 驱动型应用和云服务,还利用了 Go 语言有名的简洁性、可扩展性和安全性。
通过将 Go 的性能和并发优势与 Genkit 的库和工具相结合,开发者可以利用这两种技术的全部潜力创建生成式 AI 应用。一些潜在的用例包括:
Genkit for Go 目前已推出 Alpha 版,非常适用于实验和探索。我们鼓励您对 AI 驱动型项目进行原型设计,并与我们分享您的反馈。您的意见将直接塑造 Genkit for Go 的路线图,从而帮助我们推动 Go 开发者构建下一代可投入生成且可扩展的 AI 应用。
Genkit 是一个以开发者为先的框架,用于构建 AI 驱动型应用。我们的 Go 库以纯 Go 语言编写,采用 Go 语言的惯用语和规范,以便 Go 开发者能够立即熟悉并提高工作效率。Genkit 提供轻量级、可组合的抽象,可在不牺牲可定制性和控制的前提下简化复杂 AI 工作流的开发。
在构建生成式 AI 应用时,Genkit 可以通过以下几种方式提高您的工作效率:
func main() {
ctx := context.Background()
// 初始化 Google AI 插件。
if err := googleai.Init(ctx, nil); err != nil {
log.Fatal(err)
}
// 定义简单的流,提示 LLM 生成菜单建议。
// 流功能可与 Genkit 工具集成,并
// 通过多步骤工作流提供可观测性。
genkit.DefineFlow("menuSuggestionFlow", func(ctx context.Context, input string) (string, error) {
// 利用 Google AI 初始化 gemini-1.5-flash 模型。
m := googleai.Model("gemini-1.5-flash")
if m == nil {
return "", errors.New("menuSuggestionFlow: failed to find model")
}
// 构建请求并将其发送至模型 API (Google AI)。
resp, err := m.Generate(ctx,
ai.NewGenerateRequest(
&ai.GenerationCommonConfig{Temperature: 1},
ai.NewUserTextMessage(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input))),
nil)
if err != nil {
return "", err
}
// 处理来自模型 API 的响应。
text, err := resp.Text()
if err != nil {
return "", fmt.Errorf("menuSuggestionFlow: %v", err)
}
return text, nil
})
// 初始化 Genkit 流服务器。
if err := genkit.Init(ctx, nil); err != nil {
log.Fatal(err)
}
}
实现最佳的 AI 生成结果需要仔细考虑您的模型、配置、提示和输出形状。Genkit 提供的 Dotprompt 是一种简单的文件格式,可简化您的提示工程流程。
使用 Dotprompt,您可以在单个 .prompt
文件中定义丰富的提示模板、输入和输出架构、模型选择和模型配置选项。这让一切井然有序,并让您可以轻松地测试、部署提示和 Go 代码并进行版本调整。
---
model: vertexai/gemini-1.5-pro
config:
temperature: 0.9
input:
schema:
location: string
style?: string
name?: string
default:
location: a restaurant
---
You are the world's most welcoming AI assistant and are currently working at {{location}}.
Greet a guest{{#if name}} named {{name}}{{/if}}{{#if style}} in the style of {{style}}{{/if}}.
Genkit for Go 的核心是一个与提供商无关的轻量级框架。我们提供越来越多的插件集合,可与 Google 和第三方提供商的特定模型、矢量数据库和云服务无缝集成。
在此版本中,Genkit for Go 提供以下插件:
开放且可扩展的 Genkit 插件系统经过专门设计,适用于任何和所有模型、矢量数据库、评估程序、工具等。我们积极鼓励社区发布自己的插件,为 Genkit 的生态系统做出贡献。
我们即将在文档部分发布 Genkit for Go 插件开发指南,敬请关注!
构建 AI 驱动型应用面临独特的挑战,例如如何创建有效的提示、如何调试不可预测的输出、如何优化检索流程等。但我们相信,利用不仅限于典型 IDE 实用程序的专用工具,这些复杂的问题可迎刃而解。
Genkit 的 CLI 和基于浏览器的直观开发者界面提供了一个强大的工具包,可简化您的生成式 AI 开发。
使用这些工具,您可以:
如果您喜欢使用 VS Code 或 Project IDX,则可以在 IDE 的集成浏览器中打开 Genkit 开发者界面,并同步使用代码。
在您准备好部署时,Genkit 可帮助您监控生产环境中的 AI 应用,以确保应用按预期为用户提供服务。Genkit 的 Google Cloud 遥测插件可帮助您轻松地将日志、指标和轨迹从 AI 应用导出到 Google Cloud 的运维套件。
虽然我们提供开箱即用的 Google Cloud 集成,但我们通过广泛使用的 OpenTelemetry 标准实现了 Genkit 的仪器化,该标准可以与许多流行的可观测性平台集成。
Alpha 版的 Genkit for Go 现已推出,您可以开始使用它将 AI 工作流集成到您的应用中,并加入人数不断增长的 Go AI 开发者社区。
首先,请参阅 Genkit for Go 入门指南。
您也可以在 IDX 的预配置工作区中打开 Genkit 模板。
我们非常期待与您合作!
让我们一起利用 Go 来打造繁荣的 AI 开发生态系统。我们迫不及待地想看到您利用 Genkit 构建出精彩作品!