FunctionGemma 270M

FunctionGemma 270M là một biến thể của Gemma 3 được tinh chỉnh cho các lệnh gọi công cụ và hàm có cấu trúc. Thay vì văn bản tự do, mô hình phát ra ngữ pháp nghiêm ngặt dạng <start_function_call>call:NAME{...}<end_function_call> mà SDK phân tích thành các giá trị FunctionCall có kiểu. Với khoảng 283 MB trên ổ đĩa, mô hình đủ nhỏ để nạp song song với pipeline ASR + TTS trên phần cứng cỡ điện thoại và đóng vai trò “bộ định tuyến” biến câu nói của người dùng thành lệnh gọi công cụ.

Gọi hàm ngay trên thiết bị

FunctionGemma có thể được đặt vào tác nhân giọng nói ở bất cứ nơi nào bạn đang gọi LLM được lưu trữ trên máy chủ để định tuyến công cụ. Ngữ pháp nghiêm ngặt theo thiết kế, vì vậy bạn nhận lại trực tiếp các đối tượng FunctionCall đã được phân tích — không cần sửa JSON, không cần nhắc theo chế độ schema.

Nền tảng

Nền tảngĐịnh dạngKích thướcHuggingFace
Apple (macOS / iOS)CoreML~283 MBaufklarer/FunctionGemma-270M-CoreML
Android (và Linux / Windows qua Speech Core)LiteRT-LM~283 MBsoniqo/FunctionGemma-270M-LiteRT-LM

Ngữ pháp

Mô hình được huấn luyện để phát ra một lệnh gọi duy nhất (hoặc một chuỗi các lệnh gọi) được bọc trong hai token đánh dấu:

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

SDK phân tích từng lệnh gọi thành một giá trị FunctionCall(name:, arguments:) có kiểu. Các đối số được giải mã dưới dạng JSON để bạn có thể ánh xạ trực tiếp lên một Codable trong Swift hoặc một data class @Serializable trong Kotlin.

Swift (Apple, CoreML)

Trên các nền tảng Apple, FunctionGemma được cung cấp qua speech-swift dưới dạng lớp FunctionGemma. Mô hình tải CoreML từ HuggingFace khi sử dụng lần đầu và chạy trên 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)

Trên Android, mô hình được cung cấp qua speech-android dưới dạng audio.soniqo.speech.llm.FunctionGemma. Đây là một adapter bring-your-own-runtime: bạn cung cấp một instance LiteRtLmRuntime (SDK đi kèm một bản mặc định), và FunctionGemma xử lý mẫu prompt cùng việc phân tích ngữ pháp.

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"}
}

Tài liệu liên quan