import gradio as gr from huggingface_hub import InferenceClient import time import os import traceback HF_TOKEN = os.getenv("HF_TOKEN") if not HF_TOKEN: raise ValueError("HF_TOKEN not found in Secrets. Please set it in Space settings.") print(f"HF_TOKEN loaded: {len(HF_TOKEN) if HF_TOKEN else 0} characters") try: summary_client = InferenceClient(model="facebook/bart-large-cnn", token=HF_TOKEN) translation_client = InferenceClient(model="facebook/m2m100_418M", token=HF_TOKEN) def generate_summary(text): for _ in range(3): try: response = summary_client.summarization(text) print(f"Summary API Response: {response}") summary_text = response.generated_text if hasattr(response, 'generated_text') and response.generated_text else response.summary_text if hasattr(response, 'summary_text') and response.summary_text else None if not summary_text: return "摘要生成失败,属性缺失。" # 移除语言标记,直接调用翻译 translated_response = translation_client.translation(summary_text, source="en", target="zh") print(f"Translation API Response: {translated_response}") if hasattr(translated_response, 'translation_text') and translated_response.translation_text: return translated_response.translation_text elif hasattr(translated_response, 'generated_text'): return translated_response.generated_text else: return "翻译失败,请重试。" except Exception as e: error_details = traceback.format_exc() print(f"尝试失败,错误类型: {type(e).__name__}, 错误详情: {str(e)}, 堆栈: {error_details}") time.sleep(1) return f"网络错误,请稍后重试。错误详情:{str(e)}" return "网络错误,请稍后重试(重试次数已达上限)。" interface = gr.Interface( fn=generate_summary, inputs=gr.Textbox(lines=5, placeholder="输入文档内容..."), outputs="text", title="MySmartSummary", description="在线智能文档摘要工具,支持中文", examples=[ ["今天我们讨论了2025年的项目计划,包括产品发布、市场推广和预算分配。"] ], css="body {background-color: #f0f0f0; font-family: Arial;}" ) except Exception as e: error_details = traceback.format_exc() print(f"初始化错误,错误类型: {type(e).__name__}, 错误详情: {str(e)}, 堆栈: {error_details}") interface = gr.Interface( fn=lambda x: f"服务暂不可用,错误: {str(e)}", inputs="text", outputs="text", title="MySmartSummary", description="服务初始化失败" ) interface.launch()