App Inventor 2 LLMAI2Ext 自研拓展:接入DeepSeek、Kimi、通义千问...等国内大模型

« 返回首页

更新日志

  • v2.0
    • DeepSeek 升级 V4 模型,新增思考模式开关(ThinkingEnabled)和思考强度控制(ReasoningEffort)。
    • 模型名称更新:deepseek-v4-flash(快速模型)、deepseek-v4-pro(深度思考模型);旧名 deepseek-chat / deepseek-reasoner 将于 2026/07/24 弃用。
    • 豆包 ModelName 说明澄清:接入点ID(ep- 开头)或直接填模型名(如 doubao-seed-1.6)均可,组件原样传给方舟自动识别;并明确 ImageModelName / ImageSize / ImageWatermark 仅用于文生图/图生图,对话与识图一律用 ModelName
    • 豆包(Doubao) 组件新增 文生图 / 图生图(Seedream):GenerateImage / GenerateImageFromUrl 方法 + GotImage 事件,配套 ImageModelName / ImageSize / ImageWatermark 属性。
    • 新增 豆包(Doubao) 大模型组件(火山引擎 Ark 平台),支持对话、图片/视频多模态识别。
    • 思考模式重构:推理(思考)过程改由独立的 GotReasoning 事件输出——想看思考过程就连接该事件,不连接即等于隐藏;因此 移除了 HideReason 属性,减少学习负担。
    • 多模态完善:豆包 / Kimi / 通义千问 支持图片识别(ChatWithImage / ChatWithImageUrl)与视频理解(ChatWithVideoUrl),需使用对应的视觉/视频模型。
  • v1.1
    • 支持多轮对话,新增方法 StartNewChat 可以开启一个新对话。
    • 新增 HideReason 属性,可以隐藏 DeepSeek-R1等模型的 推理过程的输出,让模型回答输出更简洁。
  • v1.0
    • 首发,支持 DeepSeek / Kimi / 通义千问,默认流式输出。

中文网开发国内大模型拓展的初衷

App Inventor 2 原生的ChatGPT组件由于是国外的,使用起来不太便捷,且各种限制。

如今我们又身处AI浪潮之中,包括很多学校在内的国内用户都有AI结合传统的App来开发具有智能App的需求,因此,必须开发拓展以接入国内大模型,对,它专门接国内大模型的,国外的不接。

拓展接口参考了原生ChatGPT组件的简洁设计,在其基础上更加简化,还引入了它不支持的流式输出模式,且默认输出模式就是流式的,类似打字机的效果,当然也可以切换非流式,模型回答完成时一把输出。

v2.0 版本现已上线,DeepSeek 组件已升级支持 V4 模型和思考模式,目前支持4个大模型的接入(DeepSeek、Kimi、通义千问、豆包),其中豆包还支持文生图/图生图。由于拓展是在最新源码平台上编译出来的,可能有些较老的平台不能很好的运行,有条件的话还是建议使用我们的平台,也会优先获得反馈支持。

当然,好的产品是需要不断迭代的,这款拓展也不例外,欢迎使用并期待您的反馈!

拓展下载

注:所有大模型拓展共一个.aix拓展文件,里面有多个拓展组件,导入.aix效果参考如下:

ext

回答效果参考如下:

llm

我们尽量将接口方法设计得简单易用,由于demo中包含了APIKey,因此不直接提供aia源码,这里以Kimi为例,附上代码块:

开始对话:

kimi

切换输出模式(默认流式输出,可切换非流式一把输出内容):

kimi

流式输出响应事件,每输出一部分内容都会回调一次,追加展示;最后一次回调时 finished 参数为

kimi

非流式输出,只回调一次,内容直接展示即可:

kimi


大模型输出的 Markdown 格式,可以结合 Markdown拓展 进行实时渲染,效果如下:

错误通知

与模型对话过程中,如果发生异常,比如APIKey认证失败等错误,将触发屏幕出现错误时 事件,然后在这个事件中可以定制个性化的错误处理逻辑。

DeepSeek

使用AppInventor2接入DeepSeek大模型(支持思考模式)。从深度求索获取 API Key »

当然也可以对接其他厂商部署的DeepSeek服务,比如百度、阿里都有部署,这里选择阿里的DeepSeek服务进行测试验证:

BaseURL 由官方的改为:https://dashscope.aliyuncs.com/compatible-mode/v1

APIKey 用阿里云的。

ModelName 指定:deepseek-v3 或 deepseek-r1 (注意:第三方的模型名称和官方的不太一样)

参考测试结果如下:

llm

属性

