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.

Funzione-Calling, On-Device

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

PiattaformaFormatoDimensioneHuggingFace
Apple (macOS / iOS)CoreML~283 MBaufklarer/FunctionGemma-270M-CoreML
Android (e Linux / Windows via Speech Core)LiteRT-LM~283 MBsoniqo/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