聊天机器人函数性能调试与优化

学习笔记作者:admin日期:2025-06-06点击:12

摘要:通过对聊天机器人函数加入时间戳调试代码,分析各步骤耗时,确定性能瓶颈,并给出优化建议。

聊天机器人函数性能调试与优化

      本文介绍了如何对一个用于生成问答的聊天机器人函数进行性能调试,通过加入时间戳记录各步骤耗时,找出性能瓶颈并提出优化建议。

调试代码

import json


def chatgpt_get_anwser(ask: str, history_msg: str, model="qwen-max"):
    print("开始执行函数...")
    start_time = datetime.now().timestamp()  # 记录函数开始时间

    ask = ask[:29000]
    print(f"截断 ask 完成,耗时:{datetime.now().timestamp() - start_time:.4f} 秒")

    messages = []
    sys_prompt = ""
    你是一个百科全书和生活记录员,用户通过智能音箱和你对话,回答尽量简短,你收到的指令可能会有错别字,请你根据自己的知识进行纠正,并回答
    ""
    messages.append({'role': 'system', 'content': sys_prompt})
    print(f"添加系统提示完成,耗时:{datetime.now().timestamp() - start_time:.4f} 秒")

    messages.append({'role': 'assistant', 'content': "请提供现在时间"})
    print(f"添加助手消息(请提供现在时间)完成,耗时:{datetime.now().timestamp() - start_time:.4f} 秒")

    messages.append({'role': 'user', 'content': "现在时间:" + datetime.now().strftime("%Y-%m-%d %H:%M:%S")})
    print(f"添加用户消息(现在时间)完成,耗时:{datetime.now().timestamp() - start_time:.4f} 秒")

    if history_msg != "":
        messages.append({'role': 'assistant', 'content': "请提供历史消息供我参考,一行一条,与本次无关的消息我会自动忽略,格式为:消息时间--提问--回答"})
        print(f"添加助手消息(请提供历史消息)完成,耗时:{datetime.now().timestamp() - start_time:.4f} 秒")
        messages.append({'role': 'user', 'content': history_msg})
        print(f"添加用户消息(历史消息)完成,耗时:{datetime.now().timestamp() - start_time:.4f} 秒")

    messages.append({'role': 'assistant', 'content': "收到,请提问"})
    print(f"添加助手消息(收到,请提问)完成,耗时:{datetime.now().timestamp() - start_time:.4f} 秒")

    messages.append({'role': 'user', 'content': ask})
    print(f"添加用户问题完成,耗时:{datetime.now().timestamp() - start_time:.4f} 秒")

    try:
        # 调用 API 前记录时间
        api_start_time = datetime.now().timestamp()
        completion = client.chat.completions.create(
            model=model,
            messages=messages,
            extra_body={"enable_search": False},
        )
        print(f"API 调用完成,耗时:{datetime.now().timestamp() - api_start_time:.4f} 秒")

        # 解析响应前记录时间
        parse_start_time = datetime.now().timestamp()
        response = completion.model_dump_json()
        response_dict = json.loads(response)
        rst_string = response_dict['choices'][0]['message']['content']
        print(f"响应解析完成,耗时:{datetime.now().timestamp() - parse_start_time:.4f} 秒")

        print(f"总耗时:{datetime.now().timestamp() - start_time:.4f} 秒")
        return rst_string

    except json.JSONDecodeError as e:
        print(f"JSON 解码错误:{e}")
        return False

分析与优化建议

      通过上述调试代码,可以清晰地看到每个步骤的耗时。通常情况下,API 调用是整个流程中最耗时的部分。因此,优化的重点可以放在以下几个方面:

  • 更换更轻量级的模型,如从 qwen-max 改为 qwen-turbo。
  • 减少输入内容的长度,尤其是 history_msg。
  • 使用缓存机制避免重复调用相同的请求。
  • 如果支持流式输出,可以尝试启用以提前获取部分结果。

      此外,还可以通过简化构建 messages 的逻辑或提前处理部分内容来进一步提高效率。

上一篇      下一篇