APIKey
模型的Api Key。从深度求索获取 API Key »
BaseURL
DeepSeek 基础 URL,默认是官方地址,可修改接入第三方DeepSeek服务地址。
ModelName
模型名称。官方模型填 deepseek-v4-flash(快速模型)或 deepseek-v4-pro(深度思考模型)。旧名 deepseek-chat / deepseek-reasoner 将于 2026/07/24 弃用。 (注意:第三方的模型名称和官方的不太一样)
StreamMode
流式输出模式是否开启,默认’真’。 流式输出,即生成内容时边计算边返回,减少等待时间,提高响应速度,适用于聊天、代码补全等场景。 不开启,则是最终仅一次返回全部内容。
ThinkingEnabled
思考模式开关。开启后模型会先思考再回答,回答质量更高但耗时更长、token 消耗更多。默认关闭。 仅对 DeepSeek V4 模型有效,其他模型会忽略此参数。
ReasoningEffort
思考强度控制。high 适合普通对话(默认),max 适合复杂推理和 Agent 类请求。 仅对 DeepSeek V4 模型有效,且 ThinkingEnabled 为真时才生效。

关于「隐藏推理过程」:v2.0 早期版本曾提供 HideReason 属性,现已移除。是否显示思考过程改由「是否连接 GotReasoning 事件」决定——想看就连接该事件,不连接即等于隐藏。

事件

GotStream(part,finished)
流式输出,每当有内容返回时都会触发该事件。part 为当前增量的部分内容,finished 标识输出是否已结束。
GotReasoning(part,finished)
模型推理(思考)过程输出事件。part 为推理过程的增量内容,finished 标识推理是否结束。仅支持推理的模型(如 DeepSeek 思考模式)会触发。如果不需要显示思考过程,不连接本事件即可(即等于隐藏);回答内容仍通过 GotStream / GotText 输出。
GotText(text)
非流式输出完成时触发该事件。text 为完整输出内容。

方法

Chat(content)
开始与 DeepSeek 大模型进行对话。
StartNewChat()
开启新对话。默认为多轮对话,此方法将开启一个全新的对话上下文。

Kimi

使用AppInventor2接入Kimi大模型。从 Moonshot 获取 API Key »

属性

APIKey
模型的Api Key。从 Moonshot 获取 API Key »
ModelName
模型名称。
StreamMode
流式输出模式是否开启,默认’真’。 流式输出,即生成内容时边计算边返回,减少等待时间,提高响应速度,适用于聊天、代码补全等场景。 不开启,则是最终仅一次返回全部内容。

事件

GotStream(part,finished)
流式输出,每当有内容返回时都会触发该事件。part 为当前增量的部分内容,finished 标识输出是否已结束。
GotReasoning(part,finished)
模型推理(思考)过程输出事件。不连接本事件即等于隐藏思考过程。回答内容仍通过 GotStream / GotText 输出。
GotText(text)
非流式输出完成时触发该事件。text 为完整输出内容。

方法

Chat(content)
开始与 Kimi 大模型进行对话。
ChatWithImage(prompt,imagePath)
多模态对话:发送本地图片+文本。需使用支持视觉的模型(如 kimi-vl-a32b)。
ChatWithImageUrl(prompt,imageUrl)
多模态对话:发送图片URL+文本。需使用支持视觉的模型。
ChatWithVideoUrl(prompt,videoUrl)
视频多模态对话:发送视频URL+文本。需使用支持视频理解的模型。
StartNewChat()
开启新对话。默认为多轮对话,此方法将开启一个全新的对话上下文。

阿里通义千问

使用AppInventor2接入阿里通义千问大模型。从阿里云获取 API Key »

llm

属性

APIKey
模型的Api Key。从阿里云获取 API Key »
ModelName
模型名称。
StreamMode
流式输出模式是否开启,默认’真’。 流式输出,即生成内容时边计算边返回,减少等待时间,提高响应速度,适用于聊天、代码补全等场景。 不开启,则是最终仅一次返回全部内容。

事件

GotStream(part,finished)
流式输出,每当有内容返回时都会触发该事件。part 为当前增量的部分内容,finished 标识输出是否已结束。
GotReasoning(part,finished)
模型推理(思考)过程输出事件。不连接本事件即等于隐藏思考过程。回答内容仍通过 GotStream / GotText 输出。
GotText(text)
非流式输出完成时触发该事件。text 为完整输出内容。

方法

