Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import requests | |
| import os | |
| import json | |
| # --- Configuration --- | |
| # API configuration but hidden from end users | |
| API_URL = "https://router.huggingface.co/nebius/v1/chat/completions" | |
| MODEL_ID = "google/gemma-3-27b-it-fast" # Real model hidden from users | |
| PUBLIC_MODEL_NAME = "AgriAssist_LLM" # What users will see | |
| HF_TOKEN = os.getenv("HF_TOKEN") | |
| if not HF_TOKEN: | |
| raise ValueError("Hugging Face token not found. Please set the HF_TOKEN environment variable or secret.") | |
| HEADERS = {"Authorization": f"Bearer {HF_TOKEN}", "Content-Type": "application/json"} | |
| # --- Logging that doesn't expose real model name --- | |
| print(f"Application configured to use {PUBLIC_MODEL_NAME}.") | |
| print(f"API Endpoint configured.") | |
| # --- Inference Function (Using Hugging Face API) --- | |
| def generate_response(prompt, max_new_tokens=512): | |
| print(f"Received prompt: {prompt}") | |
| print(f"Preparing payload for API...") | |
| payload = { | |
| "messages": [ | |
| { | |
| "role": "user", | |
| "content": prompt | |
| } | |
| ], | |
| "model": MODEL_ID, # Real model used in API call | |
| "max_tokens": max_new_tokens, | |
| } | |
| print(f"Sending request to API for {PUBLIC_MODEL_NAME}...") | |
| try: | |
| response = requests.post(API_URL, headers=HEADERS, json=payload) | |
| response.raise_for_status() | |
| result = response.json() | |
| print(f"{PUBLIC_MODEL_NAME} Response Received Successfully.") | |
| if "choices" in result and len(result["choices"]) > 0 and "message" in result["choices"][0] and "content" in result["choices"][0]["message"]: | |
| api_response_content = result["choices"][0]["message"]["content"] | |
| print(f"{PUBLIC_MODEL_NAME} generated content") | |
| return api_response_content | |
| else: | |
| print(f"Unexpected API response structure") | |
| return f"Error: {PUBLIC_MODEL_NAME} encountered an issue processing your request. Please try again." | |
| except requests.exceptions.RequestException as e: | |
| error_detail = "" | |
| if e.response is not None: | |
| try: | |
| error_detail = e.response.json() | |
| except json.JSONDecodeError: | |
| error_detail = e.response.text | |
| print(f"Error calling API: {e}") | |
| return f"{PUBLIC_MODEL_NAME} is currently experiencing connectivity issues. Please try again later." | |
| except Exception as e: | |
| print(f"An unexpected error occurred: {e}") | |
| return f"{PUBLIC_MODEL_NAME} encountered an unexpected error. Please try again later." | |
| # --- Gradio Interface --- | |
| iface = gr.Interface( | |
| fn=generate_response, | |
| inputs=gr.Textbox(lines=5, label="Enter your prompt", placeholder="Type your question or instruction here..."), | |
| outputs=gr.Textbox(lines=8, label=f"{PUBLIC_MODEL_NAME} Response:"), | |
| title=f"Chat with {PUBLIC_MODEL_NAME}", | |
| description=(f"This demo connects you with {PUBLIC_MODEL_NAME}, a specialized agricultural assistant. " | |
| "Submit your farming, crop management, or agricultural questions below."), | |
| allow_flagging="never", | |
| examples=[ | |
| ["What are sustainable practices for improving soil health in organic farming?"], | |
| ["Explain crop rotation benefits and scheduling for small vegetable farms."], | |
| ["How can I identify and treat common tomato plant diseases?"], | |
| ["What irrigation methods are most water-efficient for drought-prone regions?"], | |
| ] | |
| ) | |
| # --- Launch the App --- | |
| iface.launch(server_name="0.0.0.0", server_port=7860) |