1. 编程式prompt

让 AI 具备类似程序的运行逻辑。把大模型当CLR使用。与传统的角色扮演提示prompt相比,此方式所需的tokens数量更少,且输出结果的准确性更高 。示例如下:

2. 语音对话(STT/TTS)

因为如今碎片化的时代,没多少人愿意看完一大篇文字内容,所以需要将AI生成的内容转换为语音输出,不仅符合用户对AI的认知还能增强用户对应用的依赖与喜爱。要实现语音对话就需要用到 TTS(文本转语音)和 STT(语音转文本),目前已经有很多开源大模型可以实现,还有很多python库可以离线实现

3. sse/ws发送消息先发后到问题

使用 Server-Sent Events(SSE)或者 WebSocket(ws)来转发 AI 的流式输出时,由于用户端网络环境的不确定性,这就导致原本应该先到达的消息,可能因为网络问题而滞后,后发送的消息反而先被接收,最终造成内容错乱。最简单的解决方法是在后端采用队列发送机制,同时,为每个消息添加唯一的序号。在前端接收消息时,不再依据消息到达的先后顺序处理,而是按照消息的序号进行排序处理。代码如下

// 后端代码
const req = https.request(options, async (res) => {
if (res.statusCode !== 200) console.log(res.statusCode);
let seq_num = 0;
res.on('data', async (d) => {
const data = d.toString().replace(/data: /g, '').replace(/\n/g, '').replace('[DONE]', '');
const str = extractAndConcatenateContent(data);
if (str.length > 0) {
seq_num += 1;
messageQueue.push({
'd': str,
'seq': seq_num
});
await processQueue(ws, event.connectionId);
}
});
// 前端代码
socketTask.onMessage((msg) => {
const {
d,
seq
} = JSON.parse(msg.data);
if (seq == _this.seqNum) {
_this.processMsg(d);
_this.seqNum++;
// 检查后续缓存数据
while (_this.oldMsg.has(_this.seqNum)) {
_this.processMsg(_this.oldMsg.get(_this.seqNum));
_this.oldMsg.delete(_this.seqNum);
_this.seqNum++;
}
} else {
_this.oldMsg.set(seq, d); // 缓存乱序到达的数据
}

API方式开发AI应用的三点总结的更多相关文章

  1. #2020征文-开发板# 用鸿蒙开发AI应用(三)软件篇

    目录: 前言 HarmonyOS 简介 DevEco Device Tool(windows下) 获取源码(切换到ubuntu) 烧录程序(切换回windows) 前言上一篇,我们在 Win10 上用 ...

  2. 微信程序开发系列教程(三)使用微信API给微信用户发文本消息

    这个系列的第二篇教程,介绍的实际是被动方式给微信用户发文本消息,即微信用户关注您的公众号时,微信平台将这个关注事件通过一个HTTP post发送到您的微信消息服务器上.您对这个post请求做了应答(格 ...

  3. Re:从 0 开始的微服务架构--(三)微服务架构 API 的开发与治理--转

    原文来自:聊聊架构公众号 前面的文章中有说到微服务的通信方式,Martin Folwer 先生在他对微服务的定义中也提到“每个服务运行在其独立的进程中,服务与服务间采用 轻量级的通信机制 互相协作(通 ...

  4. 八 Struts2访问Servlet的API方式三:接口注入

    Struts2访问Servlet的API方式三:接口注入 通过实现ServletRequestAware, ServletContextAware 接口,拿到Request.ServletContex ...

  5. Mybatis框架基础入门(三)--Mapper动态代理方式开发

    使用MyBatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper动态代理开发方法. 原始Dao开发方法需要程序员编写Dao接口和Dao实现类,此方式开发Dao,存在以下问题: Dao方 ...

  6. Google Map API V3开发(1)

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

  7. 浅谈 PHP 与手机 APP 开发(API 接口开发) -- 转载

    转载自:http://www.thinkphp.cn/topic/5023.html 这个帖子写给不太了解PHP与API开发的人 一.先简单回答两个问题: 1.PHP 可以开发客户端? 答:不可以,因 ...

  8. 浅谈 PHP 与手机 APP 开发(API 接口开发)

    本文内容转载自:http://www.thinkphp.cn/topic/5023.html 这个帖子写给不太了解PHP与API开发的人一.先简单回答两个问题:1.PHP 可以开发客户端?答:不可以, ...

  9. 浅谈PHP与手机APP开发(API接口开发)

    了解PHP与API开发 一.先简单回答两个问题: 1.PHP 可以开发客户端? 答:不可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分,即:服务端的开发.(别去纠结 GTK ...

  10. 使用Java API方式的MapReduce练习

    众所周知,hadoop生态圈的多数组件都是使用java开发的. 那么使用Java API方式实现起来,显得要比其它语言效率更高,更原生态. 前面有一个Hadoop学习笔记02_MapReduce练习 ...

随机推荐

  1. 逍遥模拟器+Fiddler抓包 (附带软件)

    获取软件地址: 链接:https://pan.baidu.com/s/1zE9AECWOZlw_VDVMAnkBhQ?pwd=c0kq 提取码:c0kq 一.逍遥模拟器安装 1. 安装逍遥模拟器: 2 ...

  2. 【萌狼蓝天】swagger速成

    相关链接 编辑器:https://editor.swagger.io/ 文档:https://openapi.apifox.cn/ 基础信息设置 openapi: 3.0.3 info: title: ...

  3. 使用OpenSSL创建生成CA证书、服务器、客户端证书及密钥

    说明: 对于SSL单向认证:服务器需要CA证书.server证书.server私钥,客户端需要CA证. 对于SSL双向认证:服务器需要CA证书.server证书.server私钥,客户端需要CA证书, ...

  4. shell中 ${}, ##, %%, :-,:+, ? 的使用

    假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt 可以用${}分别替换得到不同的值:${file#*/} 删掉第一个/及其左边的字符串:dir1/dir2/d ...

  5. Qt音视频开发13-mpv录像存储

    一.前言 用mpv来做录像存储,保存视频文件,从来都没有如此的方便,直接设置属性stream-record对应的文件路径即可,我的乖乖,一行代码,如此精简美丽大方,搞得我都不敢相信自己的眼睛,mpv除 ...

  6. 已有docker镜像构建过程分析

    转载请注明出处: 1.使用docker history进行分析 docker history 命令用于查看指定镜像的历史层信息,它显示了镜像创建过程中的每一层,包括创建时间.创建者.大小和注释等信息. ...

  7. 这是我见过最通俗易懂的SVD(奇异值分解)算法介绍

    线性代数是机器学习领域的基础,其中一个最重要的概念是奇异值分解(SVD),本文尽可能简洁的介绍SVD(奇异值分解)算法的基础理解,以及它在现实世界中的应用. SVD是最广泛使用的无监督学习算法之一,它 ...

  8. Vue3项目运行时报错误:TypeError:router.addRouters is not a function

    router.addRouters()方法报错:Uncaught (in promise) TypeError: router.default.addRouters is not a function ...

  9. [转]C# 组合查询条件

    在我们开发过程中经常会遇见一些通过条件获取数据的功能,比如说获取我们的用户信息,查询输入框有用户姓名,部门,入职年份等等,但查询时可能只输入一个条件或多个条件,像这种不确定的查询时,我们应该如何处理. ...

  10. 跟着源码学IM(八):万字长文,手把手教你用Netty打造IM聊天

    本文作者芋艿,原题"使用 Netty 实现 IM 聊天贼简单",本底价有修订和改动. 一.本文引言 上篇<跟着源码学IM(七):手把手教你用WebSocket打造Web端IM ...