这篇文章主要内容
想必大家都在尝试接入并赋能自己的各大应用和场景,比如接入微信机器人自动回复消息,又或者接入公众号
当然作为技术人员我也尝试了下并成功变现,结果如下:
对接入有兴趣的可以读我之前的文章:全网最全接入第三方教程
我们可以看到,虽然功能完美完成,但是速度却依然有瑕疵(此视频加速了3倍也只有这么快了)
。
为什么API么慢
经过不断尝试我总结了以下四点
网络延迟: API 是云服务,需要在互联网上通过网络连接访问。如果您的网络连接速度较慢,则会导致 API 请求响应时间变慢。请求量: API是高度可扩展的,但如果同时向API发送大量的请求,API的响应时间可能会变慢。此时您可以考虑使用异步请求或者批量请求。API负载:当很多用户同时请求 API 时,API的负载会增加,可能会导致响应速度变慢。为了缓解这种情况,API提供了“请求配额”限制每个用户请求的次数,以避免过度使用。模型复杂性: API 使用基于深度学习的语言模型来生成文本。这些模型非常复杂,需要大量计算资源和时间来执行。在一些极端情况下,如果请求的文本长度非常长,或者API正在处理大量的并发请求,响应时间可能会更长。如何优化
不过对于程序员来讲,一切问题都有解决方法:
使用异步请求:异步请求可以将请求发送到 API 后立即返回响应,而不必等待 API 完全处理请求。这可以大大减少响应时间,特别是当您需要处理大量请求时。限制请求量:如果您的应用程序需要大量使用 API,可以考虑限制请求的数量,以避免过度使用 API。优化请求数据:减少发送到 API 的数据量可以减少响应时间。您可以尝试缩短请求的文本长度或优化请求参数。尝试使用更强大的硬件: API 运行在高性能计算机上,如果您的应用程序需要处理大量请求或需要更快的响应时间,可以考虑使用更强大的硬件。
这几种方法,我们可以结合自己现有的业务去选择多个,往往一个是解决不了所有的问题。就比如,我如果限制了API的请求数量,那势必我API的并发量就会降低,这时可能需要申请多个去处理并发问题,这里可能又会出现,多个在同个ip地址使用多次可能会被封禁的问题。
看到了吗,问题一个接一个,我们得结合具体业务去择优选择。
我先给大家解释一下常用的几种加速方法具体使用流程以及具体应用实例,方便大家理解
1. 网络中转:解决网络延时问题
常用的方法有:
2. 异步请求:解决网络延时问题
流程图如下
这样的好处不仅是减少了客户端等待的时间,更重要的是可以解耦业务逻辑和 API服务之间的关系。之后如果API有速度性能瓶颈可直接横向扩展消息队列层, 业务逻辑不受影响,这样可以多维度解决速度问题。
我还用这个例子测试一下写代码的能力!我这里做了两个尝试:
1. 让可以读懂美人鱼流程图。
2.然后让可以根据模块之间的关联关系系统的给出代码。
写出的部分代码如下:
当这里我已经相当满意了,它甚至还要帮你写测试用例
也就是说,我们画出足够详细的流程图,并将流程详细的告诉它,它完全可以帮我们生成系统代码。这和我们上篇内容讲的生成视频有异曲同工之妙,就是你的指令越清晰越明确,那么最终的结果就越准确。生成代码的具体实现方法我就不详细讲了,有兴趣的,点击阅读全文可以进入星球查看。
这里举个应用例子:我的公众号接入了速度很慢,公众号又有一个限制,就是自动回复的响应超过了5s就会报服务错误,用异步的方法,就可以解决这个问题,每次请求过来我都不请求然后立即返回,将请求先放队列中,异步处理通过自动发消息给用户的接口回复给用户(只有企业认证的公众号才有发消息给用户的接口,这点需要注意)。
3. 流式读取返回数据:解决返回数据量大的问题
现在巨多企业在用流式读取解决应用交互问题,大家一定要了解,当我们使用 API来生成文本时,API的响应可能非常大,这可能会导致应用程序在处理响应时出现延迟或内存问题。为了解决这个问题,我们可以使用流式读取来逐块处理API响应数据,这可以提高应用程序的响应速度,同时减少内存使用。
流式读取的工作原理是,它允许我们在响应数据到达之前逐步处理响应。这意味着我们可以在数据到达之前逐步处理响应,而不是等待所有数据都可用之后再处理它。在这种情况下,我们可以使用HTTP分块编码,将响应数据分成多个块发送,而不是将整个响应数据一次性发送回给应用程序。
代码可直接询问获取:将流式读取 api的前端后端代码都写出来
确实还写出来了,用到了迭代器生成器,代码质量还是挺高的。但是这种方式也明显有弊端,就是依赖前端的读取数据的方式,如果客户端不支持流失读取,那么也无法使用,
比如将接入到各大第三方平台,因为第三方平台的客户端都不是流式读取的,所以用这种方式就行不通了。
好了,这篇内容就到这里,对你有帮助的话点个赞吧~