基于腾讯元器构建基于知识库、工作流的智能体

原文:https://cloud.tencent.com/developer/article/2456502
知识库是一系列文档的集合。一个知识库下可以包含多个文档。注意,目前腾讯元器的智能体调用链路逻辑上,如果智能体只关联了知识库,没有关联插件、工作流的情况下,智能体每次问答都一定会参考知识库,不会经过function call做意图判断。

工作流是一种“流程图”式的低代码编辑工具,可以用来做一个“高级版”插件。在工作流里,可以任意编排插件、知识库、大模型节点的工作顺序和调用传参,从而精确控制智能体中部分任务的运行逻辑。大模型在接收到用户问题时,如果判断该问题需要调用工作流,则会从用户问题里提取关键信息,作为工作流的入参启动工作流。之后根据工作流运行后返回的参数,辅助回答用户的问题。

本文以蝴蝶兰饲养助手为例,上传饲养知识word文档到知识库,创建自定义的工作流,最后使用智能体调用工作流。附API方式调用智能体示例代码。


首先创建知识库

进入知识库页面https://yuanqi.tencent.com/my-creation/knowledge,创建并上传word文档到知识库,内容如下:

蝴蝶兰,作为高雅而珍贵的室内观赏花卉,其栽培过程对环境条件有着严格的要求。为了确保蝴蝶兰能够茁壮成长并绽放出绚烂的花朵,我们需要细致入微地调控其生长环境,特别是温度、湿度、光照以及二氧化碳浓度这四个关键因素。

首先,温度是蝴蝶兰生长的重要基石。最适宜的生长温度范围通常在20-28摄氏度之间,而最理想的温度则是23-25摄氏度。过高或过低的温度都会影响蝴蝶兰的正常生理活动,甚至导致生长停滞或死亡。因此,在栽培过程中,我们需要密切关注室内温度的变化,并采取相应的加热或降温措施。

其次,湿度是蝴蝶兰生长不可忽视的一环。这种花卉喜欢湿润的环境,相对湿度应保持在60%-80%之间。在干燥的季节或地区,我们需要通过喷雾、加湿器等方式来增加空气湿度,以满足蝴蝶兰的生长需求。

再者,光照对蝴蝶兰的生长同样至关重要。它们需要充足的光照来进行光合作用,但同时又不能直接暴露在强烈的阳光下。因此,我们需要将蝴蝶兰放置在光线明亮但又不直射的位置,如靠近窗户的散光处。在冬季或光照不足的情况下,可以适当增加光照时长或使用植物灯来补充光照。蝴蝶兰虽然需要光照以进行光合作用,但它们对强光却相当敏感。强光的标准可以大致定义为超过蝴蝶兰叶片所能承受的最大光照强度,这通常会导致叶片表面温度升高、水分蒸发过快,进而引发叶片灼伤、枯萎等问题。具体来说,蝴蝶兰所需的光照强度应在25000至40000勒克斯之间。在自然光条件下,这相当于早晨或傍晚柔和的阳光,或者是透过窗帘等遮蔽物的散射光。在夏季或阳光强烈的地区,应避免将蝴蝶兰直接暴露在中午的直射阳光下,可通过使用遮阳网、调整摆放位置或设置室内遮光设施来降低光照强度。

最后,二氧化碳浓度虽然不如前三者直观,但也是影响蝴蝶兰生长的一个重要因素。适当的通风换气有助于保持室内空气的清新和二氧化碳浓度的稳定。在密闭的室内环境中,二氧化碳浓度可能会逐渐升高,从而影响蝴蝶兰的光合作用和呼吸作用。因此,我们需要定期开窗通风,保持室内空气的流通和新鲜。二氧化碳是植物进行光合作用的重要原料之一,对于蝴蝶兰来说也不例外。然而,与许多其他植物相比,蝴蝶兰对二氧化碳浓度的要求并不特别高。在一般情况下,空气中的二氧化碳浓度(约为400ppm)已经足够支持蝴蝶兰的正常生长。但在温室或室内栽培环境中,为了促进蝴蝶兰的生长和开花,可以适当提高二氧化碳浓度。据研究和实践经验,蝴蝶兰在二氧化碳浓度为600至800ppm的环境下生长更佳。这可以通过定期通风换气、使用二氧化碳发生器或增加室内绿色植物数量等方式来实现。但需要注意的是,过高的二氧化碳浓度也可能对蝴蝶兰产生不利影响,因此应根据实际情况进行调整。

