File size: 1,645 Bytes
7ceb903
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
from dashscope import Generation

# 设置DashScope API密钥
DASHSCOPE_API_KEY = os.environ.get("DASHSCOPE_API_KEY", "")

def get_qwen_response(messages):
    """
    调用通义千问API获取回复
    
    Args:
        messages: 消息历史列表,包含角色和内容
        
    Returns:
        str: 模型回复内容或错误信息
    """
    try:
        response = Generation.call(
            model="qwen-max",
            messages=messages,
            result_format='message',
            api_key=DASHSCOPE_API_KEY
        )
        
        if response.status_code == 200:
            return {
                'success': True,
                'content': response.output.choices[0].message.content
            }
        else:
            return {
                'success': False,
                'content': f"API错误: {response.code}, {response.message}"
            }
            
    except Exception as e:
        return {
            'success': False,
            'content': f"调用异常: {str(e)}"
        }
        
def format_chat_history(history, message):
    """
    格式化聊天历史为API所需格式
    
    Args:
        history: Gradio历史记录
        message: 当前用户消息
        
    Returns:
        list: 格式化后的消息列表
    """
    messages = []
    
    # 添加历史消息
    for human, assistant in history:
        messages.append({"role": "user", "content": human})
        messages.append({"role": "assistant", "content": assistant})
    
    # 添加当前用户消息
    messages.append({"role": "user", "content": message})
    
    return messages