第二章:使用#系统角色#创建对话agent、并保持生成内容的一致性
使用对话Agent来生产内容,核心的痛点是如何确保多次生成内容的一致性。
智体OS采用便捷的#系统角色#语言指令,在对话初始化过程中便捷创建【对话agent】,可以轻松实现更强大且复杂的单任务和多任务AI助手:例如工作流agent。
带有#系统角色#语言指令的对话agent,可以设定系统角色,从而初步实现内容生成的一致性,更高级的用法:还可以使用JSON格式来设定一些内容的参数,例如网页生成的配色表、游戏生成的规则规范、图片生成的特征描述关键词等。这样就能精确的控制生成的内容的一致性了。
2.1 使用#系统角色#定义对话agent
最简单的做法是使用#系统角色#来定义一个对话agent的system role(系统角色)。这样输出的内容就不会偏离用户的需求。
举例:AI翻译助手
- 设定#系统角色#的对话agent
#系统角色#
你是一个AI翻译助理,将所有的用户输入翻译成英文。
- 进入智体聊IB,输入:新会话
- 输入前述的markdown文档内容
- 输入要翻译的内容
提示语:智体OS是领先的分布式智体网络平台。
智体IB:The ZhiTi OS is a leading distributed intelligent agent network platform.
用户案例:案例中心的链接地址
2.2 使用JSON格式来描述特征,限定生成的内容符合一致性要求
举例:通过设定网页的配色表JSON,生成智体OS官网
- 编辑markdown格式内容
#系统角色#
#你是一个强大的网页生成器,可利用html代码生成各类网页。
##配色表
你可以利用用户提供的网页配色表来生成特定的网页。
例子:
{
"配色方案": {
"背景色": "#F0F8FF",
"品牌色": {
"深蓝": "#0052FF",
"浅蓝": "#87CEEB"
},
"文字色": {
"深灰色": "#333333",
"黑色": "#000000"
},
"按钮色": "#0052FF",
"辅助色": {
"白色": "#FFFFFF",
"浅灰色": "#CCCCCC"
}
},
"配色特点": [
"冷色调为主,突出科技感和现代感",
"品牌色深蓝色贯穿整个网站,提升品牌识别度",
"对比度适中,保证可读性的同时兼顾美观",
"渐变背景增加视觉层次感,提升页面丰富度"
]
}
开始生成网页代码,html代码块输出。
- 复制到【智体IB】聊天框,发送出去(注意是新会话的第1行对话内容)
- 这里便可输入生成网页指令
提示词:帮我生成一个名称为dtns.os智体OS的官网html代码
- 经过"思考中",等待几秒到半分钟之后,智体IB返回html代码块内容
用户案例:案例中心的链接地址
第三章:使用poplang智体编程语言对接mcp-server、引入agent-tools
除了控制内容的一致性,可以使用#系统角色#语言指令,以及使用JSON或关键词描述生成事物的特征之外。
我们还可以使用智体OS内置的一句话语法的智体编程语言:poplang来实现对dtns-api的访问,从而使用节点服务器中提供的mcp-server,实现更强大的多智体协同。让复杂的工作流、任务流变得简单可靠。
这里有一个核心的痛点:传统软件的api极其难用,故MCP或dtns协议,通过使用自然语言描述,可以让不懂软件api的普通用户也能轻松使用各种agent-tools工具箱。让LLM大模型拥有了手和脚、甚至是翅膀、飞机、火箭。
3.1 《嘴炮邮件》实现一句话发"情书"邮件
- 定义:一句话发邮件agent
使用#系统指令#和poplang.agent智体代码块,实现邮件发送的agent-tools集成。
#系统角色#
#你是一个名为dtns.rtmailer的邮箱操作agent
功能列表
#1 发送邮件
调用参数:{"to":"xxx@mail.com","cc":"抄送的邮箱,如无则不填写","subject":"这里邮件的标题","html":"这里邮件的内容",attachments:[]}
参数说明:attachments可参考JSON:[{"filename": "附件文件名",content: "附件内容"}],支持1个到多个文件。
调用api工具:mailer_send
返回的JSON格式的一个例子:{"ret":true,"msg":"success"}
生成的参考的poplang代码如下:
poplang
设置api工具调用的参数params(注意**后面的内容为JSON字符串,不能换行、可以使用\n代替换行)
set params **{"to":"xxx@mail.com","subject":"这里邮件的标题","html":"这里邮件的内容"} mailer_send
以下是#智能体#
poplang.agent
本智能体agent由poplang代码编程,功能为是邮件操作agent提供api工具
发送邮件
pop.func.define mailersend object.get params.attachments attachments pop.ifelse attachments processattachments doNothing /rtmailer/send params = call_result $ret pop.func.end
pop.func.define process_attachments $.JSON.stringify attachments = attachments $ret object.set params.attachments attachments pop.func.end
定义智能体的prompt
pop.func.define mailer_prompt set prompt **dtns.rtmailer邮件操作agent支持操作LLM大语言模型通过对话发送邮件。 pop.func.end
定义智能体的结果result-prompt函数------将每次api-tool调用完成之后,调用本result函数,以便为LLM提供提示语。
pop.func.define mailerresult object.get callresult.ret flag set tips **邮件发送成功 set failed **邮件发送失败 ?= flag tips failed result pop.func.end
agent全局变量,方便得到调用入口和结果prompt等。
set agent_name dtns.rtmailer
当拿到api-tools的调用结果后,使用这个来拼接结果,返回给llm查看并解析结果。
set agentcallback mailerresult
声明描述(方便在后端使用?)
set agentpromt mailerprompt
以下开始根据用户指令进行邮件的操作,返回poplang代码块(代码块前后均不添加代码说明),需提供参数设置、调用相应的api工具。
- 在智体IB中的新会话后,输入上述内容
- 发送邮件
提示词:发一封情书给xlee@qq.com
智体IB:'返回了一段poplang代码'
我:运行
我:发送邮件成功
智体IB:看来已经发送邮件成功
- 进入邮箱查看邮件发送情况
可见邮件发送成功。
3.2 《嘴炮地图》实现一句话查高德导航
通过集成高德导航的mcp-server,我们拥有了《嘴炮地图》的全新AI应用。
- 编写《嘴炮地图》的对话agent
部分markdown代码:
#系统角色#
#你是一个非常有用的地图工具agent,负责将用户的地图请求转为地图工具的调用代码、返回poplang代码块。
#地图工具清单
##tool_name:maps_regeocode
工具描述:将一个高德经纬度坐标转换为行政区划地址信息
参数描述:{"type":"object","properties":{"location":{"type":"string","description":"经纬度"}},"required":["location"]}
- 使用#系统角色#创建对话agent
- 输入我的位置指令、导航到目的地指令
使用:运行来执行poplang代码块,从而执行agent-tools,返回JSON数据。供LLM大模型使用。
- 补充:使用驾车导航,完成导航过程
用户案例:案例中心的链接地址
第四章:poplang分布式智体编程
写对话agent或任务agent,除了使用dtns-api和mcp-server等agent-tools之外。智体OS提供了dtns协议,可以访问其它的智体节点服务。通过dtns协议构建的dtns.network,允许智体节点服务器之间互相访问、使用对方的专业agent能力。
dtns协议对比http协议的优势在于,它是分布式智体通讯协议。也就是实现了e2ee端到端加密通讯。从而实现了局域网到局域网的通讯。这在边缘计算、个人用户场景会变得非常有用。因为用户无须搭建http服务器站点,即可实现将自己的智体节点服务器提供给其他智体节点访问。从而实现基于dtns协议和dtns-api的超级分布式智体agent网络。
4.1 什么是poplang
poplang是分布式智体编程。英文单词是:opcode programming(基于操作码的编程)。
4.2 如何编写poplang代码
举例:
set tips **hello world
= result tips
4.3 poplang的语法规则
语法:opcode param1 param2 param3 {...}
4.4 基于LLM的poplang中文编译器
(即定义了poplang的语法的中文描述文档)
详见:poplang的markdown文件网址
4.5 poplang能做什么
- #系统角色#定义的对话agent中,可使用poplang.agent代码块来封装来自dtns协议的api(dtns-api)的mcp-server或者系统组件功能
- xverse3d的智体3D轻应用
- dtns.2d.creator中的2D轻应用
- 智体IB对话中,使用分号;前缀,加dtns-api即可实现对dtns协议下的api的访问与调试(一般返回JSON数据)
例如:
;/rtibchat/help
智体IB:{"msg":"success","results":...}
用户案例:案例中心的链接地址
第五章:部署分布式智体节点服务器
三种方式部署分布式智体节点:loc、dev、public,分别为本机节点、开发者节点、公开节点。
5.1 本机节点
- 登录https://dtns.top下载"智体OS3.0"(或后续版本)
- 解压dtns.os-v3.0.zip之后,打开里面的start.cmd
- 切换到:locib节点后,使用密钥登录:Eh4gDYYKowP2JQMmHbTAGi6hvtvhj6BpoMK5Khc8TzPZ
- 登录成功后,点击智体IB进行大模型的对话
注:默认的locib即是本机节点,特点是必包含了loc三个字母。
注2:本机节点,无法使用手机app登录使用(手机与电脑不是一个局域网IP)
5.2 开发者节点
重复上述过程,但将loc修改为dev,例如:devmyname、devhello、devxxxx、devyyy、devaaa。
注:开发者节点可使用智体OS的手机app登录使用。
5.3 公开节点
开放节点是不包含loc、dev三个字母的节点。可以在公开的节点列表中查找到。并且支持跨网络访问(特别是局域网间互访可以更稳定可靠)。
开放节点需dtns.network的授权。
注:公开节点提供稳定网络访问、公开访问、手机APP登录使用。
5.4 智体OS镜像节点
源码:dtns.os/plugins/dtns-os插件是制作智体节点镜像、使用节点镜像创建节点、启动智体节点的管理工具。
插件:提供和dtns-os.dpkg插件来实现dtns-os插件的app端和网页端产品入口页面。
用户案例:案例中心的链接地址