uniai开发文档uni

HBuilderX3.8.5+支持在本地调试云函数时使用uni-ai计费网关

注意

如果HBuilderX版本过低,在云函数的扩展库界面里找不到uni-ai。

LLM,全称为LargeLanguageModels,指大语言模型。

LLM的主要特点为输入一段前文,可以推导预测下文。

LLM不等于ai的全部,除了LLM,还有ai生成图片等其他模型。

用法:uniCloud.ai.getLLMManager(ObjectGetLLMManagerOptions);

参数说明GetLLMManagerOptions

您可以自行去大模型厂商处注册并填写相应的apiKey的参数。也可以通过DCloud来购买,即使用uni-ai计费网关。

uni-ai计费网关使用门槛低,并且可以一处充值,多模型体验。您无需在多个大模型厂商处申请,只需向DCloud购买token套餐,即可体验各种大模型的效果。

uni-ai计费网关的token计费单价与大模型厂商的定价相同,支持开具发票。

如何使用uni-ai计费网关

uni-ai计费网关目前支持付费使用国内大模型厂商minimax,以及微软与openai合作提供的基于azure的ChatGPT3.5(与openai的ChatGPT3.5一致)。

示例

在云函数或云对象中编写如下代码调用LLM服务:

//使用uni-ai计费网关,不指定provider,默认会走minimaxconstllmManager=uniCloud.ai.getLLMManager()//使用uni-ai计费网关,指定provider为azureconstllmManager=uniCloud.ai.getLLMManager({provider:'azure'})//不使用uni-ai计费网关,自行使用openaiconstllmManager=uniCloud.ai.getLLMManager({provider:'openai',apiKey:'yourkey',proxy:'www.yourdomain.com'//也可以是ip})如何测试是否配置成功

在您使用uni-ai计费网关后,且在云函数代码中做好配置后。您可以:

appId参数说明

使用uni-ai计费网关时,在云函数url化、定时触发、云函数单实例多并发,这3个场景需要传递客户端appId,即您应用的manifest.json里的appid。

关于proxy参数的说明

云函数无法直接连同openai的服务器,您需要自行配置代理。如果使用的代理需要用户名和密码,请在代理地址中加入用户名和密码,例如:username:password@host:port。

uni-ai在请求openai时会自动将openai的域名替换为配置的代理域名或ip,一般的反向代理服务器均可满足此需求。

在云函数或云对象中编写如下代码:

用法:llmManager.chatCompletion(ObjectChatCompletionOptions)

参数说明ChatCompletionOptions

messages参数说明

需注意messages末尾有个s,它是数组,而不是简单的字符串。其中每项由消息内容content和角色role组成。

一个最简单的示例:

awaitllmManager.chatCompletion({messages:[{role:'user',content:'你好'}]})role,即角色,有三个值:

当开发者需要为用户的场景设置背景时,则需在云端代码写死system,而用户输入的问题则被放入user中,然后一起提交给LLM。

例如,提供一个法律咨询的ai咨询助手。

开发者可以在system里限制对话背景,防止ai乱答问题。然后给用户提供输入框,假使用户咨询了:“谣言传播多少人可以定罪?”,那么拼接的message就是:

constmessages=[{role:'system',content:'你是一名律师,回答内容仅限法律范围。'},{role:'user',content:'谣言传播多少人可以定罪?'}]对于不支持system的情况,如baidu,只能把system对应的内容写到第一条user信息内,也可以达到一定范围内的控制效果。

assistant这个角色的内容,是ai返回的。当需要持续聊天、记忆前文时,需使用此角色。

因为LLM没有记忆能力,messages参数内需要包含前文,LLM才能记得之前聊天的内容。

以下的messages示例,是第二轮ai对话时发送的messages的示例。在这个示例中,第一个user和assistant的内容,是第一轮ai对话的聊天记录。最后一个user是第二轮对话时用户提的问题。

因为用户提问的内容“从上述方法名中筛选首字母为元音字母的方法名”,其中有代词“上述”,为了让ai知道“上述”是什么,需要把第一轮的对话内容也提交。

constmessages=[{role:'system',content:'以下对话只需给出结果,不要对结果进行解释。'},{role:'user',content:'以数组形式返回nodejsos模块的方法列表,数组的每一项是一个方法名。'},{role:'assistant',content:'以下是Node.js的os模块的方法列表,以数组形式返回,每一项是一个方法名:["arch","cpus","endianness","freemem","getPriority","homedir","hostname","loadavg","networkInterfaces","platform","release","setPriority","tmpdir","totalmem","type","uptime","userInfo"]'},{role:'user',content:'从上述方法名中筛选首字母为元音字母的方法名,以数组形式返回'}]在持续对话中需注意,messages内容越多则消耗的token越多,而LLM都是以token计费的。

