Text Generation
PEFT
Joblib
Safetensors
GGUF
agriculture
commodities
crop-supply
tool-use
function-calling
sugarcane
corn
soybeans
futures
qwen2.5
finance
conversational
Instructions to use edoggy/commodities-crop-analyst-7b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use edoggy/commodities-crop-analyst-7b with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-7B-Instruct") model = PeftModel.from_pretrained(base_model, "edoggy/commodities-crop-analyst-7b") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use edoggy/commodities-crop-analyst-7b with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf edoggy/commodities-crop-analyst-7b:Q4_K_M # Run inference directly in the terminal: llama cli -hf edoggy/commodities-crop-analyst-7b:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf edoggy/commodities-crop-analyst-7b:Q4_K_M # Run inference directly in the terminal: llama cli -hf edoggy/commodities-crop-analyst-7b:Q4_K_M
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf edoggy/commodities-crop-analyst-7b:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama cli -hf edoggy/commodities-crop-analyst-7b:Q4_K_M
Use Docker
docker model run hf.co/edoggy/commodities-crop-analyst-7b:Q4_K_M
- Llama new
- LM Studio
- Jan
- vLLM
How to use edoggy/commodities-crop-analyst-7b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "edoggy/commodities-crop-analyst-7b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "edoggy/commodities-crop-analyst-7b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/edoggy/commodities-crop-analyst-7b:Q4_K_M
- Ollama
How to use edoggy/commodities-crop-analyst-7b with Ollama:
ollama run hf.co/edoggy/commodities-crop-analyst-7b:Q4_K_M
- Unsloth Desktop
- Pi
How to use edoggy/commodities-crop-analyst-7b with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf edoggy/commodities-crop-analyst-7b:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "edoggy/commodities-crop-analyst-7b:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use edoggy/commodities-crop-analyst-7b with Docker Model Runner:
docker model run hf.co/edoggy/commodities-crop-analyst-7b:Q4_K_M
- Lemonade
How to use edoggy/commodities-crop-analyst-7b with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull edoggy/commodities-crop-analyst-7b:Q4_K_M
Run and chat with the model
lemonade run user.commodities-crop-analyst-7b-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use edoggy/commodities-crop-analyst-7b with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf edoggy/commodities-crop-analyst-7b:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default edoggy/commodities-crop-analyst-7b:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use edoggy/commodities-crop-analyst-7b with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf edoggy/commodities-crop-analyst-7b:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "edoggy/commodities-crop-analyst-7b:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
File size: 3,571 Bytes
f9fdd57 9783794 0816e1d f9fdd57 0816e1d f9fdd57 0816e1d f9fdd57 0816e1d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import sys, json, re, argparse, gradio as gr
from crop_tools import execute
ap = argparse.ArgumentParser(); ap.add_argument("--backend", default="ollama", choices=["ollama","hf"])
ap.add_argument("--model", default="commodities-crop-analyst"); ap.add_argument("--adapter", default="."); ap.add_argument("--base", default="Qwen/Qwen2.5-7B-Instruct")
args = ap.parse_args()
import datetime
SYSTEM = (open("system_prompt.txt").read() if args.backend == "ollama" else [json.loads(l) for l in open("data/val_v2.jsonl")][0]["messages"][0]["content"]) + f"\nToday's date is {datetime.date.today().isoformat()}. Resolve relative dates (last year, a year ago, last month) from it. Price data runs 2017-01-03 to {open('data/futures_daily.parquet','rb') and __import__('pandas').read_parquet('data/futures_daily.parquet').date.max()}."
if args.backend == "hf":
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
from peft import PeftModel
tok = AutoTokenizer.from_pretrained(args.base)
model = PeftModel.from_pretrained(AutoModelForCausalLM.from_pretrained(args.base, quantization_config=BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16), device_map="auto"), args.adapter).eval()
def gen(msgs, n=300):
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt", return_dict=True)["input_ids"].to(model.device)
return tok.decode(model.generate(ids, max_new_tokens=n, do_sample=False)[0][ids.shape[1]:], skip_special_tokens=True).strip()
else:
import requests
def gen(msgs, n=300):
r = requests.post("http://localhost:11434/api/chat", json={"model": args.model, "messages": msgs, "stream": False, "options": {"temperature": 0, "num_predict": n}}, timeout=300)
r.raise_for_status(); return r.json()["message"]["content"].strip()
def answer(user, history):
msgs = [{"role":"system","content":SYSTEM}]
for h in history[-6:]:
msgs.append({"role":h["role"],"content":h["content"] if isinstance(h["content"], str) else "[image]"})
msgs.append({"role":"user","content":user})
first = gen(msgs, 160)
m = re.search(r"<tool_call>(.*?)</tool_call>", first, re.S)
if not m: return first, None, None
try: call = json.loads(m.group(1))
except Exception: return "I produced a malformed tool call; please rephrase.", None, first
res = execute(call)
msgs += [{"role":"assistant","content":first}, {"role":"tool","content":json.dumps(res)}]
final = gen(msgs, 300)
img = res.get("image") if isinstance(res, dict) else None
return final, img, json.dumps({"call": call, "result": res}, indent=1, default=str)
def chat(user, history):
text, img, trace = answer(user, history)
out = [{"role":"assistant","content":text}]
if img: out.append({"role":"assistant","content":{"path": img}})
if trace: out.append({"role":"assistant","content":"```json\n" + trace[:1500] + "\n```", "metadata":{"title":"tool call"}})
return out
gr.ChatInterface(chat, title="Commodities crop analyst (edoggy)",
description="Answers from USDA CDL area, census, IBGE yields and futures data via tools. Forecasts are statistical baselines with error bars. Not advice.",
examples=["How much corn did Iowa have in 2023?", "Which Louisiana parish has the most sugarcane?", "Forecast sugar 60 days out",
"Show me the sugarcane map for Iberia, LA", "Chart orange juice since 2022", "Is Louisiana cane expanding next year?"]
).launch(server_name="0.0.0.0", server_port=7860)
|