Text Generation
Safetensors
Rust
English
qwen2
code
coding-agent
instruction-tuned
hermit-code
qwen2.5-coder
python
javascript
go
conversational
Instructions to use Soloman2002/hermit-code-7b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Inference
| language: en | |
| license: apache-2.0 | |
| tags: | |
| - code | |
| - coding-agent | |
| - instruction-tuned | |
| - hermit-code | |
| - qwen2.5-coder | |
| - text-generation | |
| - python | |
| - javascript | |
| - rust | |
| - go | |
| pipeline_tag: text-generation | |
| base_model: | |
| - Qwen/Qwen2.5-Coder-7B-Instruct | |
| <div align="center"> | |
| <!-- Hero Banner --> | |
| <h1> | |
| <img src="https://img.shields.io/badge/π-Hermit%20Code%207B-2ea44f?style=for-the-badge&logoColor=white" alt="Hermit Code 7B"/> | |
| </h1> | |
| <p><em>The official coding model for the <strong>Hermit AI Agent</strong></em></p> | |
| <!-- Animated-style Status Badges --> | |
| <p> | |
| <img src="https://img.shields.io/badge/β‘-7.6B%20Parameters-3b82f6?style=flat-square" alt="Parameters"/> | |
| <img src="https://img.shields.io/badge/π-128K%20Context-10b981?style=flat-square" alt="Context"/> | |
| <img src="https://img.shields.io/badge/π-Apache%202.0-f59e0b?style=flat-square" alt="License"/> | |
| <img src="https://img.shields.io/badge/πΎ-Safetensors%20BF16-f97316?style=flat-square" alt="Format"/> | |
| <img src="https://img.shields.io/badge/π-Python%203.10%2B-3776ab?style=flat-square" alt="Python"/> | |
| </p> | |
| <p> | |
| <a href="#-quick-start"><img src="https://img.shields.io/badge/π%20Quick%20Start-5865F2?style=for-the-badge&logoColor=white" height="28"/></a> | |
| <a href="#-capabilities"><img src="https://img.shields.io/badge/π―%20Capabilities-5865F2?style=for-the-badge&logoColor=white" height="28"/></a> | |
| <a href="#-usage"><img src="https://img.shields.io/badge/π»%20Usage-5865F2?style=for-the-badge&logoColor=white" height="28"/></a> | |
| <a href="#-benchmarks"><img src="https://img.shields.io/badge/π%20Benchmarks-5865F2?style=for-the-badge&logoColor=white" height="28"/></a> | |
| </p> | |
| </div> | |
| --- | |
| ## π Table of Contents | |
| - [Quick Start](#-quick-start) | |
| - [Capabilities](#-capabilities) | |
| - [Model Details](#-model-details) | |
| - [Usage](#-usage) | |
| - [Transformers](#transformers) | |
| - [vLLM (Production)](#vllm-recommended-for-production) | |
| - [Inference API](#inference-api) | |
| - [Interactive Examples](#-interactive-examples) | |
| - [Benchmarks](#-benchmarks) | |
| - [Acknowledgments](#-acknowledgments) | |
| --- | |
| ## π Quick Start | |
| Get up and running in **3 lines of code**: | |
| ```python | |
| from transformers import pipeline | |
| # Initialize the model | |
| pipe = pipeline("text-generation", model="Soloman2002/hermit-code-7b") | |
| # Start coding | |
| chat = [{"role": "user", "content": "Write a Python function to reverse a linked list"}] | |
| response = pipe(chat, max_new_tokens=512) | |
| print(response[0]["generated_text"][-1]["content"]) | |
| ``` | |
| > π‘ **Tip:** For best results, use `temperature=0.2` and `top_p=0.95` for deterministic code generation. | |
| --- | |
| ## π― Capabilities | |
| <div align="center"> | |
| | π» **Languages** | ποΈ **Code Gen** | π **Explain** | π **Debug** | β‘ **Refactor** | π§ **Context** | | |
| |:---:|:---:|:---:|:---:|:---:|:---:| | |
| | Python | Functions | Breakdowns | Bug Finding | Performance | 128K Tokens | | |
| | JavaScript / TypeScript | Classes | Documentation | Fixing | Cleanup | Multi-file | | |
| | Go | Scripts | Architecture | Optimization | Restructuring | Projects | | |
| | Rust | Full Projects | Best Practices | Analysis | Modernization | Understanding | | |
| | C++ | | | | | | | |
| | Java | | | | | | | |
| </div> | |
| ### β¨ What Makes Hermit Code Special? | |
| - **π Multi-Language Mastery** β Native fluency in 6+ programming languages | |
| - **π¦ Project-Scale Context** β Understand entire codebases with 128K token context | |
| - **π Debugging Expert** β Identifies bugs, explains why they happen, and fixes them | |
| - **π Educational** β Explains complex concepts with clear, step-by-step reasoning | |
| - **βοΈ Production-Ready** β Optimized for both research and deployment via vLLM | |
| --- | |
| ## π§ Model Details | |
| <div align="center"> | |
| | Property | Specification | Notes | | |
| |:---|:---|:---| | |
| | **Base Model** | [Qwen/Qwen2.5-Coder-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct) | State-of-the-art code foundation | | |
| | **Architecture** | Qwen2.5 Dense Transformer | Optimized for code understanding | | |
| | **Parameters** | 7.61B (6.53B non-embedding) | Efficient size-to-performance ratio | | |
| | **Layers** | 28 | Deep representation learning | | |
| | **Attention** | GQA β 28 Q heads, 4 KV heads | Fast inference with grouped queries | | |
| | **Context Length** | 131,072 tokens | ~100K+ lines of code context | | |
| | **License** | Apache 2.0 | Commercial use permitted | | |
| | **Format** | Safetensors (BF16) | Safe, efficient serialization | | |
| </div> | |
| --- | |
| ## π» Usage | |
| ### Transformers | |
| Perfect for **prototyping** and **local development**: | |
| ```python | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| import torch | |
| # Load model and tokenizer | |
| model_id = "Soloman2002/hermit-code-7b" | |
| model = AutoModelForCausalLM.from_pretrained( | |
| model_id, | |
| torch_dtype=torch.bfloat16, | |
| device_map="auto" | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| # Prepare chat messages | |
| messages = [ | |
| {"role": "system", "content": "You are Hermit Code, an expert coding assistant."}, | |
| {"role": "user", "content": "Write a Rust function that checks if a string is a palindrome."} | |
| ] | |
| # Apply chat template | |
| text = tokenizer.apply_chat_template( | |
| messages, | |
| tokenize=False, | |
| add_generation_prompt=True | |
| ) | |
| # Generate | |
| inputs = tokenizer([text], return_tensors="pt").to(model.device) | |
| outputs = model.generate( | |
| **inputs, | |
| max_new_tokens=512, | |
| temperature=0.2, | |
| do_sample=True | |
| ) | |
| # Decode response | |
| response = tokenizer.decode( | |
| outputs[0][inputs.input_ids.shape[1]:], | |
| skip_special_tokens=True | |
| ) | |
| print(response) | |
| ``` | |
| --- | |
| ### vLLM (Recommended for Production) | |
| For **high-throughput** serving and API deployment: | |
| **1. Install & Launch:** | |
| ```bash | |
| pip install vllm | |
| vllm serve "Soloman2002/hermit-code-7b" --dtype bfloat16 | |
| ``` | |
| **2. Query via API:** | |
| ```bash | |
| curl -X POST "http://localhost:8000/v1/chat/completions" \ | |
| -H "Content-Type: application/json" \ | |
| -d '{ | |
| "model": "Soloman2002/hermit-code-7b", | |
| "messages": [ | |
| {"role": "system", "content": "You are Hermit Code, a coding assistant."}, | |
| {"role": "user", "content": "Explain closures in JavaScript with examples."} | |
| ], | |
| "temperature": 0.2, | |
| "max_tokens": 512 | |
| }' | |
| ``` | |
| > π **vLLM Benefits:** Continuous batching, PagedAttention, and 10-20x throughput improvement over standard Transformers. | |
| --- | |
| ### Inference API | |
| Use **Hugging Face's hosted infrastructure** for instant access: | |
| ```python | |
| from huggingface_hub import InferenceClient | |
| client = InferenceClient(token="hf_YOUR_TOKEN") | |
| response = client.chat_completion( | |
| model="Soloman2002/hermit-code-7b", | |
| messages=[ | |
| {"role": "user", "content": "Write a Go function to merge two sorted arrays"} | |
| ], | |
| max_tokens=512, | |
| temperature=0.2, | |
| stream=False | |
| ) | |
| print(response.choices[0].message.content) | |
| ``` | |
| --- | |
| ## π¨ Interactive Examples | |
| Click any language below to expand and see Hermit Code in action: | |
| <details> | |
| <summary><b>π Python</b> β Quick Sort Implementation</summary> | |
| ```python | |
| def quick_sort(arr: list[int]) -> list[int]: | |
| """ | |
| Sorts an array using the quicksort algorithm. | |
| Time Complexity: O(n log n) average, O(nΒ²) worst case | |
| Space Complexity: O(log n) due to recursion | |
| """ | |
| if len(arr) <= 1: | |
| return arr | |
| pivot = arr[len(arr) // 2] | |
| left = [x for x in arr if x < pivot] | |
| middle = [x for x in arr if x == pivot] | |
| right = [x for x in arr if x > pivot] | |
| return quick_sort(left) + middle + quick_sort(right) | |
| # Example usage | |
| if __name__ == "__main__": | |
| data = [3, 6, 8, 10, 1, 2, 1] | |
| print(f"Original: {data}") | |
| print(f"Sorted: {quick_sort(data)}") | |
| ``` | |
| **Key Features Demonstrated:** | |
| - β Type hints for better code clarity | |
| - β Docstrings with complexity analysis | |
| - β Recursive divide-and-conquer approach | |
| - β Idiomatic Python list comprehensions | |
| </details> | |
| <details> | |
| <summary><b>π¦ Rust</b> β Palindrome Checker</summary> | |
| ```rust | |
| /// Checks if a string is a palindrome, ignoring non-alphanumeric characters | |
| /// and case differences. | |
| /// | |
| /// # Examples | |
| /// ``` | |
| /// assert!(is_palindrome("A man, a plan, a canal: Panama")); | |
| /// assert!(!is_palindrome("Hello, World!")); | |
| /// ``` | |
| fn is_palindrome(s: &str) -> bool { | |
| let chars: Vec<char> = s | |
| .chars() | |
| .filter(|c| c.is_alphanumeric()) | |
| .map(|c| c.to_ascii_lowercase()) | |
| .collect(); | |
| let len = chars.len(); | |
| for i in 0..len / 2 { | |
| if chars[i] != chars[len - 1 - i] { | |
| return false; | |
| } | |
| } | |
| true | |
| } | |
| fn main() { | |
| let test_cases = vec![ | |
| "racecar", | |
| "A man, a plan, a canal: Panama", | |
| "Hello, World!", | |
| ]; | |
| for case in test_cases { | |
| println!("'{}' -> {}", case, is_palindrome(case)); | |
| } | |
| } | |
| ``` | |
| **Key Features Demonstrated:** | |
| - β Memory-safe string processing | |
| - β Functional iterator chains | |
| - β Comprehensive documentation | |
| - β Efficient two-pointer comparison | |
| </details> | |
| <details> | |
| <summary><b>πΉ Go</b> β Merge Sorted Arrays</summary> | |
| ```go | |
| package main | |
| import "fmt" | |
| // mergeSorted combines two sorted integer slices into a single sorted slice. | |
| // It runs in O(n + m) time where n and m are the lengths of the inputs. | |
| func mergeSorted(a, b []int) []int { | |
| result := make([]int, 0, len(a)+len(b)) | |
| i, j := 0, 0 | |
| // Merge while both arrays have elements | |
| for i < len(a) && j < len(b) { | |
| if a[i] < b[j] { | |
| result = append(result, a[i]) | |
| i++ | |
| } else { | |
| result = append(result, b[j]) | |
| j++ | |
| } | |
| } | |
| // Append remaining elements | |
| result = append(result, a[i:]...) | |
| result = append(result, b[j:]...) | |
| return result | |
| } | |
| func main() { | |
| a := []int{1, 3, 5, 7} | |
| b := []int{2, 4, 6, 8} | |
| merged := mergeSorted(a, b) | |
| fmt.Printf("Merged: %v\n", merged) // [1 2 3 4 5 6 7 8] | |
| } | |
| ``` | |
| **Key Features Demonstrated:** | |
| - β Pre-allocated slices for zero-allocation growth | |
| - β Two-pointer technique for optimal performance | |
| - β Idiomatic Go error-free design | |
| - β Clean, readable control flow | |
| </details> | |
| <details> | |
| <summary><b>β‘ JavaScript</b> β Closure Example</summary> | |
| ```javascript | |
| /** | |
| * Creates a counter with private state using closures. | |
| * Demonstrates lexical scoping and data encapsulation. | |
| */ | |
| function createCounter(initialValue = 0) { | |
| let count = initialValue; // Private variable | |
| return { | |
| increment() { | |
| count += 1; | |
| return count; | |
| }, | |
| decrement() { | |
| count -= 1; | |
| return count; | |
| }, | |
| getValue() { | |
| return count; | |
| }, | |
| reset() { | |
| count = initialValue; | |
| return count; | |
| } | |
| }; | |
| } | |
| // Usage | |
| const counter = createCounter(10); | |
| console.log(counter.increment()); // 11 | |
| console.log(counter.increment()); // 12 | |
| console.log(counter.getValue()); // 12 | |
| console.log(counter.reset()); // 10 | |
| ``` | |
| **Key Features Demonstrated:** | |
| - β True private state via closures | |
| - β Clean object interface | |
| - β ES6 method shorthand syntax | |
| - β Default parameter values | |
| </details> | |
| --- | |
| ## π Benchmarks | |
| <div align="center"> | |
| | Benchmark | Score | Status | Comparison to Base | | |
| |:---|:---:|:---:|:---| | |
| | **HumanEval (Python)** | *TBD* | π Pending | vs Qwen2.5-Coder-7B | | |
| | **HumanEval (Multi-Lang)** | *TBD* | π Pending | vs Qwen2.5-Coder-7B | | |
| | **MBPP (Python)** | *TBD* | π Pending | vs Qwen2.5-Coder-7B | | |
| | **DS-1000 (Data Science)** | *TBD* | π Pending | vs Qwen2.5-Coder-7B | | |
| </div> | |
| > π **Coming Soon:** Comprehensive evaluation results based on the Qwen2.5-Coder-7B-Instruct baseline with additional fine-tuning for agentic coding workflows. | |
| --- | |
| ## π€ Acknowledgments | |
| <div align="center"> | |
| | Contribution | Team / Resource | Link | | |
| |:---|:---|:---| | |
| | **ποΈ Base Model** | Qwen Team | [Qwen2.5-Coder-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct) | | |
| | **π€ Hermit AI Agent** | Hermit Team | [GitHub: Soloman2002](https://github.com/Soloman2002) | | |
| | **π¦ Infrastructure** | Hugging Face | [Transformers](https://github.com/huggingface/transformers) & [vLLM](https://github.com/vllm-project/vllm) | | |
| </div> | |
| --- | |
| <div align="center"> | |
| ## π Star Us on GitHub! | |
| If you find Hermit Code useful, please consider starring the repository and sharing with your network. | |
| <p> | |
| <a href="https://github.com/Soloman2002/hermit-code-7b"> | |
| <img src="https://img.shields.io/badge/β-Star%20on%20GitHub-181717?style=for-the-badge&logo=github" alt="Star on GitHub"/> | |
| </a> | |
| <a href="https://huggingface.co/Soloman2002/hermit-code-7b"> | |
| <img src="https://img.shields.io/badge/π€-Follow%20on%20HF-FFD21E?style=for-the-badge" alt="Follow on Hugging Face"/> | |
| </a> | |
| </p> | |
| <sub>Built with β€οΈ for the coding community by the Hermit Team</sub> | |
| </div> |