FunctionGemma 270M
FunctionGemma 270M مشتقّ من Gemma 3 جرى ضبطه لاستدعاءات الأدوات والدوال المُهيكلة. وبدلًا من النصّ الحرّ، يُنتج قواعد صارمة بالصيغة <start_function_call>call:NAME{...}<end_function_call> تحوّلها SDK إلى قيم FunctionCall مكتوبة. وبحجم نحو 283 ميغابايت على القرص، يكفي صغره ليُحمَّل جنبًا إلى جنب مع خطّ أنابيب ASR وTTS على أجهزة بفئة الهاتف، وليعمل بوصفه ”الموجِّه“ الذي يحوّل كلام المستخدم إلى استدعاء أداة.
يندمج FunctionGemma في الوكلاء الصوتيين في كلّ موضع كنت ستستدعي فيه نموذج LLM مستضافًا لتوجيه الأدوات. القواعد صارمة بحكم البنية، فتحصل مباشرة على كائنات FunctionCall مُفصَّلة — دون إصلاح JSON ودون حثّ بوضع المخطّط.
المنصّات
| المنصّة | الصيغة | الحجم | HuggingFace |
|---|---|---|---|
| Apple (macOS / iOS) | CoreML | ~283 ميغابايت | aufklarer/FunctionGemma-270M-CoreML |
| Android (وLinux / Windows عبر Speech Core) | LiteRT-LM | ~283 ميغابايت | soniqo/FunctionGemma-270M-LiteRT-LM |
القواعد
دُرِّب النموذج على إنتاج استدعاء واحد (أو سلسلة استدعاءات) محاطًا برمزَي حارسَين:
<start_function_call>call:set_timer{"minutes": 5, "label": "tea"}<end_function_call>
تُحلِّل SDK كلّ استدعاء إلى قيمة FunctionCall(name:, arguments:) مكتوبة. وتُفكَّك المُعطيات بصيغة JSON، ممّا يتيح ربطها مباشرة بـ Codable في Swift أو بفئة بيانات @Serializable في Kotlin.
Swift (Apple، CoreML)
على منصّات Apple، يُتاح FunctionGemma عبر speech-swift بوصفه فئة FunctionGemma. ويُحمَّل نموذج CoreML من HuggingFace عند الاستخدام الأوّل ويعمل على 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)
على Android، يُتاح النموذج عبر speech-android بوصفه audio.soniqo.speech.llm.FunctionGemma. وهو مُحوِّل بنمط أحضر بيئة التشغيل الخاصّة بك: تُمرِّر مثيلًا من LiteRtLmRuntime (تُرفِق SDK مثيلًا افتراضيًّا)، ويتكفّل FunctionGemma بقالب الموجِّه وتحليل القواعد.
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"}
}
قراءات إضافيّة
- Speech Core — محرّك C++ يستضيف بيئة تشغيل LiteRT-LM وحلقة استدعاء الدوال على Linux وWindows وAndroid.
- github.com/soniqo/speech-core — نواة التنسيق ووصلة LiteRT-LM، بما في ذلك حلقة استدعاء الأدوات في
VoicePipeline. - github.com/soniqo/speech-swift — Apple SDK مع فئة
FunctionGemmaبلغة Swift. - github.com/soniqo/speech-android — Android SDK مع
audio.soniqo.speech.llm.FunctionGemma. - google/gemma-3-270m — النموذج الأساس Gemma 3 270M على HuggingFace.