隆重推出 Genkit for Go:利用 Go 构建可扩展的 AI 驱动型应用

七月 17, 2024
Chris Gill Product Manager
Cameron Balahan Group Product Manager

适用于 Node.js 的 Firebase Genkit 在 Google I/O 大会上发布之后,Firebase 和 Go 团队合作将 Genkit 引入 Go 社区。我们很高兴地宣布推出 Genkit for Go,这是一个开源框架,适用于使用 Go 来本地构建 AI 驱动型应用和云服务,还利用了 Go 语言有名的简洁性、可扩展性和安全性。

通过将 Go 的性能和并发优势与 Genkit 的库和工具相结合,开发者可以利用这两种技术的全部潜力创建生成式 AI 应用。一些潜在的用例包括:

  • 智能助手,可以理解复杂的请求,并自动执行旅行预订或创建行程等任务,所有这些功能均可根据用户的偏好量身定制。

  • 客服代表,以贵公司的知识库和政策为基础,使用检索增强生成 (RAG) 进行快速、准确、个性化的回复。

  • 强大的数据转换工具,可将自然语言等非结构化数据转换为结构化格式(SQL 查询、表格),以进行更深入的分析并获得更深入的见解。

Genkit for Go 目前已推出 Alpha 版,非常适用于实验和探索。我们鼓励您对 AI 驱动型项目进行原型设计,并与我们分享您的反馈。您的意见将直接塑造 Genkit for Go 的路线图,从而帮助我们推动 Go 开发者构建下一代可投入生成且可扩展的 AI 应用。


用于 AI 生成、检索和工作流的直观库

Genkit 是一个以开发者为先的框架,用于构建 AI 驱动型应用。我们的 Go 库以纯 Go 语言编写,采用 Go 语言的惯用语和规范,以便 Go 开发者能够立即熟悉并提高工作效率。Genkit 提供轻量级、可组合的抽象,可在不牺牲可定制性和控制的前提下简化复杂 AI 工作流的开发。

在构建生成式 AI 应用时,Genkit 可以通过以下几种方式提高您的工作效率:

  • 统一的生成 API:使用一致的单一接口,从各种模型(Gemini、Gemma 或第三方)生成内容。轻松配置模型并利用强大的功能,如函数调用和结构化输出。

  • 原生矢量数据库支持:利用可跨矢量数据库提供程序使用的简单索引和检索 API,将检索增强生成 (RAG) 集成到应用中,为您的 AI 模型赋予上下文感知能力。

  • 适用于 AI 工作流程的“流”:使用 Genkit“流”整理多步骤 AI 工作流。流功能可为调试和监控、与 Genkit 工具集成以及以最少的样板文件轻松部署为 HTTP 端点提供内置可观测性。
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}}.

集成 Google 和第三方 AI 服务

Genkit for Go 的核心是一个与提供商无关的轻量级框架。我们提供越来越多的插件集合,可与 Google 和第三方提供商的特定模型、矢量数据库和云服务无缝集成。

在此版本中,Genkit for Go 提供以下插件:

  • Google Cloud Vertex AI 插件:从 Google Cloud 可投入生产的 AI 平台 Vertex AI 访问 Gemini 和嵌入式模型。对 Google 图像生成模型的支持、评估程序和来自 Model Garden 的第三方模型即将推出。

  • Ollama 插件:通过 Ollama 在本地访问和运行 Gemma、Llama 和 Mistral 等开源模型。

  • Pinecone 插件:与 Pinecone 的矢量数据库集成,以实现高效的索引和检索操作。

  • Google Cloud 遥测插件:将日志、指标和跟踪记录从 AI 应用导出到 Cloud Logging、Cloud Tracing 和 Firestore,以进行全面监控。

开放且可扩展的 Genkit 插件系统经过专门设计,适用于任何和所有模型、矢量数据库、评估程序、工具等。我们积极鼓励社区发布自己的插件,为 Genkit 的生态系统做出贡献。

我们即将在文档部分发布 Genkit for Go 插件开发指南,敬请关注!


集成的开发者工具

构建 AI 驱动型应用面临独特的挑战,例如如何创建有效的提示、如何调试不可预测的输出、如何优化检索流程等。但我们相信,利用不仅限于典型 IDE 实用程序的专用工具,这些复杂的问题可迎刃而解。

Genkit 的 CLI 和基于浏览器的直观开发者界面提供了一个强大的工具包,可简化您的生成式 AI 开发。

使用这些工具,您可以:

  • 快速初始化新的 Genkit 项目,或将 Genkit 集成到现有项目中。

  • 在 Genkit 组件的专用 Playground 中,交互式地运行和迭代您的 AI 工作流、提示、检索查询等。

  • 查看与您运行的工作流和组件相关的详细跟踪记录和元数据,实现全面的可观测性和高效调试。

  • 根据测试集评估您的 AI 工作流,并查看评分指标和相关跟踪链接。

如果您喜欢使用 VS Code 或 Project IDX,则可以在 IDE 的集成浏览器中打开 Genkit 开发者界面,并同步使用代码。


生产环境可观测性

在您准备好部署时,Genkit 可帮助您监控生产环境中的 AI 应用,以确保应用按预期为用户提供服务。Genkit 的 Google Cloud 遥测插件可帮助您轻松地将日志、指标和轨迹从 AI 应用导出到 Google Cloud 的运维套件。

image1

虽然我们提供开箱即用的 Google Cloud 集成,但我们通过广泛使用的 OpenTelemetry 标准实现了 Genkit 的仪器化,该标准可以与许多流行的可观测性平台集成。


了解更多

Alpha 版的 Genkit for Go 现已推出,您可以开始使用它将 AI 工作流集成到您的应用中,并加入人数不断增长的 Go AI 开发者社区。

首先,请参阅 Genkit for Go 入门指南

您也可以在 IDX 的预配置工作区中打开 Genkit 模板

我们非常期待与您合作!

  • 在论坛的 Show and Tell 部分分享您利用 Genkit 构建的精彩作品。

让我们一起利用 Go 来打造繁荣的 AI 开发生态系统。我们迫不及待地想看到您利用 Genkit 构建出精彩作品!