用dify实现简单的Agent应用(AI信息检索)

这篇文章里,我们来聊聊如何使用字节最新的豆包大模型,在 Dify 上来快速完成一个具备理解需求、自主规划、自主选择工具使用的简单智能体(Agent)。

准备工作
完整准备过程分为:准备 Docker 环境、启动 Dify 程序、启动 Meilisearch 搜索引擎并准备搜索引擎要检索的数据,以及准备模型服务。

使用 Docker 快速启动 Dify 项目

你可以参考下面的内容来完成 Dify 项目的一键启动:

《使用 Dify 和 AWS Bedrock 玩转 Anthropic Claude 3》中的“快速完成 Dify 的配置和启动”。
《使用 Dify 和 Moonshot API 构建你的 AI 工作流(一):让不 AI 的应用 AI 化》中的 “优化后的 Dify Docker 配置”。

唯一需要注意的是,文章内容提到的 dify docker 配置中版本号,可以更新为 0.6.8 啦:

langgenius/dify-web:0.6.8
langgenius/dify-api:0.6.8

使用 Docker 一键启动 Meilisearch 搜索引擎

Meilisearch 相关的内容,包括开箱即用的配置、一键拉起的 Docker 搜索引擎服务,步骤简单,但是篇幅较多,就不展开啦,我们完整参考上一篇文章即可。

步骤一:在 Dify 中配置豆包大模型

目前豆包 MaaS 平台还不是很完善,建议跟着下面的操作走一遍,“避免迷路”。

想要使用豆包模型作为 Agent 的驱动模型,我们首先要创建豆包模型的服务实例,并在 Dify 中完成部署。

打开火山引擎的密钥管理页面,创建一个用于调用账号云资源的“密钥对”,我们稍后使用。

在这里插入图片描述
现在,我们可以打开 Dify 的界面,开始配置 Dify 中的模型后端啦。点击 Dify 界面右上角的用户头像,在下拉菜单中选择“设置”,在弹出的“设置”窗口左侧侧边栏“模型供应商”中选择“火山引擎”,点击“添加模型”按钮。

在这里插入图片描述
在弹出的模型设置对话框中,分别填入我们上文中折腾好的“密钥对”、“模型的接入点 ID”(其他选择默认值即可):
在这里插入图片描述
步骤二:创建 Dify AI Agent 应用

在首页点击创建空白应用,然后在弹出窗口中选择“Agent”类型的应用,根据你的喜好填写应用名称和描述:
在这里插入图片描述
在右侧模型列表中选择我们要使用的模型,比如刚刚新添加的豆包大模型:
在这里插入图片描述
步骤三:实现 Agent 工具 API

在上一篇文章中,我们一步一步的完成了如何和既有的系统接口打通的,能够从本地部署的搜索引擎中直接获取数据。这一部分的代码,我们就不再展开啦,只聊和这篇相关的内容。

func main() {
	router := gin.Default()

	router.GET("/new-api-for-dify", func(c *gin.Context) {
		s := strings.TrimSpace(c.Query("keyword"))
		if s == "" {
			c.JSON(http.StatusBadRequest, ExtensionPointResponse{Result: "empty keyword"})
			return
		}

		movies, err := GetSearchResult(s, 3, "movies", 0, "soulteary")
		if err != nil {
			c.JSON(http.StatusBadRequest, ExtensionPointResponse{Result: err.Error()})
			return
		}

		var result string
		for _, movie := range movies.Results {
			for _, hit := range movie.Hits {
				result += fmt.Sprintf("- 标题:%s\n", hit.Title)
				result += fmt.Sprintf("- 简介:%s\n\n", hit.Overview)
			}
		}

		c.JSON(http.StatusOK, ExtensionPointResponse{Result: result})
	})

	router.Run(":8084")
}

上面的代码中,我们定义了一个跑在 8084 端口的服务,其中主要提供功能支持的接口地址是 /new-api-for-dify,它接收来自 Dify Agent 发送的 GET 请求中的 keyword 参数,并将参数传递给上篇文章中“步骤五:完成 AI 接口,让程序 AI 起来”章节中,我们已经实现好的“电影数据检索”函数。

当我们完成上面的程序后,执行 go run main.go,就能得到一个运行在 8084 的新接口服务啦,接下来会使用。

你可以根据你的实际需求,来封装更多类似的信息检索,或者“动作 API”服务,让 Agent 来调用。

当我们完成了上面的操作后,就可以来完善上文中创建的 Dify 的 AI Agent 应用啦。从 Dify 顶部菜单选择“工具”,在工具页面点击左侧的“创建自定义工具”。

步骤四:完善 Dify AI Agent 应用

我们再次打开第二步中完成的 AI Agent 应用,开始完善它的具体实现,先设置一个合适的 Prompt。

验证效果

和上一篇文章一样,我们可以根据自己的需求,搜索具体的电影名称,或者电影类型、概况中的关键字,电影的关键词等等,我这里搜索了“狮子王”,然后要求 Agent 将原本搜索出来的英文接口结果翻译为中文,发送给我设置好的飞书群里。

当然,我是懒人,所以上面的内容,我只是写了一句话:“搜索 Lion King,将电影为什么值得看翻译为中文,结果发飞书。”

随手搜索一部电影,或者关键词

在这里插入图片描述
在这里插入图片描述

上一篇:Build a Large Language Model (From Scratch)第五章(gpt-4o翻译版)


下一篇:微服务粒度难题:找到合适的微服务大小