
多个人工智能代理动态处理日志
- Rifx.Online
- Technology , Machine Learning , Generative AI
- 28 Feb, 2025
在上一篇文章中,我讨论了如何使用自定义日志附加器捕获相关的日志事件并将其转发到AI动作处理器进行解释。该附加器监听特定模式,如错误消息或客户支持相关日志。在这一扩展方法中,我们通过集成多个代理来进一步扩展这一点,每个代理旨在处理不同类型的日志事件,例如客户支持问题、性能相关警报、安全事件以及特定业务功能的日志处理。
🧠 准备好测试你所学到的知识了吗?在阅读完文章后尝试在EasyQz上进行测验!📚🎯
作者提供的图片
1. 日志附加器:捕获日志事件
这是更新后的日志附加器,现在可以处理来自多个代理的日志:
public class MultiLogAIAgentAppender extends AppenderBase<ILoggingEvent> {
@Override
protected void append(ILoggingEvent eventObject) {
if (eventObject.getLevel().toString().equals("ERROR")) {
OpenAiActionProcessor processor \= new OpenAiActionProcessor();
try {
processor.processSingleAction(eventObject.getMessage());
} catch (AIProcessingException e) {
log.error("Failed to process AI action: " + e.getMessage());
}
}
}
}
2. AI处理器:多智能体的决策
AI动作处理器解释日志消息的内容并触发相关代理的操作。例如,我们现在有三个不同的代理,每个代理专注于特定类型的日志事件:
- CustomerSupportLogAgent:处理与客户支持相关的日志,例如创建支持票或升级高优先级问题。
- PerformanceLogAgent:处理与性能相关的问题,如API延迟或资源扩展。
- SecurityLogAgent:专注于安全事件,升级可疑活动或潜在的安全漏洞。
下面是PerformanceLogAgent
处理与性能相关的日志的示例:
@Slf4j
@Agent(groupName = "Performance related alerts", groupDescription = "Handling log events related to performance issues")
public class PerformanceLogAgent {
@Action(description = "Analyze the performance issue and suggest a solution")
public String analyzePerformanceIssue(@Prompt(describe = "API latency details") String apiDetails) {
log.info("Performance issue detected: {}. Suggest scaling resources.", apiDetails);
return "Performance issue detected: " + apiDetails + ". Suggest scaling resources.";
}
}
同样,SecurityLogAgent
负责处理与安全相关的日志:
@Slf4j
@Agent(groupName = "Security Incidents", groupDescription = "Handling log events related to security incidents")
public class SecurityLogAgent {
@Action(description = "Escalate the security incident to the security team")
public String escalateSecurityIncident(@Prompt(describe = "Suspicious activity detected in logs") String ipAddress) {
log.info("Escalating security incident: {}", ipAddress);
return "Security incident reported: " + ipAddress;
}
}
3. 基于日志内容的动态操作
这个系统的独特之处在于它能够动态处理日志事件,而无需在日志类型和操作之间进行明确的映射。AI 操作处理器利用 Agentic AI 根据日志消息的内容来确定采取何种操作。这提供了一个高度适应性和灵活的系统,能够随着新代理和操作的添加而扩展。
让我们看看不同的日志事件如何触发不同的操作:
private static final Logger logger = LoggerFactory.getLogger(LogHandlingTest.class);
public static void main(String[] args) {
logger.error("ERROR customer-support error, customer ID 12345, query: \\"What is the status of my order?\\"");
logger.error("ERROR performance-alert latency issue detected on API /getUserDetails");
logger.error("ERROR security-alert suspicious login attempt detected from IP: 192.168.1.1");
}
To know more about how to use Tools4AI visit here
在这个例子中发生了什么?
- 第一个日志触发了 CustomerSupportLogAgent,为客户创建了一个支持工单。
- 第二个日志触发了 PerformanceLogAgent,分析性能问题并建议扩展资源。
- 第三个日志触发了 SecurityLogAgent,将潜在的安全事件升级到安全团队。
为什么会自动发生
- AI 理解日志上下文:通过自然语言处理,系统识别每个日志事件的上下文。
- 代理框架动态调用正确的方法:根据日志消息,AI 处理器决定执行哪个操作。
- 不需要显式的基于规则的映射:系统根据日志内容自动适应,使其具有可扩展性和灵活性。
一些其他可以以类似方式添加的日志操作代理是
Image by Author
1. 性能日志代理
- 目的:监控与性能相关的问题,例如 API 延迟、慢数据库查询或资源瓶颈。
- 操作:
- 分析性能问题:根据性能日志建议解决方案,如扩展资源或优化代码。
- 记录延迟阈值超标:如果超出特定的延迟或处理时间阈值,则发出警报。
示例:
@Agent(groupName = “性能警报”, groupDescription = “处理与性能问题相关的日志事件”) public class PerformanceLogAgent {
@Action(description = "分析性能问题并建议解决方案")
public String analyzePerformanceIssue(@Prompt(describe = "API 延迟详情") String apiDetails) {
log.info("检测到性能问题:{}。建议扩展资源。", apiDetails);
return "检测到性能问题:" + apiDetails + "。建议扩展资源。";
}
@Action(description = "记录延迟阈值超标")
public String logLatencyExceedance(@Prompt(describe = "超出阈值的延迟详情") String latencyDetails) {
log.error("延迟阈值超标:{}", latencyDetails);
return "延迟阈值超标:" + latencyDetails;
}
}
2. 数据库日志代理
- 目的: 捕获与数据库相关的问题,如慢查询、连接超时或故障。
- 操作:
- 查询执行超时: 当数据库查询耗时过长时触发一个操作。
- 数据库连接失败: 自动将连接问题上报给数据库团队。
@Agent(groupName = “Database Issues”, groupDescription = “Handling log events related to database operations”) public class DatabaseLogAgent {
@Action(description = "Log query execution timeout")
public String logQueryTimeout(@Prompt(describe = "Query details causing timeout") String queryDetails) {
log.error("Query execution timeout: {}", queryDetails);
return "Query execution timeout: " + queryDetails;
}
@Action(description = "Escalate database connection failure")
public String escalateDbConnectionIssue(@Prompt(describe = "Connection error message") String errorMessage) {
log.error("Database connection failure: {}", errorMessage);
return "Database connection failure: " + errorMessage;
}
}
3. 安全日志代理(扩展)
- 目的:处理安全事件,例如可疑活动、未经授权的访问尝试或潜在漏洞。
- 操作:
- 报告可疑活动:标记异常行为或模式,如来自未知 IP 的登录尝试。
- 审核日志条目:为敏感操作创建详细的审核日志,例如数据修改、删除或访问受限数据。
@Agent(groupName = “Security Incidents”, groupDescription = “Handling the log events related to security incidents”) public class ExtendedSecurityLogAgent {
@Action(description = "将安全事件升级到安全团队")
public String escalateSecurityIncident(@Prompt(describe = "在日志中检测到可疑活动") String ipAddress) {
log.info("升级安全事件:{}", ipAddress);
return "安全事件已报告:" + ipAddress;
}
@Action(description = "审核敏感操作的日志")
public String auditSensitiveAction(@Prompt(describe = "敏感操作详情") String actionDetails) {
log.info("审核敏感操作:{}", actionDetails);
return "已为敏感操作创建审核日志:" + actionDetails;
}
}
4. 错误日志代理
- 目的:专注于处理一般错误相关日志,如异常、系统故障或关键问题。
- 操作:
- 捕获异常细节:记录异常堆栈跟踪,并通知相关团队进行进一步调查。
- 系统故障警报:在检测到系统故障或崩溃时触发警报或通知。
@Agent(groupName = “Error Monitoring”, groupDescription = “Handling error logs for system failures and exceptions”) public class ErrorLogAgent {
@Action(description = "Capture exception details")
public String captureExceptionDetails(@Prompt(describe = "Exception message and stack trace") String exceptionDetails) {
log.error("Exception captured: {}", exceptionDetails);
return "Exception captured: " + exceptionDetails;
}
@Action(description = "Notify about system failure")
public String systemFailureAlert(@Prompt(describe = "System failure details") String failureDetails) {
log.error("System failure detected: {}", failureDetails);
return "System failure alert: " + failureDetails;
}
}
5. 审计日志代理
- 目的:跟踪系统内的操作和变更,例如用户活动、数据修改或管理操作。
- 操作:
- 记录用户活动:记录用户操作,如登录、注销和数据访问。
- 管理活动日志:记录关键的管理操作,如删除记录或修改配置。
@Agent(groupName = “Audit Logs”, groupDescription = “Handling audit logs for user and admin actions”) public class AuditLogAgent {
@Action(description = "Log user activity")
public String logUserActivity(@Prompt(describe = "User action details") String userAction) {
log.info("User activity logged: {}", userAction);
return "User activity logged: " + userAction;
}
@Action(description = "Log admin activity")
public String logAdminActivity(@Prompt(describe = "Admin action details") String adminAction) {
log.info("Admin activity logged: {}", adminAction);
return "Admin activity logged: " + adminAction;
}
}
6. 网络日志代理
- 目的: 处理与网络性能、故障或连接问题相关的日志。
- 操作:
- 网络延迟: 对网络延迟或性能下降发出警报。
- 连接问题: 检测并升级网络连接问题。
@Agent(groupName = “网络问题”, groupDescription = “处理与网络性能和连接相关的日志事件”) public class NetworkLogAgent {
@Action(description = "记录网络延迟")
public String logNetworkLatency(@Prompt(describe = "网络延迟详情") String latencyDetails) {
log.error("检测到网络延迟: {}", latencyDetails);
return "检测到网络延迟: " + latencyDetails;
}
@Action(description = "通知网络连接问题")
public String notifyNetworkIssue(@Prompt(describe = "连接问题详情") String issueDetails) {
log.error("网络连接问题: {}", issueDetails);
return "网络连接问题: " + issueDetails;
}
}
7. 合规日志代理
- 目的:监控与合规相关的活动日志,如访问控制、数据保护或法规遵循。
- 操作:
- 记录合规违规:当出现合规规则的违规时触发警报。
- 记录合规措施:记录为纠正或调查合规问题而采取的措施。
@Agent(groupName = “Compliance Logs”, groupDescription = “Handling log events related to compliance violations”) public class ComplianceLogAgent {
@Action(description = "Log compliance violation")
public String logComplianceViolation(@Prompt(describe = "Compliance violation details") String violationDetails) {
log.warn("Compliance violation detected: {}", violationDetails);
return "Compliance violation logged: " + violationDetails;
}
@Action(description = "Record compliance action taken")
public String recordComplianceAction(@Prompt(describe = "Corrective action details") String actionDetails) {
log.info("Compliance corrective action taken: {}", actionDetails);
return "Compliance corrective action recorded: " + actionDetails;
}
}
除了上述内容,您还可以添加特定于业务的代理,它们可以根据日志采取行动。
1. 订单状态日志代理
目的:处理与订单处理相关的日志事件,例如订单创建、订单状态更新或订单取消。
- 操作:
- 跟踪订单创建:记录并触发操作,当新订单被创建时。
- 跟踪订单状态变化:记录订单状态变化(例如,从“待处理”到“已发货”)。
- 警报失败的订单处理:如果订单无法成功处理,触发警报。
示例:
@Agent(groupName = “订单处理”, groupDescription = “处理与订单处理相关的日志事件”) public class OrderStatusLogAgent {
@Action(description = "记录订单创建")
public String logOrderCreation(@Prompt(describe = "订单详细信息,如订单ID和客户信息") String orderDetails) {
log.info("订单创建成功: {}", orderDetails);
return "订单创建成功: " + orderDetails;
}
@Action(description = "记录订单状态变化")
public String logOrderStatusChange(@Prompt(describe = "订单ID和新状态") String orderStatusDetails) {
log.info("订单状态已更改: {}", orderStatusDetails);
return "订单状态已更新: " + orderStatusDetails;
}
@Action(description = "警报订单处理失败")
public String alertFailedOrder(@Prompt(describe = "错误或失败详细信息") String failureDetails) {
log.error("订单处理失败: {}", failureDetails);
return "订单处理失败警报: " + failureDetails;
}
}
2. 警报支付失败日志代理
目的:捕获支付失败事件(例如,拒绝的支付、交易错误)并升级问题。
- 操作:
- 记录支付失败:在支付失败时捕获日志(例如,由于资金不足或网络问题)。
- 警报支付网关问题:如果支付网关出现问题,则触发警报。
- 通知欺诈检测:如果检测到可疑的支付模式,则向欺诈检测系统发送警报。
@Agent(groupName = “Payment Processing”, groupDescription = “Handling log events related to payment failures”) public class PaymentFailureLogAgent {
@Action(description = "Log payment failure")
public String logPaymentFailure(@Prompt(describe = "Payment details including payment method, order ID, and failure reason") String paymentDetails) {
log.error("Payment failure detected: {}", paymentDetails);
return "Payment failure logged: " + paymentDetails;
}
@Action(description = "Alert payment gateway issue")
public String alertPaymentGatewayIssue(@Prompt(describe = "Error message from payment gateway") String gatewayErrorMessage) {
log.error("Payment gateway issue: {}", gatewayErrorMessage);
return "Payment gateway issue alert: " + gatewayErrorMessage;
}
@Action(description = "Notify fraud detection system")
public String notifyFraudDetection(@Prompt(describe = "Suspicious payment pattern details") String suspiciousPatternDetails) {
log.warn("Suspicious payment detected: {}", suspiciousPatternDetails);
return "Fraud detection alert: " + suspiciousPatternDetails;
}
}
3. 自定义业务工作流日志代理
目的:处理自定义业务工作流的日志事件,例如库存管理、运输或客户忠诚度计划。
- 操作:
- 跟踪库存更新:在库存水平更新时记录事件(例如,添加或移除商品)。
- 跟踪运输状态:捕获订单运输状态的更新(例如,“已发货”、“已交付”)。
- 忠诚度计划积分更新:当客户的忠诚度积分更新时触发操作(例如,当他们进行购买时)。
@Agent(groupName = “Business Workflow”, groupDescription = “Handling log events related to business workflows like inventory, shipping, etc.”) public class CustomBusinessWorkflowLogAgent {
@Action(description = "Track inventory update")
public String trackInventoryUpdate(@Prompt(describe = "Inventory update details such as product ID and change in stock") String inventoryDetails) {
log.info("Inventory updated: {}", inventoryDetails);
return "Inventory updated: " + inventoryDetails;
}
@Action(description = "Track shipping status")
public String trackShippingStatus(@Prompt(describe = "Order ID and new shipping status") String shippingStatusDetails) {
log.info("Shipping status updated: {}", shippingStatusDetails);
return "Shipping status updated: " + shippingStatusDetails;
}
@Action(description = "Update customer loyalty points")
public String updateLoyaltyPoints(@Prompt(describe = "Customer ID and points update details") String loyaltyDetails) {
log.info("Customer loyalty points updated: {}", loyaltyDetails);
return "Loyalty points updated for customer: " + loyaltyDetails;
}
}
4. 针对特定业务日志的自定义操作流程
- 您还可以创建一个复杂操作流程,根据多个业务参数动态捕获和处理日志。这可以包括促销、折扣、退款请求等工作流程。每个这些日志都可以与系统应采取的特定操作关联。
示例:退款请求日志代理
@Agent(groupName = “退款处理”, groupDescription = “处理退款请求及相关日志”) public class RefundRequestLogAgent {
@Action(description = "记录退款请求详情")
public String logRefundRequest(@Prompt(describe = "退款请求详情,例如客户ID和订单ID") String refundRequestDetails) {
log.info("退款请求已记录: {}", refundRequestDetails);
return "退款请求已记录: " + refundRequestDetails;
}
@Action(description = "批准退款")
public String approveRefund(@Prompt(describe = "退款详情,例如金额和原因") String refundDetails) {
log.info("退款已批准: {}", refundDetails);
return "退款已批准: " + refundDetails;
}
@Action(description = "拒绝退款")
public String rejectRefund(@Prompt(describe = "退款拒绝原因") String rejectionReason) {
log.error("退款已拒绝: {}", rejectionReason);
return "退款因以下原因被拒绝: " + rejectionReason;
}
}
自定义业务特定日志代理的关键优势:
- 量身定制的自动化:每个日志事件触发特定于业务的操作,增强了针对您组织独特流程的自动化(例如,订单处理、支付处理)。
- 无缝集成:这些代理无缝集成到您现有的日志管理系统中,确保业务工作流始终被跟踪和管理。
- 实时处理:系统实时处理日志,能够立即采取行动,例如订单取消、支付失败通知或库存更新。
- 可扩展性:随着业务的增长,您可以扩展框架,为不同的业务工作流添加更多特定代理,确保系统适应不断变化的需求。
这些示例可以根据具体的业务需求进一步扩展和定制,为各种业务场景提供动态、自动化和灵活的日志管理系统。
代理处理的力量 🚀
该系统中多个代理的集成展示了代理 AI 的强大。根据日志内容,系统会自主采取行动,而不依赖于静态的、硬编码的条件。这种灵活性使得该系统非常适合日志可能变化很大的环境,但仍需根据事件的上下文得到精确、可操作的结果。
通过为不同类型的事件(客户支持、性能、安全)结合多个代理,系统变得更加动态。每个代理都专门针对其任务,AI 处理器根据日志数据动态决定最合适的行动方案。
这种方法使组织能够实时处理日志和事件,提高运营效率,并自动化关键工作流程,无论是处理客户查询、优化性能还是升级安全事件。
本文的代码在 这里