token是LLM的术语,ai认知的语言是经过转换的,对于英语,1个token平均是4个字符,大约0.75个单词;对于中文,1个汉字大约是2个token。

如何在节省token和保持持续对话的记忆之间平衡,是一个挺复杂的事情。开发者需在适合时机要求ai对上文进行总结压缩,下次对话传递总结及总结之后的对话内容以实现更长的对话。

在上述例子中,还可以看到一种有趣的用法,即要求ai以数组方式回答问题。这将有利于开发者格式化数据,并进行后置增强处理。

model参数说明@model

每个AIProvider可以有多个model,比如对于openai,ChatGPT的模型是gpt-3.5-turbo,而gpt-4的模型就是gpt-4。不同模型的功能、性能、价格都不一样。

也有一些AIProvider只有一个模型,此时model参数可不填。

模型最大上下文token数、字数限制

openaigpt-3.5-turbo:4097azuregpt-3.5-turbo:8192abab4-chat、abab5-chat:4096

baidu文心千帆最后一个message的content长度(即此轮对话的问题)不能超过2000个字符;如果messages中content总长度大于2000字符,系统会依次遗忘最早的历史会话,直到content的总长度不超过2000个字符

tokensToGenerate参数说明

tokensToGenerate指生成的token数量限制,即返回的文本对应的token数量不能超过此值。注意这个值不是总token。

注意此值和传入messages对应的token数量,两者相加不可大于模型最大上下文token数。如果messages对应的token数为1024,当传递的tokensToGenerate参数大于(模型最大上下文token数-1024)时接口会抛出错误。

使用minimax时默认最多生成512个token的结果,也就是返回结果不会很长。如有需求请自行调整此值。

deploymentId参数说明

自行设置apikey调用azure接口时需要传deploymentId,使用uni-ai计费网关访问azure服务时需要传递model而不是deploymentId。目前通过uni-ai计费网关调用azure接口仅支持gpt-3.5-turbo这一个模型。

chatCompletion方法的返回值

在你的云函数中加载uni-cloud-ai扩展库,写下如下代码,ctrl+r运行,即可调用ai返回结果。

新增于HBuilderX正式版3.7.10+,alpha版HBuilderX3.8.0+。

uni-aichatCompletion接口支持传sseChannel参数的用法云端支持新增于2023年6月15日,HBuilderX3.8.5+支持在本地调试云函数时使用此用法。使用uni-ai计费网关流式响应时,sseChannel参数必填

实际上AI是逐渐生成下一个token的,所以可使用流式响应,类似不停打字的打字机那样,让前端用户陆续看到AI生成的内容。

以往云函数只有return的时候,才能给客户端返回消息。在流式响应中,需要云函数支持sse,在return前给客户端一直发送通知。

在调用chatCompletion接口时传递参数stream:true即可开启流式响应。使用uni-ai计费网关时还需要传递sseChannel才可以使用流式响应。

关于使用uni-ai计费网关时使用流式响应的说明

注意:

stream对象有四个事件:

注意,以上事件属于stream对象,不要和sseChannel的事件搞混了,云端调用sseChannel.write客户端就需要使用sseChannel.on('message')进行接受,例如sseChannel并没有optimizedMessage事件。

云函数代码示例

新增于HBuilderX3.8.2

包含AI生成图片等多媒体处理能力

用法:uniCloud.ai.getMediaManager(ObjectGetMediaManagerOptions);

参数说明GetMediaManagerOptions

参数说明ImageGenerationOptions

style参数说明

百度v1接口(AI作画-基础版)支持的风格:探索无限、古风、二次元、写实风格、浮世绘、lowpoly、未来主义、像素风格、概念艺术、赛博朋克、洛丽塔风格、巴洛克风格、超现实主义、水彩画、蒸汽波艺术、油画、卡通画

百度v2接口(AI作画-高级版)不支持传风格,如需指定风格可尝试在提示词内指定

resolution参数说明

百度v1接口支持以下分辨率:10241024、10241536、1536*1024

百度v2接口支持以下分辨率:512512、640360、360640、10241024、7201280、1280720

返回值

参数说明GetGeneratedImageOptions

参数status说明

百度v1接口支持的状态为:'RUNNING'(任务执行中)、'SUCCESS'(任务成功);

百度v2接口支持的状态为:'INIT'(任务创建中)、'WAIT'(任务等待中)、'RUNNING'(任务执行中)、'FAILED'(任务失败)、'SUCCESS'(任务成功);

