FunctionGemma 270M

FunctionGemma 270M ist ein von Gemma 3 abgeleitetes Modell, das für strukturierte Tool- und Funktionsaufrufe feinabgestimmt wurde. Anstelle von freiem Text gibt es eine strikte Grammatik der Form <start_function_call>call:NAME{...}<end_function_call> aus, die das SDK in typisierte FunctionCall-Werte parst. Mit rund 283 MB auf der Festplatte ist es klein genug, um neben einer ASR- und TTS-Pipeline auf Smartphone-Hardware geladen zu werden und als „Router" zu dienen, der eine Nutzeräußerung in einen Tool-Aufruf übersetzt.

Funktionsaufrufe auf dem Gerät

FunctionGemma fügt sich überall dort in Sprachagenten ein, wo Sie sonst ein gehostetes LLM für das Tool-Routing aufrufen würden. Die Grammatik ist konstruktionsbedingt strikt, sodass Sie geparste FunctionCall-Objekte direkt zurückerhalten — ohne JSON-Reparatur, ohne Schema-Mode-Prompting.

Plattformen

PlattformFormatGrößeHuggingFace
Apple (macOS / iOS)CoreML~283 MBaufklarer/FunctionGemma-270M-CoreML
Android (sowie Linux / Windows über Speech Core)LiteRT-LM~283 MBsoniqo/FunctionGemma-270M-LiteRT-LM

Grammatik

Das Modell ist darauf trainiert, einen einzelnen Aufruf (oder eine Folge von Aufrufen) auszugeben, der in zwei Sentinel-Tokens eingeschlossen ist:

<start_function_call>call:set_timer{"minutes": 5, "label": "tea"}<end_function_call>

Das SDK parst jeden Aufruf in einen typisierten FunctionCall(name:, arguments:)-Wert. Argumente werden als JSON dekodiert, sodass Sie sie direkt auf eine Swift-Codable- oder eine Kotlin-@Serializable-Datenklasse abbilden können.

Swift (Apple, CoreML)

Auf Apple-Plattformen wird FunctionGemma über speech-swift als die Klasse FunctionGemma bereitgestellt. Sie lädt das CoreML-Modell beim ersten Aufruf von Hugging Face und läuft auf der Neural Engine.

import FunctionGemma

let model = try await FunctionGemma.fromPretrained()

let tools = """
- set_timer(minutes: Int, label: String)
- get_weather(city: String)
"""

let calls = try model.callFunctions(
    tools: tools,
    userMessage: "Set a 5 minute tea timer"
)

for call in calls {
    print(call.name)       // "set_timer"
    print(call.arguments)  // ["minutes": 5, "label": "tea"]
}

Kotlin (Android, LiteRT-LM)

Unter Android wird das Modell über speech-android als audio.soniqo.speech.llm.FunctionGemma bereitgestellt. Es handelt sich um einen Adapter nach dem Prinzip „Bring your own Runtime": Sie stellen eine LiteRtLmRuntime-Instanz bereit (das SDK liefert eine Standardimplementierung mit), und FunctionGemma übernimmt das Prompt-Template und das Parsen der Grammatik.

import audio.soniqo.speech.llm.FunctionGemma
import audio.soniqo.speech.llm.LiteRtLmRuntime

val runtime = LiteRtLmRuntime.fromPretrained(context)
val model = FunctionGemma(runtime)

val tools = """
- set_timer(minutes: Int, label: String)
- get_weather(city: String)
""".trimIndent()

val calls = model.callFunctions(
    tools = tools,
    userMessage = "Set a 5 minute tea timer",
)

for (call in calls) {
    println(call.name)       // "set_timer"
    println(call.arguments)  // {"minutes": 5, "label": "tea"}
}

Weiterführende Lektüre