Spaces:
Sleeping
Sleeping
File size: 2,022 Bytes
b20698b |
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 53 54 55 56 57 58 59 60 61 62 63 64 |
"""
Stage 4: Farmer Translator - Natural Language Output
"""
import json
from typing import Dict, Any
from openai import OpenAI
class FarmerTranslator:
"""Stage 4: Convert technical data to farmer-friendly advice"""
def __init__(self, client: OpenAI):
self.client = client
def translate(self, query: str, compiled_data: Dict[str, Any], location: Dict[str, Any]) -> str:
"""
Generate farmer-friendly response from technical data
Returns:
str: Natural language advice for farmers
"""
data_summary = json.dumps(compiled_data.get("data", {}), indent=2)
system_prompt = f"""You are an agricultural advisor for farmers in {location['name']}.
Task: Convert technical data into clear, actionable advice.
Guidelines:
1. Use simple language (avoid jargon)
2. Provide specific, actionable recommendations
3. Include risk levels (LOW/MODERATE/HIGH) when relevant
4. Explain WHY you're making recommendations
5. If data is missing, acknowledge it but provide useful advice
Structure:
- Clear summary
- Current conditions
- Risk assessment (if applicable)
- Specific recommendations
- Action items
Data from {len(compiled_data.get('successful_servers', []))} sources:
{data_summary}
"""
if compiled_data.get("failed_servers"):
system_prompt += f"\n\nNote: Some sources failed: {compiled_data['failed_servers']}"
system_prompt += "\nWork with available data, note limitations."
try:
response = self.client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": f"Farmer query: {query}\n\nProvide advice based on the data."}
],
temperature=0.7
)
return response.choices[0].message.content
except Exception as e:
return f"⚠️ Unable to generate advice: {str(e)}" |