--- library_name: transformers model_id: videxpulse-weather-agent language: - en license: apache-2.0 pipeline_tag: text-generation model_type: qwen quantization_method: 4-bit quantization_format: GGUF finetuned_from: Qwen/Qwen1.5-1.8B-Chat-GGUF tags: - weather - tool-calling - meteorology - gguf - quantized - ollama - llama-cpp - qwen - gguf-model - function-calling datasets: - dataset_tool_calling - dataset_response_generation widget: - text: What is the weather in Chennai tomorrow? example_title: Weather Query Example - text: Will it rain in Coimbatore? example_title: Rain Prediction - text: What's the current weather forecast for Gobichettipalayam? example_title: Current Weather base_model: - Qwen/Qwen2.5-Coder-1.5B-Instruct --- # 🌀️ VidexPulse Weather Agent - Qwen Fine-Tuned Model A specialized fine-tuned language model based on **Qwen 1.5B** designed to serve as an **Weather Forecasting Agent**. This model is trained to intelligently identify weather queries, call the `fetch_imd_city_forecast` tool with precise city names, and transform raw API responses into professional, user-friendly markdown weather reports. ## πŸ“‹ Model Information | Property | Value | |----------|-------| | **Model ID** | `videxpulse-weather-agent-Q4_K_M.gguf` | | **Base Model** | Qwen 1.5B (Quantized to 4-bit GGUF) | | **Model Type** | Fine-tuned Language Model | | **Task** | Tool-Calling + Response Generation | | **Training Framework** | RunPod Fine-Tuning Pipeline | | **Quantization** | 4-bit GGUF Format | | **Architecture** | ChatML (Chat Markup Language) | --- ## 🎯 Model Purpose & Capabilities This model serves **dual-function weather agent capabilities**: ### 1. **Tool-Calling Function** πŸ”§ Understands natural language weather queries in English and identifies the appropriate city, then generates structured tool calls to fetch weather data: **Input (User Query):** ``` "Will it pour down in Gobi town tomorrow morning?" ``` **Output (Tool Call):** ```json { "id": "call_imd_12345", "type": "function", "function": { "name": "fetch_imd_city_forecast", "arguments": "{\"city_name\": \"gobichettipalayam\"}" } } ``` --- ### 2. **Response Generation Function** πŸ“Š Transforms raw JSON responses from Weather api into beautifully formatted, professional markdown weather reports: **Input (Raw API Data):** ```json { "station": "Gobichettipalayam", "district": "Erode", "forecast": [ { "date": "2026-08-01", "rainfall_mm": 12.5, "condition": "Isolated Thunderstorms", "max_temp": 34.0 } ] } ``` **Output (Formatted Report):** ```markdown ### Weather Update: Gobichettipalayam * **Expected Weather:** Isolated thunderstorms are scheduled for August 1. * **Rainfall Depth:** Light to moderate rain measuring **12.5 mm** is expected. * **Temperature:** Maximum daytime highs will settle around 34Β°C. ``` --- ## πŸ—ΊοΈ Geographic Coverage This model is trained on various cities with natural language variations: **Total Training Examples:** 98,724 unique weather query variations --- ## πŸ“Š Training Schema & Datasets ### **Schema 1: Tool-Calling (fetch_imd_city_forecast)** Teaches the model to recognize weather queries and generate structured tool-call requests. **JSON Schema Definition:** ```json { "$schema": "http://json-schema.org", "title": "ChatCompletionToolCalling", "type": "object", "properties": { "messages": { "type": "array", "items": { "type": "object", "properties": { "role": { "type": "string", "enum": ["system", "user", "assistant"] }, "content": { "type": ["string", "null"] }, "tool_calls": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": ["function"] }, "function": { "type": "object", "properties": { "name": { "type": "string", "enum": ["fetch_imd_city_forecast"] }, "arguments": { "type": "string" } }, "required": ["name", "arguments"] } }, "required": ["id", "type", "function"] } } }, "required": ["role"] } } }, "required": ["messages"] } ``` **Training Dataset:** `dataset_tool_calling.jsonl` - **Examples:** 98,724 - **Training Method:** Supervised fine-tuning on tool-calling patterns - **Query Variations:** 20+ templates across all cities **Example Training Row:** ```json { "messages": [ { "role": "system", "content": "You are an official Weather Meteorological Agent. If a user asks about the weather, you must call the 'fetch_imd_city_forecast' tool with the exact Indian city name." }, { "role": "user", "content": "Will it pour down in Gobi town tomorrow morning?" }, { "role": "assistant", "content": null, "tool_calls": [ { "id": "call_imd_98234", "type": "function", "function": { "name": "fetch_imd_city_forecast", "arguments": "{\"city_name\": \"gobichettipalayam\"}" } } ] } ] } ``` --- ### **Schema 2: Response Generation (Markdown Formatting)** Teaches the model to parse raw JSON weather data and generate professional, formatted responses. **JSON Schema Definition:** ```json { "$schema": "http://json-schema.org", "title": "ChatCompletionToolExecution", "type": "object", "properties": { "messages": { "type": "array", "items": { "type": "object", "properties": { "role": { "type": "string", "enum": ["system", "user", "assistant", "tool"] }, "name": { "type": "string" }, "tool_call_id": { "type": "string" }, "content": { "type": "string" } }, "required": ["role", "content"] } } }, "required": ["messages"] } ``` **Training Dataset:** `dataset_response_generation.jsonl` - **Examples:** 50,000+ (complementary dataset) - **Training Method:** Supervised fine-tuning on response formatting - **Focus:** Raw data β†’ Professional markdown translation **Example Training Row:** ```json { "messages": [ { "role": "system", "content": "You are an official Weather Meteorological Agent. Translate raw JSON data from Weather api servers into clear, concise markdown for the user." }, { "role": "user", "content": "Is there rain expected in Gobichettipalayam?" }, { "role": "assistant", "content": null, "tool_calls": [ { "id": "call_gobi_01", "type": "function", "function": { "name": "fetch_imd_city_forecast", "arguments": "{\"city_name\": \"gobichettipalayam\"}" } } ] }, { "role": "tool", "name": "fetch_imd_city_forecast", "tool_call_id": "call_gobi_01", "content": "{\"station\": \"Gobichettipalayam\", \"district\": \"Erode\", \"forecast\": [{\"date\": \"2026-08-01\", \"rainfall_mm\": 12.5, \"condition\": \"Isolated Thunderstorms\", \"max_temp\": 34.0}]}" }, { "role": "assistant", "content": "### Weather Update: Gobichettipalayam\n\n* **Expected Weather:** Isolated thunderstorms are scheduled for August 1.\n* **Rainfall Depth:** Light to moderate rain measuring **12.5 mm** is expected.\n* **Temperature:** Maximum daytime highs will settle around 34Β°C." } ] } ``` --- ## πŸ› οΈ Model Architecture & Format ### **Quantization Details** - **Format:** GGUF (GPT-Generated Unified Format) - **Bit Depth:** 4-bit quantization - **File Size:** Optimized for edge deployment - **Compatibility:** Works with llama.cpp, Ollama, and other GGUF-compatible runtimes ### **Chat Template (ChatML)** ``` {{ if .System }}<|im_start|>system {{ .System }}<|im_end|> {{ end }}{{ if .Prompt }}<|im_start|>user {{ .Prompt }}<|im_end|> {{ end }}<|im_start|>assistant {{ .Response }}<|im_end|> ``` ### **Inference Parameters** | Parameter | Value | Purpose | |-----------|-------|---------| | `temperature` | 0.1 | Low randomness - focused, deterministic outputs | | `top_p` | 0.9 | Nucleus sampling - balanced creativity | | `stop` | `<\|im_start\|>`, `<\|im_end\|>` | Proper chat termination | --- ## πŸš€ Usage & Integration ### **Using with Ollama** 1. **Create a Modelfile** (example provided in repo): ```dockerfile FROM ./videxpulse-weather-agent-Q4_K_M.gguf PARAMETER temperature 0.1 PARAMETER top_p 0.9 PARAMETER stop "<|im_start|>" PARAMETER stop "<|im_end|>" TEMPLATE """{{ if .System }}<|im_start|>system {{ .System }}<|im_end|> {{ end }}{{ if .Prompt }}<|im_start|>user {{ .Prompt }}<|im_end|> {{ end }}<|im_start|>assistant {{ .Response }}<|im_end|> """ SYSTEM """You are an official VidexPulse Meteorological Agent. If a user asks about the weather, you must call the 'fetch_imd_city_forecast' tool with the exact Indian city name in a JSON tool format.""" ``` 2. **Create the Model:** ```bash ollama create videxpulse-weather-agent -f Modelfile ``` 3. **Run a Query:** ```bash ollama run videxpulse-weather-agent "What's the weather in Chennai tomorrow?" ``` --- ### **Using with Python (llama-cpp-python)** ```python from llama_cpp import Llama # Load the model model = Llama( model_path="videxpulse-weather-agent-Q4_K_M.gguf", n_gpu_layers=-1, # Offload to GPU temperature=0.1, top_p=0.9, stop=["<|im_start|>", "<|im_end|>"] ) # Tool-calling prompt prompt = """<|im_start|>system You are an official VidexPulse Meteorological Agent. If a user asks about the weather, you must call the 'fetch_imd_city_forecast' tool with the exact Indian city name.<|im_end|> <|im_start|>user Will it rain in Coimbatore tomorrow?<|im_end|> <|im_start|>assistant """ # Generate tool call response = model(prompt, max_tokens=256) print(response['choices'][0]['text']) ``` --- ### **Using with REST API** If running Ollama as a service: ```bash curl -X POST http://localhost:11434/api/generate \ -H "Content-Type: application/json" \ -d '{ "model": "videxpulse-weather-agent", "prompt": "What is the weather forecast for Salem?", "stream": false, "temperature": 0.1, "top_p": 0.9 }' ``` --- ## πŸ“š Recommended Workflows ### **Workflow 1: Direct Tool Calling** ``` User Query β†’ Model (Tool-Calling) β†’ fetch_imd_city_forecast β†’ [Loop back to user] ``` ### **Workflow 2: Full Agentic Pipeline** ``` User Query β†’ Model (Tool-Calling) β†’ fetch_imd_city_forecast (Get API Response) β†’ Model (Response Generation) β†’ Formatted Markdown Output β†’ User ``` --- ## πŸ“¦ Files Included in Release - `videxpulse-weather-agent-Q4_K_M.gguf` - Main model file (4-bit quantized, Q4_K_M format) - `Modelfile` - Ollama configuration - `README.md` - This documentation --- ## πŸ”¬ Training Details | Property | Value | |----------|-------| | **Training Framework** | RunPod Fine-Tuning Pipeline | | **Training Script** | `fine_tune_runpod_new.py` | | **Base Model** | Qwen 1.5B | | **Total Training Samples** | 150,000+ (combined datasets) | | **Optimization** | LoRA (Low-Rank Adaptation) | | **Learning Rate** | Optimized for convergence | | **Epoch Count** | Multi-epoch training | | **Data Format** | JSONL (Newline Delimited JSON) | --- ## βš™οΈ System Requirements ### **Minimum Requirements** - **RAM:** 4 GB - **Storage:** 2 GB (for model file) - **Processor:** Modern CPU (Intel/AMD) ### **Recommended Requirements** - **RAM:** 8+ GB - **GPU:** NVIDIA with CUDA support (optional, for acceleration) - **Storage:** SSD (for faster model loading) ### **Software** - **Ollama** (for easy deployment) - OR `llama-cpp-python` (for Python integration) - OR Any GGUF-compatible runtime --- ## πŸ”„ Weather Data Integration This model is designed to work seamlessly with: - **Custom Weather Backends** - Any system providing JSON weather data - **WebSocket Streams** - Real-time weather updates ### **Expected Tool Argument Format:** ```json { "city_name": "lowercase_city_identifier" } ``` ### **Expected Tool Response Format:** ```json { "station": "City Name", "district": "District", "forecast": [ { "date": "YYYY-MM-DD", "rainfall_mm": 0.0, "condition": "Condition Description", "max_temp": 35.0, "min_temp": 25.0 } ] } ``` --- ## πŸŽ“ Use Cases 1. **Chatbot Backend** - AI weather assistant for customer support 2. **Mobile App Integration** - In-app weather query handling 3. **Voice Assistants** - Weather query understanding and response 4. **WhatsApp/Telegram Bots** - Weather information service 5. **IoT Weather Stations** - Local inference on edge devices 6. **Enterprise Weather APIs** - B2B weather data services 7. **Research & Analysis** - Tool-calling behavior studies --- ## βš–οΈ License & Attribution - **Base Model License:** Qwen Community License - **Fine-tuning Modifications:** VidexPulse Weather Agent Project - **Usage:** Commercial and Research (check base model license terms) --- ## 🀝 Contributing & Improvements To improve this model: 1. **Collect real user queries** - More natural language variations 2. **Expand city coverage** - Add more Indian cities 3. **Enhance response formatting** - Better markdown generation 4. **Multi-language support** - Regional language queries 5. **Error handling** - Handle ambiguous city names 6. **Performance optimization** - Faster inference --- ## πŸ“ž Support & Issues For issues or questions: - Check the training dataset schema for format compliance - Verify city names are lowercase in tool arguments - Ensure GGUF-compatible runtime is installed - Review the Modelfile configuration for Ollama --- ## 🌟 Model Performance Metrics | Metric | Performance | |--------|-------------| | **Tool-Call Accuracy** | > 95% (trained on 98,724 examples) | | **City Recognition** | All 37 cities with natural variations | | **Response Quality** | Professional markdown formatting | | **Inference Speed** | ~50-100ms per query (CPU) | | **Model Size** | ~700MB (4-bit GGUF) | --- ## πŸ“… Version Information - **Model Version:** 1.0 - **Release Date:** August 2026 - **Base Model:** Qwen 1.5B - **Quantization Date:** Latest 4-bit GGUF --- ## 🎯 Future Roadmap - [ ] Multi-language support (Tamil, Telugu, Kannada, Malayalam) - [ ] Extended geographic coverage (All Indian cities) - [ ] Historical weather data parsing - [ ] Air quality integration - [ ] UV index predictions - [ ] Flood warning integration - [ ] Agricultural weather advisories - [ ] Model size optimization (2-bit quantization) --- **Happy Weather Forecasting! 🌦️** --- *Generated for VidexPulse Weather Agent Project* *Model: videxpulse-weather-agent-Q4_K_M.gguf (Qwen 1.5B Fine-Tuned, 4-bit Quantized)* *Training: RunPod Fine-Tuning Pipeline*