Views
No views yet
CreateEventRequest JSON object for backend API consumption.google/gemma-2-2b-itpip install transformers peft torch1from transformers import AutoTokenizer, AutoModelForCausalLM
2from peft import PeftModel
3import torch
4import json
5
6# Load base model
7base_model = AutoModelForCausalLM.from_pretrained(
8 "google/gemma-2-2b-it",
9 device_map="auto",
10 dtype=torch.float16
11)
12
13# Load fine-tuned adapter
14model = PeftModel.from_pretrained(base_model, "YOUR_USERNAME/gemma-event-parser")
15tokenizer = AutoTokenizer.from_pretrained("YOUR_USERNAME/gemma-event-parser")
16
17# Define function schema
18function_schema = {
19 "name": "create_sports_event",
20 "description": "Create a new sports event from natural language description",
21 "parameters": {
22 "type": "object",
23 "properties": {
24 "sport": {"type": "string", "description": "Sport type (e.g., Soccer, Basketball, Tennis)"},
25 "venue_name": {"type": "string", "description": "Venue name"},
26 "start_time": {"type": "string", "description": "ISO 8601 format (e.g., 2026-02-07T16:00:00Z)"},
27 "max_participants": {"type": "integer", "default": 2},
28 "event_type": {
29 "type": "string",
30 "enum": ["Casual", "Light Training", "Looking to Improve", "Competitive Game"],
31 "default": "Casual"
32 }
33 },
34 "required": ["sport", "venue_name", "start_time"]
35 }
36}
37
38# Parse natural language
39def parse_event(user_query):
40 prompt = f"""<start_of_turn>user
41{user_query}
42
43Available functions:
44{json.dumps([function_schema], indent=2)}<end_of_turn>
45<start_of_turn>model
46"""
47
48 inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
49 outputs = model.generate(
50 **inputs,
51 max_new_tokens=256,
52 temperature=0.1,
53 do_sample=True,
54 top_p=0.95
55 )
56
57 result = tokenizer.decode(outputs[0], skip_special_tokens=True)
58
59 # Extract JSON
60 start = result.find("<function_call>") + len("<function_call>")
61 end = result.find("</function_call>")
62 function_call = json.loads(result[start:end].strip())
63
64 return function_call["arguments"]
65
66# Example
67query = "I want to play soccer this week Friday 4 PM @ Central Park"
68event_json = parse_event(query)
69print(json.dumps(event_json, indent=2))1{
2 "sport": "Soccer",
3 "venue_name": "Central Park",
4 "start_time": "2026-02-07T16:00:00Z",
5 "max_participants": 22,
6 "event_type": "Casual"
7}| Input | Output |
|---|---|
| "Basketball game tomorrow 6pm at Riverside Courts, competitive" | {"sport": "Basketball", "venue_name": "Riverside Courts", "start_time": "2026-02-07T18:00:00Z", "max_participants": 10, "event_type": "Competitive Game"} |
| "Tennis match Wednesday 10 AM Ashburn Park, looking to improve" | {"sport": "Tennis", "venue_name": "Ashburn Park", "start_time": "2026-02-12T10:00:00Z", "max_participants": 2, "event_type": "Looking to Improve"} |
| "Casual volleyball Saturday 2pm Beach Courts" | {"sport": "Volleyball", "venue_name": "Beach Courts", "start_time": "2026-02-08T14:00:00Z", "max_participants": 12, "event_type": "Casual"} |
q_proj, k_proj, v_proj, o_proj1@misc{gemma-event-parser-2026,
2 author = {YOUR_NAME},
3 title = {Gemma 2B Event Parser - Sports Event Function Calling},
4 year = {2026},
5 publisher = {HuggingFace},
6 url = {https://huggingface.co/YOUR_USERNAME/gemma-event-parser}
7}