前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于知识库、工作流的智能体实践

基于知识库、工作流的智能体实践

原创
作者头像
用户6962301
修改2024-10-10 15:42:25
480
修改2024-10-10 15:42:25

知识库是一系列文档的集合。一个知识库下可以包含多个文档。注意,目前腾讯元器的智能体调用链路逻辑上,如果智能体只关联了知识库,没有关联插件、工作流的情况下,智能体每次问答都一定会参考知识库,不会经过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下面代码会使用到。

代码示例:

代码语言:txt
复制
#注意先安装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

基于Python的Flask框架封装为自有API,返回JSON格式信息:{"code": "50000", "msg": resp}。文件名:agent_Flask_api.py

代码语言:txt
复制
#注意先安装sdk,pip install tencentcloud-sdk-python -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
from flask import Flask, request, jsonify  
import requests
import json

  
app = Flask(__name__)  

# 定义 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 OVLIkRPhj&**********lC2dDlHl6g'
}

def chat_agent(query):

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

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

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

    # 打印响应内容
    return response.text
  
@app.route('/tencent_agent', methods=['POST'])  
def tencent_agent():  
    
    query = request.args.get('user_input')
    resp = chat_agent(query)
    if not resp:  
        return jsonify({"code": "50000", "msg": resp}), 200  
    else:  
        return jsonify({"code": "00000", "msg": resp}), 200  
  
if __name__ == '__main__':  
    app.run(host='0.0.0.0',debug=True)

使用如下命令python agent_Flask_api.py启动服务,成功启动信息如下:

通过Postman调用:

http://localhost:5000/tencent_agent?user_input=蝴蝶兰的适宜湿度

返回信息:

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先创建知识库
  • 其次,创建工作流并使用上面的知识库
  • 最后我们创建智能体
  • API方式调用智能体
  • 封装为自定义API
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档