Chat(content)
开始与千问大模型进行对话。
ChatWithImage(prompt,imagePath)
多模态对话:发送本地图片+文本。需使用支持视觉的模型(如 qwen-vl-plus)。
ChatWithImageUrl(prompt,imageUrl)
多模态对话:发送图片URL+文本。需使用支持视觉的模型。
ChatWithVideoUrl(prompt,videoUrl)
视频多模态对话:发送视频URL+文本。需使用支持视频理解的模型(如 qwen-vl-max)。
StartNewChat()
开启新对话。默认为多轮对话,此方法将开启一个全新的对话上下文。

豆包

使用 AppInventor2 接入字节跳动豆包大模型(火山引擎 Ark 平台),支持对话、图片/视频多模态识别,以及 文生图 / 图生图(Seedream)。从火山引擎获取 API Key 及接入点 »

豆包的 ModelName对话/识图模型:可以是接入点ID(ep- 开头,在 Ark 平台「在线推理」创建),也可直接填模型名(如 doubao-seed-1.6,需 API Key 鉴权,默认最新版)——两者均可,组件原样传给方舟自动识别。注意:对话(Chat)和识图(ChatWithImage / ChatWithImageUrl / ChatWithVideoUrl)都用 ModelName只有文生图/图生图(GenerateImage / GenerateImageFromUrl)用独立的图片模型(如 doubao-seedream-4-0-250828),填入 ImageModelName

文生图/图生图返回的是一个 临时图片URL(通过 GotImage 事件返回),可直接用 图像 组件显示;该URL有时效,建议尽快下载保存到本地。

属性

APIKey
火山引擎 API Key。从火山引擎获取 API Key »
BaseURL
API 基础URL,默认火山引擎 Ark 平台地址 https://ark.cn-beijing.volces.com/api/v3
ModelName
对话/识图模型。两种填法均可:① 接入点ID(ep- 开头,如 ep-20250101xxxxx,在 Ark 平台「在线推理」创建);② 直接填模型名(如 doubao-seed-1.6doubao-pro-32k-240515,需 API Key 鉴权,默认最新版)。组件原样传给方舟,方舟自动识别。
StreamMode
流式输出模式是否开启,默认’真’。不开启则最终一次返回全部内容。
ImageModelName
【仅文生图/图生图用】生图模型,如 doubao-seedream-4-0-250828doubao-seedream-5.0-lite。对话(Chat)和识图(ChatWithImage 等)都用 ModelName、不读本属性,只有 GenerateImage / GenerateImageFromUrl 才用它。
ImageSize
【仅文生图】生成图片尺寸:可填 1K/2K/4K,或具体像素如 1024x10242048x2048。默认 2K
ImageWatermark
【仅文生图】生成的图片是否添加水印,默认不加。

事件

GotStream(part,finished)
流式输出,每当有内容返回时都会触发该事件。part 为当前增量的部分内容,finished 标识输出是否已结束。
GotReasoning(part,finished)
模型推理(思考)过程输出事件。不连接本事件即等于隐藏思考过程。回答内容仍通过 GotStream / GotText 输出。
GotText(text)
非流式输出完成时触发该事件。text 为完整输出内容。
GotImage(imageUrl)
图片生成完成时触发。imageUrl 为生成图片的临时URL(可用图像组件显示,建议尽快下载保存——该URL有时效)。

方法

Chat(content)
开始与豆包大模型对话。
ChatWithImage(prompt,imagePath)
多模态对话:发送本地图片+文本。
ChatWithImageUrl(prompt,imageUrl)
多模态对话:发送图片URL+文本。
ChatWithVideoUrl(prompt,videoUrl)
视频多模态对话:发送视频URL+文本。需使用支持视频理解的模型。
GenerateImage(prompt)
文生图:根据文字描述生成图片。生成完成会触发 GotImage 事件返回图片URL。prompt 为图片描述(≤300汉字)。
GenerateImageFromUrl(prompt,imageUrl)
图生图:基于一张参考图URL + 文字描述生成新图片。生成完成触发 GotImage 事件。
StartNewChat()
开启新对话。默认为多轮对话,此方法将开启一个全新的对话上下文。

Q & A

Q:使用标签进行输出,内容较多部分内容被隐藏,该如何让其可上下滚动呢?

A:请参考《App Inventor 2 标签内容过多,如何做到可上下滑动?》


Q:如何把图片发给大模型?是否支持此项功能?

A:现已支持!使用支持视觉的模型(如豆包、Kimi、通义千问的多模态模型),调用 ChatWithImage(本地图片)或 ChatWithImageUrl(图片网络地址)即可把图片发给大模型识别。此外豆包还支持反向的 文生图/图生图GenerateImage / GenerateImageFromUrl)。

文档反馈