参数securityCheckResult说明

审核状态有以下几种:'block'(违规)、'review'(需要人工核查)、'pass'(通过审核)

捕获错误的代码示例

try{awaitllmManager.chatCompletion({messages:[{role:'user',content:'你好'}]})}catch(e){console.log(e.errCode,e.errMsg)//TODO处理错误}完整错误码列表如下

常见错误信息

如了解uni-app,但未使用过uniCloud。请参考本章节继续。

注意uni-app客户端连接uniCloud不是通过uni.request。如果调用云函数是uniCloud.callFunction。(如调用云对象是uniCloud.importObject)

constcontent="你能给我提供什么服务"uni.showLoading();uniCloud.callFunction({name:"ai-demo",//这里是你的云函数的名称。如果你的云函数不叫ai-demo请自行更换data:{messages:[{role:'user',content}]}}).then(res=>{console.log(res);uni.showModal({content:JSON.stringify(res),showCancel:false});}).catch(e=>{uni.showModal({content:JSON.stringify(e),showCancel:false});}).finally(()=>{uni.hideLoading()})运行客户端项目,比如运行到web浏览器,即可联调客户端和云端。

如需在非uniCloud的传统服务器调用uni-ai,需要先在uniCloud上创建一个云函数或云对象,加载uni-cloud-ai扩展库,编写上述uni-ai的调用代码。

注意如果使用URL化后,将无法使用stream流式输出。

大语言模型的推理需要消耗很高的GPU算力,调用大模型需要在模型厂商处注册账户和付费。

uni-ai计费网关支持调用minimax、微软azureopenaiChatGPT3.5的对话接口,调用getLLMManager时如果不传provider会默认使用minimax作为服务商。

调整完毕后上传依赖uni-ai的云函数/云对象即可,注意即使没有修改也需要重新上传。

免费版取消后使用免费版可能遇到的错误

在免费版停用后,如果连接云端云函数时未使用uni-ai计费网关且未自行传递key信息,且未在2023年6月15日0点后更新云函数,则会遇到tokenisunusable错误。如果使用在2023年6月15日0点后更新了云函数,则会提示尚未购买uni-ai套餐。

此外使用HBuilderX3.8.4及之前的版本本地运行时无法使用uni-ai计费网关,因此也会遇到tokenisunusable错误。请使用云端云函数进行调试。

如何测试是否配置成功

使用uni-ai计费网关时,如需本地运行需要使用HBuilderX3.8.5及以上版本。

THE END
1.uView2.0全面兼容nvue的uniapp生态框架uni多平台快速开发的UI框架 四大利器,为您保驾护航 指南 涵盖uniapp各个方面,给开发者方向指导和设计理念,让您茅塞顿开,一马平川 组件 众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用 工具库 众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨 https://uviewui.com/
2.基础配置及使用/uniapp+vue3+ts+vite+vscodeuniapp目前(20230605)uni-app最新版本(3.8.4.20230531) 一、官网文档 微信开放文档 uni-app官网-quickstart uni-app官网-组件 二、创建项目 项目目标:vue3+ts+vite+vscode 创建以 typescript 开发的工程(如命令行创建失败,请直接访问gitee下载模板) npx degit dcloudio/uni-preset-vue#vite-ts uniapp-base https://blog.csdn.net/snowball_li/article/details/124716125
3.uniApp零基础学习第1章之uniapp介绍以及首个项目运行uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、HarmonyOS、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。 DCloud 公司拥有900万开发者、数百万应用、12亿手机端月活用户、数千款uni-app插件、70+微信/qq群https://www.jianshu.com/p/c162948546b1
4.uniapp开发小程序的完整流程记录vue.js本文详细介绍了使用uni-app进行项目开发的全过程,包括uni-app框架的介绍、开发工具HBuilderX的下载安装与配置、项目开发中的网络请求配置、小程序分包加载、自定义组件使用、组件使用技巧等,还提及了解决开发中遇到的一些问题,需要的朋友可以参考下+ 目录 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你https://www.jb51.net/javascript/329973542.htm
5.uniapp可以开发app吗uniapp可以开发app。uniapp对于独自开发是相当友好的,一套代码可以兼容app(安卓,ios),小程序,h5等,一定程度上降低了开发的成本,个人开发的压力也在某种程度上减小了。关于uniapp开发app的具体内容我们将在文章中展开。 uniapp开发app的优势 1、uniapp对于独自开发是相当友好的,一套代码可以兼容app(安卓,ios),小程https://worktile.com/blog/know-741/
6.UNIAPP可视化开发工具UNIAPP可视化设计工具实现了UNIAPP后台、手机页面、以及模块生成等功能的一站可视化代码生成器,无需复杂操作UNIAPP一键生成后即可直接在UNIAPP上运行,开发者仅需负责更复杂的逻辑。https://www.diygw.com/uniapp.html
7.uniapp用什么开发uniappuniapp使用vue.js框架和针对不同平台的渲染引擎,允许开发者用一套代码构建跨平台应用,包括ios、android、h5和微信小程序等。其技术栈包含vue.js框架、渲染引擎和编译器等,具有跨平台、数据驱动、组件化和插件扩展等特点,适用于企业级应用、电商平台、内容管理系统和游戏等场景。 https://m.php.cn/faq/736682.html
8.uniAPP入门:从零开始的跨平台应用开发指南uni-APP 是由阿里云团队打造的一款前端框架,专为开发者提供跨 iOS、Android、Web 及小程序的统一开发环境。uni-APP 在简化代码重用、提升开发效率方面表现出色,其丰富的组件库和API,允许开发者使用一种语言(主要为 JavaScript)和一套代码库,即可构建出适用于多个平台的应用。本文将从跨平台性、组件丰富度、社区与支https://www.imooc.com/article/350863
9.uniuni-app实战在线教育类app开发 浏览316次 文章版权归作者所有,转载请联系作者授权。https://m.study.163.com/article/1284205417
10.uni1浏览量 问图书管理员 馆际互借 点赞 收藏 访问借阅管理系统 分享 作者:袁龙 ISBN:9787302592969 出版社:清华大学出版社 出版年:2022 作者:赵龙 ISBN:9787111690627 出版社:机械工业出版社 出版年:2022 Python+Kivy(App开发)从入门到实践 作者:明日科技主编 https://www.las.ac.cn/front/book/detail?id=44962cff01f857b18beafc0c340e36b6
11.uniuni-app页面路由为框架统一管理,开发者需要在page.json里配置每个路由页面的路径及页面样式。类似小程序在app.json中配置页面路由一样。所以uni-app的路由用法与Vue Router不同,如仍希望采用Vue Router方式管理路由,可在插件市场搜索Vue-Router。 路由跳转 http://www.360doc.com/content/20/0624/18/13328254_920326413.shtml
12.uniapp打包成H5部署到服务器教程腾讯云开发者社区当前端uniapp写的项目开发完成的时候,需要将页面打包出来,生成H5的静态文件,部署在服务器上,通过服务器链接地址,就可以直接在手机上点开访问 了。 在网上看了一圈,好像没有找到十分详细的教程,这里稍微详细的记录了一下,uniapp打包成H5部署到服务器教程。 https://cloud.tencent.com/developer/article/1657497
13.小程序开发uniapp引入iconfont图标及使用方式【小程序开发】uniapp引入iconfont图标及使用方式 本文主要讲述的是在使用uniapp中如何引入iconfont图标,以及两种常用的位置。 ●位置一:App下原生导航栏的按钮使用字体图标。 ●位置二:页面中的任意位置使用iconfont图标。 第一步:打开iconfont官网新建项目并添加自己所需要的图标https://open.alipay.com/portal/forum/post/109101015
14.图鸟UIuniapp:图鸟UI,基于uniMandy/图鸟UI-uniapp 加入Gitee 与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :) 免费加入 已有帐号?立即登录 master 克隆/下载 git config --global user.name userName git config --global user.email userEmail 分支1 标签2 https://portrait.gitee.com/bruce_qiq/tuniao-ui
15.UniAppUni_App 更多来自此开发人员的 App Zag App 教育 Eideo 教育 Flash_Book 教育 MRCS I.V 教育 Mideo Educational Videos 教育 3lm 教育 DR MOHAMED AYMAN 教育 Pina App 商务 Mediocology 教育 FB Courses 教育 Copyright ? 2024 Apple Inc. 保留所有权利。 互联网服务条款 App Store 与https://apps.apple.com/cn/app/uni-app/id1591479376?see-all=developer-other-apps
16.如何通过UniApp客户端接入增强版活体检测方案CertifyId,然后使用CertifyId唤起客户端SDK,并对认证结果进行查询。本文介绍UniApp客户端接入的操作方法。 接入前必读 近期发现有个人开发者封装阿里云增强版实人认证SDK后开发了第三方插件,并在某平台上提供付费下载服务。阿里云提醒您,如果您使用了此类非阿里云官方提供的插件或服务,阿里云概不对由此造成的一切后果负责,https://help.aliyun.com/document_detail/189747.html