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.
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
| Plattform | Format | Größe | HuggingFace |
|---|---|---|---|
| Apple (macOS / iOS) | CoreML | ~283 MB | aufklarer/FunctionGemma-270M-CoreML |
| Android (sowie Linux / Windows über Speech Core) | LiteRT-LM | ~283 MB | soniqo/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
- Speech Core — C++-Engine, die die LiteRT-LM-Laufzeit und die Function-Calling-Schleife auf Linux, Windows und Android hostet.
- github.com/soniqo/speech-core — Orchestrierungs-Core und LiteRT-LM-Anbindung, einschließlich der Tool-Call-Schleife in
VoicePipeline. - github.com/soniqo/speech-swift — Apple-SDK mit der Swift-Klasse
FunctionGemma. - github.com/soniqo/speech-android — Android-SDK mit
audio.soniqo.speech.llm.FunctionGemma. - google/gemma-3-270m — Upstream-Basismodell Gemma 3 270M auf Hugging Face.