# uni-ai

ai大潮来袭，如何把ai能力引入自己的应用中？几乎是每个开发者都在关心的问题。

`uni-ai`，定位就是开发者使用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是弹出一个表单，你在表单里填写：
```
产品名称：uni-app
目标用户：程序员
产品归类：前端应用开发框架
产品用途：使用该框架开发应用，一次编码可覆盖到Android app、iOS app、web、以及各家小程序，如微信、百度、支付宝、抖音、qq、京东等小程序和快应用。
卖点：高效、易学、生态完善
文风：技术风格
字数：500字
```

`uni-ai`，为你提供更好的prompt。

3. 私有数据训练

目前的大模型，没有最新的、以及企业私有的数据。各家也未开放fine-turning微调模型。

如何把私有数据灌入ai中，几乎是每个企业都关心的事情。

`uni-ai`将提供一整套方案解决这个问题，只需把私有数据按指定格式提交到你的uniCloud服务空间，就可以自动把这些最新的、私有的知识加入到ai的回答中。

4. 现成开源项目

ai能力非常常见的应用场景，有智能客服和自动生成文稿。

`uni-ai`把这些常见场景对应的应用均已做好，并且开源。开发者可以直接拿走使用。

- uni-ai-chat，独立的ai聊天模板。[详见](uni-ai-chat.md)
- uni-cms，内置了智能内容生成。[详见](https://uniapp.dcloud.net.cn/uniCloud/uni-cms.html)
- uni-im，内置了智能客服。[详见](https://uniapp.dcloud.net.cn/uniCloud/uni-im.html)

这些完善的项目，包括了前端页面（全端可用）、云对象、云数据库等全套代码，开箱即用。
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/202304112225875.png)

在线体验：[https://hellouniadmin.dcloud.net.cn/](https://hellouniadmin.dcloud.net.cn/)。

这是一个集成了uni-cms的[uni-admin](admin.md)系统。登录后，左侧内容管理中新建一篇文章，toolbar右上角有ai按钮。注意测试系统的数据会定时清除。

注意这个系统不等于uni-ai，uni-ai是底层的api。uni-cms是集成了uni-ai的开源应用。

5. 费用优化

ai能力调用，是需要按token数量付费的。token太少会回答不准，太多则费用太高。在反复对话的场景下尤其涉及之前对话记忆多久的问题。`uni-im`等集成了uni-ai的对话应用，已经内置了平衡策略。开发者无需再编写复杂的代码。

6. 后置命令处理

ai都是回答文字内容，但实际场景中经常需要自动化执行一些命令。

`uni-ai`将提供action机制，让ai变的更加强大。

例如，请ai帮忙写一段代码，其中涉及了未引用的三方插件，那么action可以通知HBuilder弹出下载这个插件的界面，不但代码生成了，其中的插件也自动下载了。


使用简单的js api，快速开始你的ai之旅吧！

```js
// 因涉及费用，ai能力调用均需在服务器端进行，也就是uniCloud云函数或云对象中
let llmManager = uniCloud.ai.getLLMManager({
  provider: 'azure'
})
llm.chatCompletion({
  messages: [{
    role: 'user',
    content: '你好，ai'
  }]
})
```

## 概念介绍@concept

### Token@concept-token

在大语言模型中，token是指自然语言文本中的最小粒度单位，也就是一个最小的单词或符号。通常情况下，自然语言文本是由一个一个的token组成的，每个token都具备自己的词性、词义等属性。

在训练大语言模型时，会使用一种称为“词向量”的技术，将每个token表示成一个向量形式，这个向量可以包含很多有用的语义信息，比如单词的词性、上下文等。模型通过这些向量来学习和理解自然语言文本，并能够完成各种任务。

在大语言模型处理任务的过程中，输入的文本会被转译为token输入到模型中，而输出则是从token转译到文本。输入token与输出token的合计数量直接影响了大语言模型所消耗的算力，所以业界通常采用基于token数量的计费模式。

也就是一次请求，输入的前文和返回的后文，合计算token总数来计费。

不同的模型在处理文本时分词方法不完全相同，可能存在特定的一句话在不同的模型里面会计算出完全不一样的token数量，此外LLM服务商在处理输入时可能会加入一些额外token。如果服务商调整tokenizer算法也可能会导致token数计算变化。

中文、英文、数字、符号，对应的token数量也不同。

对于连续对话，如果有前文记忆总结，那么总结内容也会消耗token。比如uni-ai-chat模板中已经内置了前文记忆总结功能，会额外消耗token数（如果不进行总结，要不丢失会话记忆，要不多轮对话会因为token数太多无法进行）

不同大语言模型单次请求的token最大数是有上限的，详见开发文档。

举例，同样是输入15个字，返回100个字，在minimax和gpt-3.5-turbo上，token数不一样。

```text
minimax：总token数**315**
用户：写一段关于森林的100字小作文
AI：森林，大自然的宝库，生机勃勃，郁郁葱葱。它为动物提供栖息之所，为植物提供生长的沃土。茂密的枝叶遮挡烈日，使森林内部充满凉爽，是夏日的天堂。徒步走进森林，感受清新的空气和鸟鸣，心旷神怡。树木彼此交织，形成绿色的迷宫，散发神秘的气氛。山谷河流点缀其中，与森林和谐共生，形成大自然的奇景。森林不仅是生态的保护者，也是人类心灵的避风港。

gpt-3.5-turbo：输入token数23，输出token数226，总token数**249**
用户：写一段关于森林的100字小作文
AI: 森林是地球上最美丽多样的自然景观之一。它们是许多生物的家园，包括动物和植物，这些生物相互依赖，在森林中形成一个复杂的生态系统。森林也是地球上最重要的碳吸收器之一，因此也是气候变化的关键因素之一。然而，现代人类的活动却给森林带来了极大的压力，我们的砍伐、野火和污染威胁了整个生态系统的平衡，我们必须介入保护森林。只有保护森林，才能在未来保持我们的人类家园健康和可持续。
```

## 后续版本计划

uni-ai会持续快速迭代，未来会陆续提供：
- 聚合更多ai引擎
- 提供私有数据训练方案
- 提供prompt辅助和插件市场
- 后置命令处理

## 常见用途场景

现阶段的ai，被称之为AIGC，即生成式ai。我们需要了解它擅长和不擅长的地方，并管理预期。

ai是模糊的、概率的，不是精确的，不要问生成式ai数学题。

从本质来讲，生成式ai不是在回答问题，而是在通过前文预测下文。你的前文可以恰好是一个问题，也可以不是问题。

ai会推理出很多下文并打分，选择最高分的下文返回给你。但“不知道”这个下文的打分往往不如其他胡诌的下文得分高，所以你很少会遇到ai的下文是“不知道”。

ai会使用互联网上的数据进行学习训练，但训练语料不会包含最新的知识和互联网上未公开的知识。比如openai的训练数据是2021年9月以前的数据。

虽然ai学习了互联网的知识，但它不是复读机，它把知识压缩形成自己的理解。你的前文和它的理解碰撞出它的下文（所以合适的前文，也就是prompt很重要）。

越好的ai，其知识储备、理解和推理能力越优秀，预测的下文可以更逼近真实，甚至超过普通人的水平。

目前生成式ai的主要用途有：
- 文章生成、润色、续写：常见于生成文案、文书、标语、名字、营销邮件、笑话、诗词等。[uni-cms](https://uniapp.dcloud.net.cn/uniCloud/uni-cms.html)中，已经内置了这个功能
- 闲聊：情感咨询、常识问答。由于聊天本身有不少代码工作量，推荐使用现成开源项目。比如单纯的ai聊天模板[uni-ai-chat](https://uniapp.dcloud.net.cn/uniCloud/uni-ai-chat.html)，或专业的im工具、支持私聊群聊的[uni-im](https://ext.dcloud.net.cn/plugin?id=11771)
- 翻译：各国各民族语言翻译
- 代码注释补充和简单代码生成：需使用openai，其他provider在代码领域的能力暂时还不行

**如对生成内容有较高的准确性要求，一方面使用gpt-4等高级的模型；另一方面需要追加专业甚至私有的语料训练。**

目前gpt-4未开放微调，但uni-ai正在开发其他私有数据训练方案，后续会升级提供。

gpt-4是目前准确性最高的ai，也是最贵的ai。开发者需根据需求场景选择，一般的文章生成和闲聊，可以不用gpt-4。

另外想得到良好的推理结果，优化prompt前文也非常重要。

## 合规注意

国内使用ai，需注意合规性。监管部门并不拒绝使用ai提升生产效率，但对于可能造成社会动员能力、价值观影响等政治问题、以及黄赌毒等违法问题非常敏感。

- ai生成的文章，如发布到互联网上，应当调用内容安全审查后再发布。比如[uni内容安全](https://ext.dcloud.net.cn/plugin?id=5460)。[uni-cms](https://uniapp.dcloud.net.cn/uniCloud/uni-cms.html)已经内置了uni内容安全，只需在配置里开启即可。
- 如开放给用户聊天使用，也应该通过内容安全来管控，避免出现违法违规内容，导致被下架。
- 在微信小程序等平台，名字或内容涉及ChatGPT，都会被平台封禁。所以上微信小程序时不能提及ChatGPT，也不要使用uni-ai的openai配置功能。可以使用国内ai或让uni-ai自动分配。同时输入和返回的内容都需要做安全审查，具体见上。
- 如果在企业内部通过openai提升生产力，这不涉及合规问题，可以放心使用。
