Agriculture is the backbone of India’s economy, yet existing language models lack deep domain knowledge tailored to Indian contexts, languages, and cultural nuances.
AgriParam bridges this gap by combining Param-1’s bilingual capabilities with a meticulously curated agricultural knowledge base.
AgriParam’s training corpus was carefully crafted to ensure deep agricultural knowledge, cultural relevance, and bilingual (English-Hindi) accessibility.
-
Source Gathering
- 17k open-source, India-focused agricultural news & information passages.
-
Question Generation
- Generated 5 curated Q&A pairs per passage using an open-source LLM.
-
Domain Taxonomy & Personas
- Built an exhaustive, India-specific agricultural taxonomy.
- Defined farmer, policy-maker, scientist, and agri-business personas.
-
Dataset Construction
- 2M Q&A pairs grounded in taxonomy and personas.
- Complete dataset translated into Hindi.
- 6M multi-turn conversation samples created.
1from transformers import AutoTokenizer, AutoModelForCausalLM
2import torch
3
4model_name = "bharatgenai/AgriParam"
5tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=False)
6model = AutoModelForCausalLM.from_pretrained(
7 model_name,
8 trust_remote_code=True,
9 torch_dtype=torch.bfloat16 if torch.cuda.is_available() else torch.bfloat32,
10 device_map="auto"
11)
12
13# Example agricultural query
14user_input = "What are the best practices for organic wheat farming in Uttar Pradesh?"
15
16# 3 types of prompt
17# 1. Generic QA: <user> ... <assistant>
18# 2. Context based QA: <context> ... <user> ... <assistant>
19# 3. Multi-turn conversation (supports upto 5 conversations): <user> ... <assistant> ... <user> ... <assistant>
20
21# Based on your requirements use the type of prompt (refere the above examples)
22prompt = f"<user> {user_input} <assistant>"
23# prompt = f"<context> {user_context} <user> {user_input} <assistant>"
24# prompt = f"<user> {user_input1} <assistant> {user_input2} <user> {user_input3} <assistant>..."
25inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
26
27with torch.no_grad():
28 output = model.generate(
29 **inputs,
30 max_new_tokens=300,
31 do_sample=True,
32 top_k=50,
33 top_p=0.95,
34 temperature=0.6,
35 eos_token_id=tokenizer.eos_token_id,
36 use_cache=False
37 )
38
39print(tokenizer.decode(output[0], skip_special_tokens=True))