Traduzione automatica · Originale inglese
FunctionGemma 270M
Function Gemma 270M è un Gemma 3 derivato fine-tuned per gli strumenti strutturati e le chiamate di funzione. Invece di testo libero, emette un rigoroso <start_function_call>call:NAME{...}<end_function_call> la grammatica che la SDK parses in digitato FunctionCall Valori. A circa 283 MB su disco, è abbastanza piccolo da caricare accanto a una pipeline ASR + TTS su hardware di classe telefonica e servire come il "router" che trasforma l'enunciazione di un utente in una invocazione di strumento.
FunctionGemma slot in agenti vocali in qualsiasi altro luogo si possa altrimenti chiamare un LLM per il routing degli strumenti. La grammatica è rigida per la costruzione, quindi si ottiene indietro parsed FunctionCall
Piattaforme
| Piattaforma | Formato | Dimensione | HuggingFace |
|---|---|---|---|
| Apple (macOS / iOS) | CoreML | ~283 MB | aufklarer/FunctionGemma-270M-CoreML |
| Android (e Linux / Windows via Speech Core) | LiteRT-LM | ~283 MB | soniqo/FunctionGemma-270M-LiteRT-LM |
Grammatica
Il modello è formato per emettere una singola chiamata (o una sequenza di chiamate) avvolta in due token sentinelle:
<start_function_call>call:set_timer{"minutes": 5, "label": "tea"}<end_function_call>
La SDK parses ogni chiamata in un digitato FunctionCall(name:, arguments:) valore. Gli argomenti sono decodificati come JSON in modo da poterli mappare direttamente su uno Swift Codable o un Kotlin @Serializable classe di dati.
Swift (Apple, CoreML)
Su piattaforme Apple FunctionGemma è esposto attraverso speech-swift come il FunctionGemma classe. Carica il modello CoreML da HuggingFace al primo utilizzo e funziona sulla 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)
Su Android il modello è esposto attraverso speech-android come audio.soniqo.speech.llm.FunctionGemma. Si tratta di un adattatore a tempo pieno porta-proprio: fornisci un LiteRtLmRuntime istanza (il SDK navi uno predefinito), e FunctionGemma gestisce il modello di richiesta e la parsing grammaticale.
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"}
}
Ulteriori letture
- Speech Core — motore C++ che ospita il runtime LiteRT-LM e il loop di regolazione della funzione su Linux, Windows e Android.
- github.com/soniqo/speech-core — nucleo di orchestrazione e colla LiteRT-LM, compreso il
VoicePipelineanello portautensili. - github.com/soniqo/speech-swift — Apple SDK con
FunctionGemmaClasse Swift. - github.com/soniqo/speech-android — Android SDK con
audio.soniqo.speech.llm.FunctionGemma. - Google/gemma-3-270m — a monte Gemma 3 270Modello base M su HuggingFace.