综上所述,饲养蝴蝶兰需要我们在温度、湿度、光照和二氧化碳浓度等方面做出全面的考虑和精心的调控。只有这样,我们才能为蝴蝶兰提供一个适宜的生长环境,让它们健康茁壮地成长并绽放出最美丽的花朵。

其次,创建工作流并使用上面的知识库

工作流概览:

工作流详解:

先接收用户问题,然后经过大模型节点判断。大模型的提示词:

判断用户问题{{STORY }}是否询问蝴蝶兰相关问题,如果是返回“是”,否则返回“否”。

示例:

如用户问题是:“蝴蝶兰适宜温度”,返回“是”。

如用户问题是:“今天北京温度?”,返回“否”。

接下来使用分支节点判断大模型返回“是”还是“否”。

如果返回“是”,则调用知识库节点,注意知识库选择刚才创建的“温室养花”。

最后在结束节点进行输出。

接下来调试工作流,调试通过后,可以发布该工作流。

发布需要审核,请等待几分钟,发布成功显示“已发布”。

最后我们创建智能体

智能体的设置如下:

注意:我们在工作流区域选择了自定义工作流“花卉饲养”。

测试通过后,点击右上角的“发布”按钮来发布智能体。

API方式调用智能体

参考如下路径学习如何调用API:

注意该页面的智能体id、token下面代码会使用到。

代码示例:

#注意先安装sdk,pip install tencentcloud-sdk-python -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

import requests
import json

# 定义 API 的 URL
url = 'https://open.hunyuan.tencent.com/openapi/v1/agent/chat/completions'

# 定义请求头
# Authorization的值在“我的智能体”->已发布的智能体上点击“...”按钮,点击“调用API”,可以找到您的API调用token
headers = {
    'X-Source': 'openapi',
    'Content-Type': 'application/json',
    'Authorization': 'Bearer OVLIkRPhjTM*************lC2dDlHl6g'
}

# 定义请求体
# 智能体id即assistant_id的值在“我的智能体”->已发布的智能体上点击“...”按钮,点击“调用API”,可以找到您的assistant_id
    "assistant_id": "av3pwWStovQ3",
    "user_id": "username",
    "stream": False,
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "蝴蝶兰的适宜温度?"
                }
            ]
        }
    ]
}

# 将请求体转换为 JSON 格式的字符串
json_data = json.dumps(data)

# 发送 POST 请求
response = requests.post(url, headers=headers, json=data)  # 使用 json 参数自动设置正确的 Content-Type

# 打印响应内容
print(response.text)

至此我们完成了知识库、工作流、智能体的创建,并通过API的方式调用了智能体应用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 农村百事:圆白菜如果不能马上吃完,最好先切成两半,用菜刀将其内部挖掉,然后塞入厨房专用纸,最后再将整个圆白菜用保鲜...
    忆叶舟阅读 925评论 0 0
  • 相比养宠物,我更喜欢养花。刘先生曾经问我为什么喜欢养花,我一时语塞,虽然我养了很多花,但从来没有认真想过原因,可能...
    一缕雨露阅读 408评论 6 26
  • 小朋友们大家好,我是昆仑班的雷子桐,今天由我来为大家演讲,植物的小秘密:兰科。 首先问大家一个问题,你们知道花中的...
    雷子桐阅读 94评论 0 0
  • 《蝴蝶兰》 蝴蝶兰,是兰科蝴蝶兰属多年生草本植物,茎短,常被叶...
    悲红阅读 45评论 0 1
  • 蝴蝶兰是大家最喜爱的年宵花之一,不过在家养过程中普遍存在的掉花苞,甚至凋亡的现象,让许多人困扰,甚至给它冠上...
    慕花无忧阅读 1,478评论 0 3