利用uniapp做ai开发,太简单了。无论是chatgpt照旧国内的大语言模子,都可

[复制链接]
查看599 | 回复0 | 2023-8-23 11:42:28 | 显示全部楼层 |阅读模式
目次
uni-ai是什么
1、聚合
2、prompt辅助
3、私有数据训练
4、现成开源项目
怎样利用uni-ai
1、通过api调用
2、获取LLM实例
3、对话
4、简单示例
5、流式相应
其他阐明
 费用
常见用途场景


做小步伐开发的应该都知道uniapp,这是Dcloud推出的一款跨端开发框架。是一个利用 Vue.js 开发全部前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(相应式)、以及各种小步伐(微信/付出宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。
现在uniapp的用户非常多,基本上是开发多端小步伐的不二之选。
迩来,chatgpt爆火,很多人也想要举行相干应用的开发,那么,如果用uniapp来做ai开发呢?Dcloud官方非常贴心的提供了一个新的开发组件,uni-ai,利用他,你可以轻松的举行ai开发集成,无论是国外的chatgpt,照旧国内的常用的大语言模子,都可以信手拈来。
而且,它现在照旧免费提供的哦,是不是很Nice?
uni-ai是什么

uni-ai由Dcloud开发,定位就是开发者利用ai能力的最佳开发库,更丰富、更易用、更高效。
它具有以下特点
1、聚合

uni-ai,聚合了国内外各种盛行的ai能力。包罗


  • 大语言模子LLM:chatGPT、GPT-4、百度文心一言、minimax等
  • 图形能力:文心一格 (未来还会聚合更多)
uni-ai支持设置本身在AI厂商处申请的API Key和署理,也支持免配直接利用。
2、prompt辅助

自然语言谁都会说,但想提出一个好prompt来指挥ai满意本身的需求并不简单。所以出现了prompt工程师的说法。
uni-ai整合了大量prompt模板,并将提供 format prompt和prompt插件市场。
举个例子,如果你必要写一个产物营销文案,你可以利用自然语言,如请帮我编写一份产物营销文案,产物名称叫uni-app,它的特点是开发一次全端覆盖。
但实际上,自然语言这么写是繁琐且容易马虎的。format prompt是弹出一个表单,你在表单里填写:
  1. 产品名称:uni-app
  2. 目标用户:程序员
  3. 产品归类:前端应用开发框架
  4. 产品用途:使用该框架开发应用,一次编码可覆盖到Android app、iOS app、web、以及各家小程序,如微信、百度、支付宝、抖音、qq、京东等小程序和快应用。
  5. 卖点:高效、易学、生态完善
  6. 文风:技术风格
  7. 字数:500字
复制代码
复制代码
uni-ai,为你提供更好的prompt。
3、私有数据训练

现在的大模子,没有最新的、以及企业私有的数据。各家也未开放fine-turning微调模子。
怎样把私有数据灌入ai中,险些是每个企业都关心的事情。
uni-ai将提供一整套方案办理这个标题,只需把私有数据按指定格式提交到你的uniCloud服务空间,就可以自动把这些最新的、私有的知识到场到ai的回答中。
4、现成开源项目

ai能力非经常见的应用场景,有智能客服和自动天生文稿。
uni-ai把这些常见场景对应的应用均已做好,而且开源。开发者可以直接拿走利用。

怎样利用uni-ai

1、通过api调用

ai作为一种云能力,相干调用被整合到uniCloud中。
如您的服务器业务不在uniCloud上,可以把云函数URL化,把uni-ai当做http接口调用。
在实际应用中,大多数场景是直接利用uni-im和uni-cms的ai功能,这些开源项目已经把完整逻辑都实现,无需本身研究API。
ai能力由uni-cloud-ai扩展库提供,在云函数或云对象中,对右键设置uni-cloud-ai扩展库。怎样利用扩展库请参考:利用扩展库
如果HBuilderX版本过低,在云函数的扩展库界面里找不到uni-ai。
注意uni-ai是云函数扩展库,其api是uniCloud.ai,不是必要下载的三方插件。而uni-cms、uni-im等开源项目,是必要在插件市场下载的。
2、获取LLM实例

LLM,全称为Large Language Models,指大语言模子。
LLM的紧张特点为输入一段前文,可以推导猜测下文。
LLM不即是ai的全部,除了LLM,还有ai天生图片等其他模子。
用法:uniCloud.ai.getLLMManager(Object GetLLMManagerOptions);
注意需在相干云函数或云对象中加载uni-cloud-ai利用扩展库,否则会报找不到ai对象。
参数阐明GetLLMManagerOptions
参数范例必填默认值阐明providerstring否-llm服务商,现在支持openai、baidu、minimax。不指定时由uni-ai自动分配apiKeystring否-llm服务商的apiKey,如不填则利用uni-ai的key。如指定openai和baidu则必填accessTokenstring否-llm服务商的accessToken。现在百度文心一言是必填,怎样获取请参考:百度AI鉴权认证机制proxystring否-可有效毗连openai服务器的、可被uniCloud云函数毗连的署理服务器地址。格式为IP或域名,域名不包罗http前缀,协议层面仅支持https。设置为openai时必填 关于proxy参数的阐明
如果利用的署理必要用户名和暗码,请在署理地址中到场用户名和暗码,比方:username:password@ip:port。uni-ai在哀求openai时会自动将openai的域名更换为设置的署理域名或ip,一般的反向署理服务器均可满意此需求。
示例
在云函数或云对象中编写如下代码:
  1. // 不指定provider
  2. const llm = uniCloud.ai.getLLMManager()
  3. // 指定openai,需自行配置相关key,以及中转代理服务器
  4. const openai = uniCloud.ai.getLLMManager({
  5.   provider: 'openai',
  6.   apiKey:'your key',
  7.   proxy:'www.yourdomain.com' //也可以是ip
  8. })
复制代码
现阶段,不指定provider时,uni-ai分配的ai引擎无需开发者付出费用。同时也不会自动分配到gpt-4等比力昂贵但精准的模子上。如有变革会提前公告。
开发者利用openai等已经商用的ai时,需自行向相干服务商付出费用。
3、对话

    注意
  对话接口相应一般比力慢,建议将云函数超时时间设置的长一些,好比30秒(客户端访问云函数最大超时时间:腾讯云为30秒,阿里云为40秒)。怎样设置云函数超时时间请参考:云函数超时时间
  用法:llm.chatCompletion(Object ChatCompletionOptions)
参数阐明ChatCompletionOptions
参数范例必填默认值阐明兼容性阐明messagesarray是-提问信息modelstring否默认值见下方阐明模子名称。每个AI Provider有多个model,见下方阐明百度文心一言不支持此参数maxTokensnumber否-【已废弃,请利用tokensToGenerate替代】天生的token数目限定,必要注意此值和传入的messages对应的token数目相加不可大于4096百度文心一言不支持此参数tokensToGeneratenumber否默认值见下方阐明天生的token数目限定,必要注意此值和传入的messages对应的token数目相加不可大于4096百度文心一言不支持此参数temperaturenumber否1较高的值将使输出更加随机,而较低的值将使输出更加会合和确定。建议temperature和top_p同时只调解其中一个百度文心一言不支持此参数topPnumber否1采样方法,数值越小结果确定性越强;数值越大,结果越随机百度文心一言不支持此参数streamboolean否false是否利用流式相应,见下方流式相应章节百度文心一言不支持此参数 messages参数阐明
需注意messages末尾有个s,它是数组,而不是简单的字符串。其中每项由消息内容content和脚色role组成。
一个最简单的示例:
  1. await llm.chatCompletion({
  2.   messages: [{
  3.     role: 'user',
  4.     content: '你好'
  5.   }]
  6. })
复制代码
复制代码
role,即脚色,有三个值:


  • system 体系,对应的content一般用于对话配景设定等功能。system脚色及信息如存在时只能放在messages数组第一项。baidu不支持此脚色
  • user 用户,对应的content为用户输入的信息
  • assistant ai助手,对应的content为ai返回的信息
当开发者必要为用户的场景设置配景时,则需在云端代码写死system,而用户输入的标题则被放入user中,然后一起提交给LLM。
比方,提供一个法律咨询的ai咨询助手。
开发者可以在system里限定对话配景,防止ai乱答标题。然后给用户提供输入框,假利用户咨询了:“谎言传播多少人可以治罪?”,那么拼接的message就是:
  1. const messages = [{
  2.     role: 'system',
  3.     content: '你是一名律师,回答内容仅限法律范围。'
  4.   },{
  5.     role: 'user',
  6.     content: '谣言传播多少人可以定罪?'
  7.   }]
复制代码
复制代码
对于不支持system的情况,如baidu,只能把system对应的内容写到第一条user信息内,也可以到达肯定范围内的控制结果。
   注意:对于法律、医学等专业范畴必要正确回答的,建议利用gpt-4模子。其他模子更得当闲聊、文章内容天生。
  assistant这个脚色的内容,是ai返回的。当必要一连谈天、影象前文时,需利用此脚色。
由于LLM没有影象能力,messages参数内必要包罗前文,LLM才气记得之前谈天的内容。
以下的messages示例,是第二轮ai对话时发送的messages的示例。在这个示例中,第一个user和assistant的内容,是第一轮ai对话的谈天记载。 末了一个user是第二轮对话时用户提的标题。
由于用户提问的内容“从上述方法名中筛选首字母为元音字母的方法名”,其中有代词“上述”,为了让ai知道“上述”是什么,必要把第一轮的对话内容也提交。
  1. const messages = [{
  2.     role: 'system',
  3.     content: '以下对话只需给出结果,不要对结果进行解释。'
  4.   },{
  5.     role: 'user',
  6.     content: '以数组形式返回nodejs os模块的方法列表,数组的每一项是一个方法名。'
  7.   }, {
  8.     role: 'assistant',
  9.     content: '以下是 Node.js 的 os 模块的方法列表,以数组形式返回,每一项是一个方法名:["arch","cpus","endianness","freemem","getPriority","homedir","hostname","loadavg","networkInterfaces","platform","release","setPriority","tmpdir","totalmem","type","uptime","userInfo"]'
  10.   }, {
  11.     role: 'user',
  12.     content: '从上述方法名中筛选首字母为元音字母的方法名,以数组形式返回'
  13.   }]
复制代码
复制代码
在一连对话中需注意,messages内容越多则消耗的token越多,而LLM都是以token计费的。
token是LLM的术语,ai认知的语言是颠末转换的,对于英语,1个token均匀是4个字符,大约0.75个单词;对于中文,1个汉字大约是2个token。
怎样在节流token和保持一连对话的影象之间均衡,是一个挺复杂的事情。开发者需在得当机遇要求ai对上文举行总结压缩,下次对话通报总结及总结之后的对话内容以实现更长的对话。
DCloud在uni-im和uni-cms中, 已经写好了这些复杂逻辑。开发者直接利用DCloud封装好的开源项目模板即可。
在上述例子中,还可以看到一种风趣的用法,即要求ai以数组方式回答标题。这将有利于开发者格式化数据,并举行后置增强处理处罚。
model参数阐明
每个AI Provider可以有多个model,好比对于openai,ChatGPT的模子是gpt-3.5-turbo,而gpt-4的模子就是gpt-4。不同模子的功能、性能、代价都不一样。
也有一些AI Provider只有一个模子,此时model参数可不填。
如果您必要非常精准的问答,且不在乎资本,保举利用gpt-4。如果是平常的文章内容天生、续写,大多数模子均可胜任。
服务商接口模子openaichatCompletiongpt-4、gpt-4-0314、gpt-4-32k、gpt-4-32k-0314、gpt-3.5-turbo(默认值)、gpt-3.5-turbo-0301minimaxchatCompletionabab4-chat、abab5-chat(默认值) tokensToGenerate参数阐明
tokensToGenerate指天生的token数目限定,即返回的文本对应的token数目不能凌驾此值。注意这个值不是总token。此参数名称后续可能改名。
注意此值和传入messages对应的token数目,两者相加不可大于4096。如果messages对应的token数为1024,当通报的tokensToGenerate参数大于(4096-1024)时接口会抛堕落误。
未指定provider时默认最多天生512个token的结果,也就是返回结果不会很长。如有需求请自行调解此值。此默认值为512(在HBuilderX alpha 3.7.13版本默以为128)
chatCompletion方法的返回值
参数范例必备默认值阐明兼容性阐明idstringopenai必备-本次复兴的id仅openai返回此项replystring是-ai对本次消息的复兴choicesarray<object>否-全部天生结果百度文心一言不返回此项|--finishReasonstring否-截断缘故起因,stop(正常竣事)、length(超出maxTokens被截断)|--messageobject否-返回消息  |--rolestring否-脚色  |--contentstring否-消息内容usageobject是-本次对话token消耗详情|--promptTokensnumber否-输入的token数目minimax不返回此项|--completionTokensnumber否-天生的token数目minimax不返回此项|--totalTokensnumber是-总token数目 4、简单示例

在你的云函数中加载uni-cloud-ai扩展库,写下如下代码,ctrl+r运行,即可调用ai返回结果。
  1. const llmManager = uniCloud.ai.getLLMManager()
  2. const res = await llmManager.chatCompletion({
  3.         messages: [{
  4.                 role: 'user',
  5.                 content: 'uni-app是什么,20个字以内进行说明'
  6.         }]
  7. })
  8. console.log(res);
复制代码
5、流式相应

   新增于HBuilderX正式版 3.7.10+, alpha版 HBuilderX 3.8.0
  访问AI谈天接口时,如天生内容过大,相应时间会很久,前端用户必要等待很长时间才会收到结果。
实际上AI是逐渐天生下一个token的,所以可利用流式相应,类似不绝打字的打字机那样,让前端用户一连看到AI天生的内容。
以往云函数只有return的时候,才气给客户端返回消息。在流式相应中,必要云函数支持sse,在return前给客户端不停发送关照。
uniCloud的云函数,基于uni-push2,于 HBuilderX 新版提供了sse通道,即云函数哀求中的中心状态关照通道。
在调用chatCompletion接口时通报参数stream: true即可开启流式相应。
其他阐明

 费用



  • 如果您本身去ai厂商申请和缴费,好比openai,则缴费后在uni-ai中设置相干key即可利用。
  • 如果您利用uni-ai自动分配的ai服务,现在也是免费的。未来若计费会提前公告。未来计费原则也必然是市场标准代价,不会出现藐视性、收割性定价。
常见用途场景

现阶段的ai,被称之为AIGC,即天生式ai。我们必要相识它善于和不善于的地方,并管理预期。
ai是模糊的、概率的,不是精确的,不要问天生式ai数学题。
从本质来讲,天生式ai不是在回答标题,而是在通过前文猜测下文。你的前文可以恰恰是一个标题,也可以不是标题。
ai会推理出很多下文并打分,选择最高分的下文返回给你。但“不知道”这个下文的打分往往不如其他胡诌的下文得分高,所以你很少会遇到ai的下文是“不知道”。
ai会利用互联网上的数据举行学习训练,但训练语料不会包罗最新的知识和互联网上未公开的知识。好比openai的训练数据是2021年9月从前的数据。
虽然ai学习了互联网的知识,但它不是复读机,它把知识压缩形成本身的明白。你的前文和它的明白碰撞出它的下文(所以符合的前文,也就是prompt很紧张)。
越好的ai,其知识储备、明白和推理能力越优秀,猜测的下文可以更迫近真实,乃至凌驾平常人的程度。
目宿世成式ai的紧张用途有:


  • 文章天生、润色、续写:常见于天生文案、文书、标语、名字、营销邮件、笑话、诗词等。uni-cms中,已经内置了这个功能
  • 闲聊:感情咨询、知识问答。由于谈天本身有不少代码工作量,保举利用现成开源项目。好比单纯的ai谈天模板uni-ai-chat,或专业的im工具、支持私聊群聊的uni-im
  • 翻译:各国各民族语言翻译
  • 代码解释增补和简单代码天生:需利用openai,其他provider在代码范畴的能力暂时还不可
如对天生内容有较高的正确性要求,一方面利用gpt-4等高级的模子;另一方面必要追加专业乃至私有的语料训练。
现在gpt-4未开放微调,但uni-ai正在开发其他私有数据训练方案,后续会升级提供。
gpt-4是现在正确性最高的ai,也是最贵的ai。开发者需根据需求场景选择,一般的文章天生和闲聊,可以不消gpt-4。
别的想得到精良的推理结果,优化prompt前文也非常紧张。

来源:https://blog.csdn.net/qq_34274756/article/details/130671152
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则