File size: 5,007 Bytes
3373b3e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import streamlit as st
import os
from openai import OpenAI

def get_mimo_client():
    """获取mimo API客户端"""
    # 优先从环境变量读取
    api_key = os.getenv("MIMO_API_KEY")
    base_url = os.getenv("MIMO_BASE_URL")

    # 如果环境变量没有,尝试从st.secrets读取
    if not api_key:
        try:
            api_key = st.secrets["MIMO_API_KEY"]
        except:
            pass

    if not base_url:
        try:
            base_url = st.secrets["MIMO_BASE_URL"]
        except:
            base_url = "https://api.xiaomimimo.com/v1"

    if not api_key:
        return None

    return OpenAI(
        api_key=api_key,
        base_url=base_url
    )

def summarize_document(text: str, max_length: int = 500) -> str:
    """文档摘要"""
    client = get_mimo_client()
    if not client:
        return "错误:未配置 MIMO API Key,请在 Settings → Secrets 中配置"

    try:
        response = client.chat.completions.create(
            model="mimo-v2.5-pro",
            messages=[
                {"role": "system", "content": "你是一个专业的文档摘要助手,请用简洁的语言总结文档核心内容。"},
                {"role": "user", "content": f"请为以下文档生成摘要,控制在{max_length}字以内:\n\n{text}"}
            ],
            max_tokens=1000
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"API调用失败: {str(e)}"

def translate_document(text: str, target_lang: str = "英文") -> str:
    """文档翻译"""
    client = get_mimo_client()
    if not client:
        return "错误:未配置 MIMO API Key,请在 Settings → Secrets 中配置"

    try:
        response = client.chat.completions.create(
            model="mimo-v2.5-pro",
            messages=[
                {"role": "system", "content": f"你是一个专业的翻译助手,请将文档翻译成{target_lang},保持原文格式和专业术语。"},
                {"role": "user", "content": f"请翻译以下文档:\n\n{text}"}
            ],
            max_tokens=2000
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"API调用失败: {str(e)}"

def organize_meeting_notes(notes: str) -> str:
    """会议纪要整理"""
    client = get_mimo_client()
    if not client:
        return "错误:未配置 MIMO API Key,请在 Settings → Secrets 中配置"

    try:
        response = client.chat.completions.create(
            model="mimo-v2.5-pro",
            messages=[
                {"role": "system", "content": "你是一个专业的会议纪要整理助手,请将杂乱的会议笔记整理成结构化的会议纪要格式,包含:会议主题、参会人员、主要议题、讨论要点、决议事项、待办事项。"},
                {"role": "user", "content": f"请整理以下会议笔记:\n\n{notes}"}
            ],
            max_tokens=1500
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"API调用失败: {str(e)}"

def explain_contract_terms(text: str) -> str:
    """合同条款解读"""
    client = get_mimo_client()
    if not client:
        return "错误:未配置 MIMO API Key,请在 Settings → Secrets 中配置"

    try:
        response = client.chat.completions.create(
            model="mimo-v2.5-pro",
            messages=[
                {"role": "system", "content": "你是一个法律顾问助手,请用通俗易懂的语言解释合同条款,指出可能的风险点和注意事项。"},
                {"role": "user", "content": f"请解读以下合同条款:\n\n{text}"}
            ],
            max_tokens=1500
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"API调用失败: {str(e)}"

def generate_ppt_content(topic: str, slides_count: int = 10, style: str = "商务") -> dict:
    """生成PPT内容"""
    client = get_mimo_client()
    if not client:
        return None

    prompt = f"""请为以下主题生成PPT内容,要求:
- 主题:{topic}
- 页数:{slides_count}页
- 风格:{style}

请以JSON格式返回,结构如下:
{{
    "title": "PPT标题",
    "slides": [
        {{
            "title": "页面标题",
            "content": ["要点1", "要点2", "要点3"],
            "notes": "演讲者备注"
        }}
    ]
}}"""

    try:
        response = client.chat.completions.create(
            model="mimo-v2.5-pro",
            messages=[
                {"role": "system", "content": "你是一个专业的PPT内容创作助手,请生成结构清晰、内容专业的PPT大纲。"},
                {"role": "user", "content": prompt}
            ],
            max_tokens=3000
        )

        import json
        return json.loads(response.choices[0].message.content)
    except Exception as e:
        st.error(f"API调用失败: {str(e)}")
        return None