大模型分析日志异常
一、 效果
要解决的问题:根据后台错误日志,分析潜在错误及推荐的解决方案。

左侧选择 LLM 及模型;
右侧主页面选择编程语言(java/python…)、输入错误日志,可以调整默认提示词,点击分析可获取结构化的分析结果,以及修复建议。
默认的提示词可以修改:

二、关键要点分析
2.1、提示词:

templates = {
    "Java": """
    作为资深Java工程师,请分析以下电商系统异常日志,结合SonarQube规则、FindBugs模式和常见电商业务场景:

    1. 首先识别异常类型和严重等级
    2. 分析堆栈跟踪,定位问题代码位置
    3. 检查是否违反以下常见问题:
       - 并发问题(竞态条件、死锁)
       - 事务管理不当
       - 缓存穿透/雪崩
       - 数据库连接泄漏
       - 空指针异常
       - 集合越界
    4. 提供修复方案,考虑:
       - 防御性编程
       - 重试机制
       - 熔断降级
       - 性能优化
    5. 针对电商场景的特殊建议

    日志内容:
    {logs}

    请按以下格式返回JSON结果:
    {{
        "errorType": "",
        "severity": "",
        "rootCause": "",
        "codeLocation": "",
        "sonarRuleViolated": "",
        "solution": "",
        "ecommerceImpact": "",
        "preventionTips": ""
    }}
    """
}

2.2 日志分析过程
Stream 模式分析日志。

def analyze_logs(
        self,
        provider: str,
        model: str,
        prompt: str,
        temperature: float = 0.7,
        timeout: int = 30
) -> Tuple[Optional[str], Optional[Dict]]:
    """阻塞方式调用LLM分析日志"""
    try:
        if provider not in self.providers:
            raise ValueError(f"不支持的提供者: {provider}")

        config = self.providers[provider]
        client = openai.OpenAI(
            api_key=config["api_key"],
            base_url=config["base_url"],
            timeout=timeout
        )

        start_time = time.time()
        response = client.chat.completions.create(
            model=model,
            messages=[{"role": "user", "content": prompt}],
            temperature=temperature,
            max_tokens=config["max_tokens"],
            stream=False
        )

        elapsed = time.time() - start_time
        content = response.choices[0].message.content

        logger.info(
            f"LLM请求成功 | 平台: {provider} | 模型: {model} | "
            f"耗时: {elapsed:.2f}s | 使用token: {response.usage.total_tokens}"
        )

        return content, {
            "provider": provider,
            "model": model,
            "usage": {
                "prompt_tokens": response.usage.prompt_tokens,
                "completion_tokens": response.usage.completion_tokens,
                "total_tokens": response.usage.total_tokens
            },
            "timing": {
                "response_time": elapsed
            }
        }

    except Exception as e:
        logger.error(f"LLM请求失败: {str(e)}", exc_info=True)
        return None, {"error": str(e)}

2.3 更多
加 v: liangjianzhao2020 加入高质量测试效能群。


↙↙↙阅读原文可查看相关链接,并与作者交流