LLM-Cloud-Demo / app.py
sikeaditya's picture
Update app.py
5591e71 verified
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)