File size: 2,943 Bytes
8c09497
6ef0b07
 
e31f82b
4a16b87
e31f82b
 
4a16b87
 
 
8c09497
6ef0b07
d9fa0df
e4ec2ca
053b39e
4a16b87
6ef0b07
e4ec2ca
 
 
 
76c343a
29e63c4
 
e4ec2ca
29e63c4
 
 
 
 
 
bc83b7c
4a16b87
 
6ef0b07
d9fa0df
 
053b39e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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()