顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-大模型电话机器人
语音流直接对接Realtime API 多模态大模型
直接把音频流输出给大模型,大模型返回音频流。
顶顶通CTI对Realtime API 的支持
提供了以下2个APP可对接任意
•cti_audio_stream 通过TCP推流和播放流,适合用于人机对话场景。
•cti_unicast_start 通过旁路的方式UDP或者TCP推流和播放流,对接Realtime API 的同时还支持对通道进行放音操作。 适合于质检,机器人辅助场景。
通过TCP推流和播放流,适合用于人机对话场景
app: cti_audio_stream
参数 remote-ip:remote-port <native> <param>
- native 可选参数 如果不设置,流格式为 8000hz 16位,如果设置了,就是原始的音频格式
- param 自定义参数
推流协议
- 前面4字节 引导数据长度 网络字节顺序
- 时间戳 8字节
- 引导数据
{"uuid":"","codec":"","param":"自定义参数"} - 数据流
连接断开后会自动重连,并且重发引导数据。
返回的放音流需要和推流的编码一样,不需要引导数据。
旁路的方式UDP或者TCP推流和播放流,适合于质检,机器人辅助场景
app: cti_unicast_start 启动推流
参数 tcp|udp remote-ip remote-port <local-ip> <local-port> <play|mix>
- tcp|udp 使用tcp还是udp协议推流
- remote-ip 远端 ip
- remote-port 远端端口,不设置用0.0.0.0
- local-ip 本地端口,不设置好用0,随机端口
- play|mix
- play 支持播放远端返回的流,发送方必须是远端IP和远端端口
- mix 把远端的流和本地放音混音
api: uuid_cti_unicast_start 启动推流
参数 uuid tcp|udp remote-ip remote-port <local-ip> <remote-ip> <play|mix>
api: uuid_cti_unicast_stop 停止推流
参数 uuid
文字方式对接文本大模型
mod_cti先把声音转换成文字,然后把文字提交给大模型,根据大模型返回执行放音,顶顶通mod_cti话术引擎用的就是这种方式。
顶顶通话术引擎对接大模型原理和用法说明
顶顶通话术引擎充分发挥大模型prompt的强大功能,把关联节点和知识库可以自动带入prompt。
如果节点开启了大模型匹配,会根据大模型匹配设置生成 ${playtext}和${prompttext}。
${playtext} 所有关联节点的放音内容。
${prompttext} 所有关联节点的意向Prompt,也就是节点的进入规则。
如果大模型匹配包含了子流程,就会把关联的子流程的文本放音加入${playtext},意向Prompt加入${prompttext} 。
如果大模型匹配包含了知识库,就会把关联的知识库的文本放音加入${playtext},意向Prompt加入${prompttext} 。
如果大模型匹配包含了全局流程,就会把关联的全局流程的子流程的文本放音加入${playtext},意向Prompt加入${prompttext} 。
用大模型判断意向选择分支,代替关键词匹配
适合场景:需要严格按流程执行,比如电话回访,电话调查。
## 任务描述 ##
根据给定的对话上下文及产品信息,从候选回答中选择最合适的回答。
如果存在完全符合情境的候选回答,输出其ID,不要输出其他信息;
若没有合适的候选回答,输出"unmatch"。 ## 产品信息 ##
请在这里输入产品信息## 候选回答列表 ##
${playtext}## 选择规则 ##
${prompttext}
如果有匹配的回答分支,大模型会输出回答ID,话术引擎切换到流程节点,播放节点预先设置的放音;
如果没有匹配的回答分支,大模型会输出unmatch,话术引擎会忽略模型返回,继续执行兜底(any)匹配,如果设置了兜底流程就会进入兜底流程节点。
用大模型判断意向选择分支和兜底回答
适合场景:大部分场景都合适
## 任务描述 ##
根据给定的对话上下文及产品信息,从候选回答中选择最合适的回复。
如果存在完全符合情境的候选回答,只输出其ID,不要输出其他信息;
若没有合适的候选回答,基于对话上下文和产品信息模仿真人说话口吻编写一条简短且恰当的新回复。 ## 候选回答列表 ##
${playtext}## 选择规则 ##
${prompttext}
如果有匹配的回答分支,大模型会输出回答ID,话术引擎切换到流程节点,播放节点预先设置的放音;
如果没有匹配的回答分支,大模型会生成一个回答,话术引擎调用流TTS播放这个回答,不会切换流程。
用大模型判断意向选择分支和兜底回答以及优化话术设置的回答内容
适合场景:既要按预先设置的流程步骤执行,又要充分利用大模型生成合适的回答。
## 任务描述 ##
根据给定的对话上下文及产品信息,从候选回答中选择最合适的回复。
如果存在完全符合情境的候选回答,输出其ID,回答内容输出空;
如果有接近但不完全合适的候选回答,输出该候选回答ID,并提供一个优化后的回答内容,优化后的回答必须和候选回答类似含义;
若没有合适的候选回答,候选回复id设置为null,并基于对话上下文和产品信息模仿真人说话口吻编写一条简短且恰当的新回复。 ## 候选回答列表 ##
${playtext}## 选择规则 ##
${prompttext}## 输出格式要求 ##
id:候选回答ID content: 回答内容
注意输出格式要求: 必须要求大模型输出“id:候选回答ID content: 回答内容” 这样的格式,不然输出格式要求不对,话术引擎解析不了。
如果有完全符合情境的回答分支,大模型会输出回答ID,不会优化回答内容,话术引擎切换到流程节点,播放节点预先设置的放音;
如果有接近但不完全合适回答分支,大模型会输出回答ID,和输出优化后的回答内容,话术引擎切换到流程节点,播放大模型优化后的回答内容;
如果没有匹配的回答分支,大模型会生成一个回答,话术引擎调用流TTS播放这个回答,不会切换流程。
让大模型来确定回答内容
比如有这样一个流程
机器人:你的电话号码是多少?
用户:我的电话是XXXXX。
机器人:确定一下,你的电话号码是 XXXXX 对吧。
## 任务描述 ##
获取输入中的电话号码。
如果输入中有电话号码输出:你的电话号码是 "电话号码" 吗
如果输入中没有电话号码输出:请问你的电话号码是多少呢## 输出示例 ##
1. 你的电话号码是 13100000000 吗
2. 请问你的电话号码是多少呢
可以通过输出示例,输出格式,等约束让大模型让要求输出。
可以多次重复测试prompt或者使用prompt优化工具来优化prompt, 在大模型时代,能写出高质量的prompt才可以用好大模型。
相关文章:
顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-大模型电话机器人
语音流直接对接Realtime API 多模态大模型 直接把音频流输出给大模型,大模型返回音频流。 顶顶通CTI对Realtime API 的支持 提供了以下2个APP可对接任意 •cti_audio_stream 通过TCP推流和播放流,适合用于人机对话场景。 •cti_unicast_start 通过旁…...
kinova机械臂绿色灯一闪一闪及刷机方法
一、背景 实验室有两个kinova mico机械臂,但经常出现操纵杆上的绿色灯一闪一闪的,导致无法使用操纵杆或ROS进行控制,下面给出官方的教程以及所需要的FS 0CPP 0008_6.2.5_mico_6dof.hex文件。 重要的东西写在前面: a、如果出现操…...
第16天:C++多线程完全指南 - 从基础到现代并发编程
第16天:C多线程完全指南 - 从基础到现代并发编程 一、多线程基础概念 1. 线程创建与管理(C11) #include <iostream> #include <thread>void hello() {std::cout << "Hello from thread " << std::this_…...
中科大计算机网络原理 1.5 Internt结构和ISP
一、互联网的层次化架构 覆盖范围分层 主干网(Tier-1级) 国家级或行业级核心网络,承担跨区域数据传输和全球互联功能。例如中国的四大主干网(ChinaNET、CERNET等)以及跨国运营商(如AT&T、Deuts…...
Windows安装sql server2017
看了下官网的文档,似乎只有ubuntu18.04可以安装,其他debian系的都不行,还有通过docker的方式安装的。 双击进入下载的ISO,点击执行可执行文件,并选择“是” 不要勾选 警告而已,不必理会 至少勾选这两…...
计算机网络之传输层(tcp协议)
一、TCP协议的特点 面向连接:TCP使用面向连接的通信模式,通信双方需要先建立连接,然后才能进行数据的传输。连接建立过程采用三次握手的方式。 可靠性:TCP提供可靠的数据传输服务,确保数据的完整性、有序性和正确性。…...
从零到一:如何用阿里云百炼和火山引擎搭建专属 AI 助手(DeepSeek)?
本文首发:从零到一:如何用阿里云百炼和火山引擎搭建专属 AI 助手(DeepSeek)? 阿里云百炼和火山引擎都推出了免费的 DeepSeek 模型体验额度,今天我和大家一起搭建一个本地的专属 AI 助手。 阿里云百炼为 …...
Open3D解决SceneWidget加入布局中消失的问题
Open3D解决SceneWidget加入布局中消失的问题 Open3D解决SceneWidget加入布局中消失的问题1. 问题2. 问题代码3. 解决 Open3D解决SceneWidget加入布局中消失的问题 1. 问题 把SceneWidget加到布局管理其中图形可以展示出来,但是鼠标点击就消失了。 stackoverflow上已…...
计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
Linux笔记---缓冲区
1. 什么是缓冲区 在计算机系统中,缓冲区(Buffer) 是一种临时存储数据的区域,主要用于协调不同速度或不同时序的组件之间的数据传输,以提高效率并减少资源冲突。它是系统设计中的重要概念,尤其在I/O操作、网…...
如何流畅访问github
1.传输数据原理 本地计算机通过本地网接入运营骨干网,经过DNS域名解析,将输入的字符解析为要连接的真实IP地址,服务器返还一个数据包(github)给计算机 2.原因 DNS域名污染-DNS解析出现问题,导致访问一个不存在的服务器 3.解决…...
java基础+面向对象
Java基础语法 CMD命令 cls 清屏 cd 目录进入文件 cd… 退回 dir 查看当前目录所有文件 E:进入E盘 exit 退出 环境变量就是不用去专门的盘符去找,直接去环境变量里找到文件 语言优势 编译型语言c: 整体翻译 解释型语言python&#x…...
Linux 检测内存泄漏方法总结
文章目录 strace检测asan内存检测linux下gperf工具(tcmalloc)检查C/C代码内存泄露问题参考 strace检测 (1)启动程序 (2) strace -f -p <PID> -tt -e brk,mmap,mmap2,munmapbrk 变大 → 说明堆增长…...
本地部署deepseek大模型后使用c# winform调用(可离线)
介于最近deepseek的大火,我就在想能不能用winform也玩一玩本地部署,于是经过查阅资料,然后了解到ollama部署deepseek,最后用ollama sharp NUGet包来实现winform调用ollama 部署的deepseek。 本项目使用Vs2022和.net 8.0开发,ollam…...
Python----数据分析(Numpy:安装,数组创建,切片和索引,数组的属性,数据类型,数组形状,数组的运算,基本函数)
一、 Numpy库简介 1.1、概念 NumPy(Numerical Python)是一个开源的Python科学计算库,旨在为Python提供 高性能的多维数组对象和一系列工具。NumPy数组是Python数据分析的基础,许多 其他的数据处理库(如Pandas、SciPy)都依赖于Num…...
Leetcode-最大矩形(单调栈)
一、题目描述 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 输入:matrix [["1","0","1","0","0"],["1","0&…...
域内委派维权
为某个服务账户配置 krbtgt 用户的非约束性委派或基于资源的约束性委派。这里我的 krbtgt 的基于资源约束性委派我利用不了,所以使用的是域控的机器账户 dc01$ 进行维权。 抓取所有 hash。 mimikatz.exe "privilege::debug" "lsadump::dcsync /doma…...
leetcode---LCR 140.训练计划
给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。 示例 1: 输入:head [2,4,7,8], cnt 1 输出:8 提示: 1 < head.length < 1000 < head[i] <…...
Linux基础 -- ARM 32位常用机器码(指令)整理
ARM 32位常用机器码(指令)整理 1. 数据处理指令(运算、逻辑、比较) 指令含义示例备注MOV赋值(寄存器传输)MOV R0, R1直接将 R1 复制到 R0MVN取反MVN R0, R1R0 ~R1ADD加法ADD R0, R1, R2R0 R1 R2ADC带进…...
内存中的缓存区
在 Java 的 I/O 流设计中,BufferedInputStream 和 BufferedOutputStream 的“缓冲区”是 内存中的缓存区(具体是 JVM 堆内存的一部分),但它们的作用是优化数据的传输效率,并不是直接操作硬盘和内存之间的缓存。以下是详…...
Agent 的流程可以随时修改调整吗?深度解析 2026 年智能体动态编排与业务闭环
站在 2026 年的技术节点回望,AI Agent(智能体)早已脱离了最初“对话机器人”的稚嫩标签,演变为企业数字化转型的核心基础设施。针对“Agent 的流程可以随时修改调整吗?”这一核心疑问,答案不仅是肯定的&…...
CVPR 2026 | 武大提出OpenDPR:基于扩散模型的开放词汇变化检测模型
点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达点击进入—>【顶会/顶刊】投稿交流群添加微信号:CVer2233,小助手拉你进群!扫描下方二维码,加入CVer学术星球!可以获得最新顶会/顶…...
2025最权威的六大AI学术网站推荐榜单
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 现如今,在市面上存在的AI论文网站,它们所具备的功能是各不相同的&…...
弯管LRA计算软件(XYZ转LRA)
专业的“弯管LRA计算软件(XYZ转LRA)”,主要用于将弯管在三维空间中的一系列坐标点(XYZ),转换为管道加工所需的关键制造参数,即LRA(直线段长度、旋转角度、弯曲夹角)。界面…...
ROS2 Jazzy机器人导航避坑指南:详解Navigation2参数配置中那些容易出错的‘坑’
ROS2 Jazzy导航系统参数配置实战:从踩坑到精通的避坑手册 当你第一次打开ROS2 Jazzy的Navigation2参数配置文件时,是否感觉像是面对一本没有注释的古老秘籍?那些看似简单的参数背后,往往隐藏着让机器人"发疯"的陷阱。本…...
OpenClaw对接gemma-3-12b-it实战:本地部署与WebUI自动化任务指南
OpenClaw对接gemma-3-12b-it实战:本地部署与WebUI自动化任务指南 1. 为什么选择OpenClawgemma-3-12b-it组合 去年我在尝试自动化办公流程时,发现大多数RPA工具要么功能受限,要么需要将敏感数据上传到云端。直到遇到OpenClaw这个开源的本地化…...
AutoGen Studio问题排查:模型服务启动失败解决方案
AutoGen Studio问题排查:模型服务启动失败解决方案 1. 问题现象与初步诊断 当您尝试启动AutoGen Studio时,可能会遇到模型服务无法正常启动的情况。这种情况通常表现为: Web界面可以访问但无法正常调用模型创建会话时长时间无响应测试模型…...
告别命令行!Auto-py-to-exe可视化打包Python程序的完整指南
1. 为什么需要可视化打包工具? 每次用PyInstaller打包Python程序时,最头疼的就是记不住那一长串命令行参数。上周我帮同事打包一个数据分析工具,光是调试--add-data参数就花了半小时,最后发现是路径写错了斜杠方向。这种经历让我意…...
突破平台局限:AirPods跨平台体验增强方案全解析
突破平台局限:AirPods跨平台体验增强方案全解析 【免费下载链接】AirPodsDesktop ☄️ AirPods desktop user experience enhancement program, for Windows and Linux (WIP) 项目地址: https://gitcode.com/gh_mirrors/ai/AirPodsDesktop AirPodsDesktop是一…...
AI服务的可观测性与运维
AI服务的可观测性与运维 当 AI 服务从开发环境走向生产,可观测性(Observability)成为运维的基石。传统的监控(CPU、内存、请求量)已不足以应对 AI 系统的复杂性,我们需要深入追踪 每个 AI 交互的细节&#…...
