@ capgo/ 电容- llm
从 Capacitor app 上运行设备上的大型语言模型: iOS上的Apple Intelligence,Android上的双子纳诺或LiteRT-LM,浏览器中的Gemma网络模型. 私人和免费的每个请求.
🤖 建筑与AI编码代理? 安装 Capgo 技能 所以克劳德代码,代码,光标,副驾驶,或双子座CLI知道如何安装和使用
@capgo/capacitor-llm在您的电容应用程序中:npx skills add Cap-go/capgo-skills。然后问你的经纪人: "把@capgo/capacor-llm 添加到我的Capacitor app上并把它接上" 代理设置指南 • 妇女 主机磁共振
主要特点
- 聊天会数字 :
createChat()财务报告和审定财务报表sendMessage(),带有流线textFromAi, (中文(简体) ),aiFinished财务报告和审定财务报表generationError事件. - 型号选择数字 :
setModel()选择苹果智能、双子纳米或自定义.litertlm型号. - 模型下载数字 :
downloadModel()用downloadProgress事件. - 准备情况数字 :
getReadiness()编辑readinessChange事件显示模型何时可以回答. - 平台: iOS,Android和Web. 互联网档案馆的存檔,存档日期2013-12-02. Web 使用 Gemma 模型通过
@mediapipe/tasks-genai。它从 CDN 中装入运行时间,并且需要模型文件,所以只有在两者都可以在本地使用时才能下线.
Capacitor的On-device LLM支持.
现行平台战略:
- iOS:默认情况下的苹果智能,加上LiteRT-LM
.litertlmswiftPM 集成中的自定义模型.litertlm或者说modelType: 'litertlm'被通过 - Android: 双子座纳米系统模型在已可用的辅助设备上, LiteRT-LM for
.litertlm捆绑和相容回落的相容性.task模型 - Web: Gemma 4 网络模型通过
@mediapipe/tasks-genai
文档
最完整的插件文件可用于 capgo.app/docs/插件/illm。 。 。 .
兼容性
| 插件版本 | 电容兼容性 | 维护 |
|---|---|---|
| v八.。 。 。 . | v八.。 。 。 . | ✅ |
| v.。 。 。 . | v.。 。 。 . | 应要求 |
| v6 (英语).。 。 。 . | v6 (英语).。 。 。 . | ❌ |
| 页:1.。 。 。 . | 页:1.。 。 。 . | ❌ |
说明: 插件主版本遵循Capacitor主版本. 使用匹配您的电容安装的版本 .
安装
npm install @capgo/capacitor-llm
npx cap sync
如果您使用网络执行, 也安装 MediaPipe 对等依赖 :
npm install @mediapipe/tasks-genai
模型设置
iOS系统
建议路径 :
- 使用苹果智能设备
path: 'Apple Intelligence' - 需要 iOS 26.0+
自定义 iOS liteRT- LM 路径 :
- 仅当插件通过 Swift 套件管理器整合到 iOS 应用程序时才可用
- 使用正式的 LitERT-LM Swift API 和预建的 iOS x框架
.litertlm模型 - 仅当路径结束于
.litertlm或者说modelType: 'litertlm'被通过 - CocoaPods 建立苹果智能和遗留的MediaPipe
.task兼容路径 - 其它自定义的 iOS 模型类型为后向兼容保留了遗留的 MediaPipe 兼容路径
示例
import { CapgoLLM } from '@capgo/capacitor-llm';
await CapgoLLM.setModel({ path: 'Apple Intelligence' });
const chat = await CapgoLLM.createChat();
机器人
建议路径 :
- 使用双子纳米
path: 'Gemini Nano'当Android设备已经通过 AICore 可用时 - 使用 LitERT- LM 软件
.litertlm捆绑 - Gemma 4 E2B 和 E4B 是很好的默认实例
- 模式向公众提供
litert-community拥抱面部重置
双子纳米系统模型示例:
await CapgoLLM.setModel({ path: 'Gemini Nano' });
const chat = await CapgoLLM.createChat();
可选: ML Kit GenAI Agent API (Gemini Nano代理工作流程)
Google的ML Kit GenAI Agent API (英语:com.google.mlkit:genai-agent:1.0.0-alpha1) 添加 AgentRunner 在双子座纳诺上方(包括支持设备上的双子座纳诺v4)管理多回合会话. 没错 选入 因此,不使用它的程序不会拉起依赖性.
文档 :
启用本地依赖 (选一):
capacitor.config.ts(运行)capacitor:sync:before钩:
plugins: {
CapgoLLM: {
android: {
genaiAgent: {
include: true,
dependencyType: 'implementation',
},
},
},
},
- 应用
android/gradle.properties或者说variables.gradle数字 :
capacitorLLM.genaiAgent.include=true
使用代理后端 (违约仍然是直接的) genai-prompt 访问 :
await CapgoLLM.setModel({
path: 'Gemini Nano',
androidGeminiBackend: 'agent',
});
所需经费: Android API 26+,Android 14 (API 34)+ 与 AICore 进行代理预览,启用时可特林 2.3+在插件中. 参见Google的双子纳米模型版本设备支持列表.
倒计时 : 若为 genai-agent 未包括, androidGeminiBackend: 'agent' 失败的模型加载带有明显的错误 。 使用 androidGeminiBackend: 'prompt' (默认)或省略已存在的 Point API 路径的字段.
仅编译 : 设定 dependencyType: 'compileOnly' 在配置中, 当您的应用程序添加时 implementation 'com.google.mlkit:genai-agent:1.0.0-alpha1' 自己来.
用下载的 Gemma 4 模式快速启动 :
import { CapgoLLM } from '@capgo/capacitor-llm';
const result = await CapgoLLM.downloadModel({
url: 'https://huggingface.co/litert-community/gemma-4-E2B-it-litert-lm/resolve/main/gemma-4-E2B-it.litertlm?download=true',
filename: 'gemma-4-E2B-it.litertlm',
});
await CapgoLLM.setModel({
path: result.path,
modelType: 'litertlm',
maxTokens: 4096,
topk: 40,
temperature: 0.8,
});
const chat = await CapgoLLM.createChat();
捆绑资产示例 :
await CapgoLLM.setModel({
path: '/android_asset/gemma-4-E2B-it.litertlm',
modelType: 'litertlm',
maxTokens: 4096,
});
遗产兼容性 :
- 现有 Android
.task模型仍然通过兼容路径加载 - 新的一体化应更可取
.litertlm
网页
网络执行使用 @mediapipe/tasks-genai 与网络准备的模型文物.
Gemma 4 网络模型在移动 LitERT- LM 捆绑并使用旁边发布 *-web.task。 。 。 .
示例
await CapgoLLM.setModel({
path: 'https://huggingface.co/litert-community/gemma-4-E2B-it-litert-lm/resolve/main/gemma-4-E2B-it-web.task?download=true',
modelType: 'task',
maxTokens: 4096,
});
使用量
import { CapgoLLM } from '@capgo/capacitor-llm';
const { readiness } = await CapgoLLM.getReadiness();
console.log('LLM readiness:', readiness);
const { id } = await CapgoLLM.createChat();
await CapgoLLM.addListener('textFromAi', (event) => {
console.log('chunk', event.text);
});
await CapgoLLM.addListener('aiFinished', ({ chatId }) => {
console.log('finished', chatId);
});
await CapgoLLM.sendMessage({
chatId: id,
message: 'Explain why local inference is useful on mobile.',
});
页:1
- Android现在更喜欢LiteRT-LM和Gemma 4风格
.litertlm捆绑. - iOS LiteRT-LM自定义模型支持现在使用官方的LiteRT-LM Swift API和预建的iOS 二进制,只在本插件的 SwiftPM 集成中提供,并且只选择用于明文
.litertlm模特们. - CocoaPods 建立在 iOS 上应该使用 Apple Intelligence 或 遗留的 MediaPipe
.task兼容路径 . - 网络使用 Gemma 4
*-web.task文物通过@mediapipe/tasks-genai。 。 。 . - Apple Intelligence仍然是iOS中首选的缺省.
createChat()sendMessage(...)getReadiness()setModel(...)downloadModel(...)addListener('textFromAi', ...)addListener('aiFinished', ...)addListener('generationError', ...)addListener('downloadProgress', ...)addListener('readinessChange', ...)getPluginVersion()- 接口
与设备语言模型交互的 LLM 插件接口
创建Chat ()
createChat() => Promise<{ id: string; instructions?: string; }>
创建新聊天会话
回返情况: Promise<{ id: string; instructions?: string; }>
发送消息(...)
sendMessage(options: { chatId: string; message: string; }) => Promise<void>
在特定聊天会话中向AI发送消息
| 参数 | 类型 | 说明 |
|---|---|---|
options | { chatId: string; message: string; } | - 要发送的聊天id和消息 |
准备状态( )
getReadiness() => Promise<{ readiness: string; }>
获得 LLM 的准备状态
回返情况: Promise<{ readiness: string; }>
设置模式(...)
setModel(options: ModelOptions) => Promise<void>
设置模型配置
- iOS:使用"Apple Intelligence"作为系统模型的路径. 自定义 LitERT- LM
.litertlm模型仅在此插件通过 Swift 套件管理器集成时在 iOS 上支持, 并且仅在选中时使用modelType: 'litertlm'或路径结束于.litertlm。 。 。 . - Android:在已经可用的辅助设备上为AICore系统模型使用"Gemini Nano". 设定
androidGeminiBackend: 'agent'用于使用 ML Kit GenAI 代理 API(com.google.mlkit:genai-agent),用于管理下的多回合双子座纳诺会(选入本土依赖). 偏好 LitERT-LM 软件.litertlm自定义模型的捆绑; 遗留的 MediaPipe.task模式仍然被支持 - Web: 为
@mediapipe/tasks-genai诸如Gemma 4 等*-web.task
| 参数 | 类型 | 说明 |
|---|---|---|
options | ModelOptions | - 模型配置 |
下载模式(...)
downloadModel(options: DownloadModelOptions) => Promise<DownloadModelResult>
从 URL 下载模型并将其保存到合适的位置
- iOS: 下载到应用程序文档目录
- Android: 下载到应用程序的文件目录
| 参数 | 类型 | 说明 |
|---|---|---|
options | DownloadModelOptions | - 下载配置 |
回返情况: Promise<DownloadModelResult>
添加聆听器( 从 Ai' 添加文本,...)
addListener(eventName: 'textFromAi', listenerFunc: (event: TextFromAiEvent) => void) => Promise<{ remove: () => Promise<void>; }>
为从 AI 收到的文本添加一个听众
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | 'textFromAi' | - 事件名称“ 来自Ai的文本” |
listenerFunc | (event: TextFromAiEvent) => void | - 文本事件召回函数 |
回返情况: Promise<{ remove: () => Promise<void>; }>
添加倾听器( “ 已完成 ” ,...)
addListener(eventName: 'aiFinished', listenerFunc: (event: AiFinishedEvent) => void) => Promise<{ remove: () => Promise<void>; }>
为 AI 补全事件添加一个听众
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | 'aiFinished' | - 事件名称"完成" |
listenerFunc | (event: AiFinishedEvent) => void | - 完成事件的召回功能 |
回返情况: Promise<{ remove: () => Promise<void>; }>
添加倾听器( “ 生成错误 ” ,...)
addListener(eventName: 'generationError', listenerFunc: (event: GenerationErrorEvent) => void) => Promise<{ remove: () => Promise<void>; }>
为流出后发生的生成失败添加一个监听器
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | 'generationError' | - 事件名称 '生成错误' |
listenerFunc | (event: GenerationErrorEvent) => void | - 生成错误的召回功能 |
回返情况: Promise<{ remove: () => Promise<void>; }>
添加倾听器( “ 下载进度 ” ,...)
addListener(eventName: 'downloadProgress', listenerFunc: (event: DownloadProgressEvent) => void) => Promise<{ remove: () => Promise<void>; }>
为模型下载进度事件添加一个收听器
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | 'downloadProgress' | - 事件名称“ 下载进度 ” |
listenerFunc | (event: DownloadProgressEvent) => void | - 进度活动的召回功能 |
回返情况: Promise<{ remove: () => Promise<void>; }>
添加倾听器( “ 准备变化 ” ,...)
addListener(eventName: 'readinessChange', listenerFunc: (event: ReadinessChangeEvent) => void) => Promise<{ remove: () => Promise<void>; }>
为准备状态变化添加一个倾听器
| 参数 | 类型 | 说明 |
|---|---|---|
eventName | 'readinessChange' | - 事件名称 "准备" 变化 |
listenerFunc | (event: ReadinessChangeEvent) => void | - 准备活动的召回功能 |
回返情况: Promise<{ remove: () => Promise<void>; }>
获取 PluginVersion ()
getPluginVersion() => Promise<{ version: string; }>
获取本地 Capacitor 插件版本 .
回返情况: Promise<{ version: string; }>
自: 1.0.0 (单位:千美元)
接口
模式选项
模型配置选项
仅 path 需要时间。 所有其他属性都是可选的覆盖.
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
path | string | 模型路径,为iOS上的苹果系统模型"Apple Intelligence",或Android AICore系统模型上已经可用的"Gemini Nano". 在iOS上, 自定义 .litertlm 模型要求插件通过Swift套件管理器集成. Gemma 4 个实例 .litertlm 移动式和 *-web.task 在网络上. | |
modelType | string | 可选的 模型文件类型/扩展(例如) task, (中文(简体) ), bin, (中文(简体) ), litertlm, (中文(简体) ), gemini-nano,或 gemini-nano-agent) (中文(简体) ). 如果不提供,则取出路径. 在 iOS 上, LiteRT- LM 仅在此决定时被选中 litertlm;所有其他自定义类型都保留了遗留的MediaPipe兼容路径. | |
maxTokens | number | 模型控件的最大符号数 | |
topk | number | 模型在每个步骤考虑的符号数 | |
temperature | number | 随机生成量(0.0-1.0) | |
randomSeed | number | 可选的 随机种子为一代. | |
backend | 'gpu' | 'cpu' | 可选的 iOS(SwiftPM)和Android的LiteRT-LM引擎后端. 使用 cpu 为稳定的长辈。 在省略后,iOS更喜欢CPU后倒回GPU;Android使用CPU. | 8.2.0 (中文(简体) ) |
androidGeminiBackend | 'prompt' | 'agent' | 可选的 仅限双子座纳米融合. 默认为 prompt (ML Kit语 genai-prompt 直接模式访问)。 使用 agent 为 ML Kit GenAI 代理 API (com.google.mlkit:genai-agent与 AgentRunner 管理的会议。 要求选择进入格拉德的本土依赖(见README). 在iOS和网络上被忽略. | 8.2.0 (中文(简体) ) |
下载模式结果
模型下载结果
| Prop | 类型 | 说明 |
|---|---|---|
path | string | 保存模型的路径 |
companionPath | string | 保存同伴文件的路径( 如果适用) |
下载模式选项
下载模型的选项
仅 url 需要时间. companionUrl 财务报告和审定财务报表 filename 是可选的.
| Prop | 类型 | 说明 |
|---|---|---|
url | string | 要下载的模型文件的 URL |
companionUrl | string | 可选: 遗留模式格式的同伴文件的 URL |
filename | string | 可选: 自定义文件名( URL 的默认文件名) |
来自AiEvent 的文本
从大赦国际收到的文本事件数据
| Prop | 类型 | 说明 |
|---|---|---|
text | string | AI的文本内容 - 这是一个递增块,而不是全文 |
chatId | string | 聊天会话编号 |
isChunk | boolean | 无论是完整的块( 真) 还是部分流出数据( 假) |
已完成的晚会
AI完成的事件数据
| Prop | 类型 | 说明 |
|---|---|---|
chatId | string | 完成的聊天会话 ID |
生成错误事件
生成失败事件数据
chatId 是可选的,在失败没有与特定聊天捆绑时可能会被省略.
| Prop | 类型 | 说明 |
|---|---|---|
chatId | string | 可选的 如果可用的话, 则失败的聊天会话 ID . |
error | string | 描述失败的错误消息 |
下载进度事件
下载进度事件数据
| Prop | 类型 | 说明 |
|---|---|---|
progress | number | 完成下载的百分比(0-100) |
totalBytes | number | 要下载的字节总数 |
downloadedBytes | number | 迄今下载的字节数 |
变化中的活动
准备状态变化的事件数据
| Prop | 类型 | 说明 |
|---|---|---|
readiness | string | 准备状态 |
示例应用
退款包括一个 example-app/ 证明:
- IOS上的苹果智能
- Gemma 4 LiteRT-LM 在Android上的模型下载
见 实例应用/README.md 用于本地设置指令.