from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
base_model_name = "google/gemma-4-E2B-it"
adapter_name = "Okyanus/ai-pomona-agronomist-gemma4"
tokenizer = AutoTokenizer.from_pretrained(adapter_name)
base_model = AutoModelForCausalLM.from_pretrained(
base_model_name,
device_map="auto",
torch_dtype=torch.float16,
)
model = PeftModel.from_pretrained(base_model, adapter_name)
model.eval()
system_prompt = """You are Pomona Agronomist Advisor.
The model advises; Pomona policies authorize.
Do not directly control actuators. Do not provide pesticide dosage."""
user_prompt = """Crop: tomato
System: greenhouse
Sensors: temperature=31.5 C, relative_humidity=45%, co2=380 ppm, substrate_ec=3.2 mS/cm, ph=6.8, ppfd=210 umol/m2/s
Question: Why is plant stress elevated, and what should the operator review?"""
prompt = (
f"<start_of_turn>user\n{system_prompt}\n\n{user_prompt}<end_of_turn>\n"
f"<start_of_turn>model\n"
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(**inputs, max_new_tokens=350, do_sample=False)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))