Brownie — KI um Apparat op Android

Perséinleche Projet · Kotlin, Jetpack Compose, LiteRT-LM · Quellcode op GitHub

Problem

All KI-Assistent, dee wierklech eppes ka, ass um Handy en einfache Client. De Modell läit am Rechenzentrum vun engem anere, d'Gespréich reest do hin an zréck, an d'Ganzt hält op ze funktionéieren, wann een am Fliger sëtzt oder hannert der Firewall vun enger Firma ass. De Schutz vun de Donnéeën ass do e Versprieche vun enger Politik an net eng Eegeschaft vum System.

Ech wollt wëssen, wat wierklech iwwreg bleift, wann een op dat alles verzicht — keng Chatbot-Demo, mee e richtegen Agent, deen Tools oprifft, Fichiere liest a schreift, sech vun enger Sessioun op déi aner erënnert an den Apparat steiert, a komplett op der Hardware leeft, déi een an der Täsch huet.

Aschränkung

En Handy ass kee Server. Et gëtt kee Swap, deen eppes bréngt, de Späicher gëtt mat all anerer App gedeelt, déi leeft, an eng Inferenz, déi laang dauert, stéisst direkt un déi thermesch Limitte vum Apparat. D'Gewiichter vum Modell, d'Tool-Schicht, den Historique vum Gespréich an d'Interface mussen alleguer an dat eranpassen, wat en Android-Apparat aus der Mëttelklass iwwreg huet — an d'Interface muss flësseg bleiwen, während de Modell schafft.

Déi zweet Aschränkung hunn ech mir selwer opgeluecht, a si war méi schwéier: keng Hëllef aus der Cloud. En hybriden Opbau, deen einfach e Modell aus der Distanz oprifft, wann den Apparat u seng Grenze stéisst, hätt all Demo méi flësseg gemaach an de Grond fir dëse Projet futti gemaach.

Entscheedungen

Resultat

120 Kotlin-Fichieren op fënnef Moduler, 200 Commits. Tool-Opruff iwwer méi Ronnen, bis zu zéng Iteratioune pro Message, Äntwerten am Streaming mat Tool-Chips an der Interface, Fichier-Tools an enger Sandbox, Kontakter, Kalenner, Clipboard, autonom Aufgabe mat Zäitplang, d'Liese vum Ecran an d'Automatiséierung vum Apparat iwwer d'Accessibility-APIs, Web-Extraktioun iwwer eng WebView, a Sprooch an all zwou Richtungen.

Keng Cloud, kee API-Schlëssel, keng Donnéeën, déi den Handy verloossen. Nom eemolegen Download vum Modell lued de Moteur a fënnef bis fofzeng Sekonnen an d'App funktionéiert ouni Netz.

Wat ech anescht maache géif

D'Tool-Schicht ass der App iwwer de Kapp gewuess. :core:tools ass um Enn méi grouss ginn wéi de Modul vun der Interface — véierefofzeg Fichiere géint eenavéierzeg — well all nei Fäegkeet eng weider Ëmsetzung bedeit huet, déi mat an d'App kompiléiert gouf. De MCP-Client, deen ech an der v6 derbäigesat hunn, huet déi richteg Form, an do géif ech ufänken: e klengt agebaute Set fir dat, wat wierklech Zougrëff op de Prozess brauch, an alles anescht hannert engem Tool-Server, dee sech änneren kann, ouni datt en APK erausgi muss ginn. Ech si spéit bei déi Grenz komm; si hätt déi éischt sollte sinn.