跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaAIjava算法

Spring Cloud + AI:微服务智能路由、故障自愈与日志分析

将 AI 能力融入 Spring Cloud 微服务架构的三大场景:智能路由、故障自愈与日志分析。通过集成 AI 决策引擎、Resilience4j 动态熔断及 ELK 日志分析,实现了基于实时指标的流量调度、自适应故障恢复及异常根因定位。方案涵盖 Java Gateway 过滤、Python AI 推理服务及 Kubernetes 部署,旨在提升系统运维效率与稳定性。

深海蔚蓝发布于 2026/4/6更新于 2026/7/444 浏览
Spring Cloud + AI:微服务智能路由、故障自愈与日志分析

在云原生时代,微服务架构的复杂性带来了路由决策、故障恢复、日志排查三大痛点。将 AI 能力融入 Spring Cloud 生态,可以显著提升系统的自适应能力和运维效率。本文将围绕智能路由、故障自愈、智能日志分析三大场景,给出完整的架构设计与代码实现。

一、整体架构

核心流程:

  • 客户端请求 -> Spring Cloud Gateway + AI 路由策略
  • 服务注册:Nacos 服务注册中心
  • 监控指标:Prometheus + Grafana
  • 熔断保护:Resilience4j 熔断器
  • 日志采集:Filebeat / Fluentd -> ELK Stack
  • AI 决策引擎:提供路由、熔断、日志分析支持

二、AI 增强的技术栈选型

模块技术选型AI 增强点
服务网关Spring Cloud Gateway基于实时指标的智能路由
服务注册NacosAI 预测节点健康度
容错保护Resilience4jAI 动态熔断阈值
配置中心Nacos ConfigAI 推荐最优配置
日志采集Filebeat + ELKAI 异常检测与根因分析
消息驱动Kafka / RabbitMQAI 事件关联分析
AI 服务Python (FastAPI + vLLM)提供 LLM 推理接口

三、智能路由:基于 AI 的动态流量调度

3.1 路由决策流程
  1. 请求到达 Gateway
  2. GlobalFilter 拦截
  3. 查询 AI 路由服务(输入:响应时间、错误率、负载)
  4. 计算最优节点
  5. 设置路由权重,加权随机选择实例
  6. 转发请求,记录路由决策日志
  7. 若 AI 服务不可用,降级为 RoundRobin 默认策略
3.2 自定义 AI 路由过滤器
/**
 * AI 增强的动态路由过滤器
 * 根据后端服务实时指标,通过 AI 模型决策最优路由目标
 */
@Component
public class AiRoutingGlobalFilter implements GlobalFilter, Ordered {
    private final RestTemplate restTemplate;
    private final LoadBalancerClient loadBalancer;
    
    @Value("${ai.routing.service-url:http://localhost:5001/route/decide}")
    private String aiRouteServiceUrl;
    
    @Value("${ai.routing.enabled:true}")
    private boolean aiRoutingEnabled;

    public AiRoutingGlobalFilter(RestTemplate restTemplate, LoadBalancerClient loadBalancer) {
        this.restTemplate = restTemplate;
        this.loadBalancer = loadBalancer;
    }

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        if (!aiRoutingEnabled) {
            return chain.filter(exchange);
        }
        String serviceId = extractServiceId(exchange);
        try {
            // 1. 调用 AI 路由决策服务
            RouteDecisionRequest request = new RouteDecisionRequest(
                serviceId, 
                exchange.getRequest().getPath().value(),
                extractClientInfo(exchange)
            );
            ResponseEntity<RouteDecisionResponse> response = restTemplate.postForEntity(
                aiRouteServiceUrl, 
                request, 
                RouteDecisionResponse.class
            );
            RouteDecisionResponse decision = response.getBody();
            if (decision != null && decision.getPreferredInstance() != null) {
                // 2. 将 AI 推荐的实例注入请求属性
                exchange.getAttributes().put("ai_preferred_instance", decision.getPreferredInstance());
                exchange.getAttributes().put("ai_route_confidence", decision.getConfidence());
            }
        } catch (Exception e) {
            // 降级:AI 服务不可用时使用默认负载均衡策略
            log.warn("AI 路由服务调用失败,降级为默认策略:{}", e.getMessage());
        }
        return chain.filter(exchange);
    }

    @Override
    public int getOrder() {
        return Ordered.HIGHEST_PRECEDENCE + 1000;
    }
}
3.3 AI 路由决策服务(Python 端)
# ai_route_service.py
import time
from dataclasses import dataclass
from typing import Optional
import requests
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI(title="AI Routing Decision Service")
PROMETHEUS_URL = "http://localhost:9090/api/v1/query"

class RouteRequest(BaseModel):
    service_id: str
    request_path: str
    client_ip: str = ""

class RouteResponse(BaseModel):
    preferred_instance: Optional[str] = None
    confidence: float = 0.0
    reason: str = ""
    latency_ms: float = 0.0

def query_prometheus(query: str) -> dict:
    """从 Prometheus 查询实时指标。"""
    resp = requests.get(PROMETHEUS_URL, params={"query": query}, timeout=5)
    return resp.json().get("data", {}).get("result", [])

@app.post("/route/decide", response_model=RouteResponse)
async def decide_route(req: RouteRequest):
    """基于实时指标 + AI 模型决策最优路由实例。评估维度:响应时间、错误率、CPU 使用率、连接数。"""
    start = time.perf_counter()
    # 查询各实例的 P99 响应时间
    latency_results = query_prometheus(f'histogram_quantile(0.99, sum(rate(http_server_requests_seconds_bucket{{service="{req.service_id}"}}[5m])) by (le, instance))')
    # 查询各实例的错误率
    error_results = query_prometheus(f'sum(rate(http_server_requests_seconds_count{{service="{req.service_id}",status=~"5.."}}[5m])) by (instance) / sum(rate(http_server_requests_seconds_count{{service="{req.service_id}"}}[5m])) by (instance)')
    # 查询 CPU 使用率
    cpu_results = query_prometheus(f'process_cpu_usage{{service="{req.service_id}"}}')
    
    scores = {}
    for item in latency_results:
        instance = item["metric"].get("instance", "")
        latency = float(item["value"][1])
        scores[instance] = scores.get(instance, 0) + latency * 0.4
    for item in error_results:
        instance = item["metric"].get("instance", "")
        error_rate = float(item["value"][1])
        scores[instance] = scores.get(instance, 0) + error_rate * 0.35
    for item in cpu_results:
        instance = item["metric"].get("instance", "")
        cpu = float(item["value"][1])
        scores[instance] = scores.get(instance, 0) + cpu * 0.25

    if scores:
        best_instance = min(scores, key=scores.get)
        best_score = scores[best_instance]
        confidence = max(0.0, 1.0 - best_score)
    else:
        best_instance = None
        confidence = 0.0
        
    latency = (time.perf_counter() - start) * 1000
    return RouteResponse(
        preferred_instance=best_instance,
        confidence=round(confidence, 4),
        reason=f"综合评分:{scores}" if scores else "无可用指标",
        latency_ms=round(latency, 2),
    )
3.4 Gateway 路由配置
server:
  port: 8080
spring:
  cloud:
    gateway:
      routes:
        - id: service-a
          uri: lb://service-a
          predicates:
            - Path=/api/a/**
          filters:
            - name: Retry
              args:
                retries: 3
                statuses: BAD_GATEWAY, GATEWAY_TIMEOUT
                backoff:
                  firstBackoff: 100ms
                  maxBackoff: 500ms
        - id: service-b
          uri: lb://service-b
          predicates:
            - Path=/api/b/**
ai:
  routing:
    enabled: true
    service-url: http://localhost:5001/route/decide
    fallback-strategy: round-robin
    cache-ttl: 10s

四、故障自愈:AI 驱动的动态熔断与恢复

4.1 故障自愈流程
  1. 服务调用 -> Resilience4j 熔断器
  2. 正常调用或快速失败/降级
  3. 判断异常率是否超阈值?
  4. 是 -> AI 分析异常模式
  5. 是否为系统性故障?
    • 是 -> 触发全局熔断
    • 否 -> 定向熔断问题实例
  6. AI 推荐恢复策略,逐步放流验证
  7. 验证通过 -> 恢复全量流量
  8. AI 降级响应生成
4.2 动态熔断配置管理
/**
 * AI 驱动的动态熔断配置管理器
 * 根据 AI 分析结果动态调整 Resilience4j 熔断器参数
 */
@Component
@Slf4j
public class AiCircuitBreakerManager {
    private final CircuitBreakerRegistry circuitBreakerRegistry;
    private final RestTemplate restTemplate;
    
    @Value("${ai.circuit-breaker.service-url:http://localhost:5001/circuit-breaker/config}")
    private String aiConfigUrl;

    @Scheduled(fixedRate = 30_000) // 每 30 秒动态调整一次
    public void adjustCircuitBreakerConfig() {
        for (String name : circuitBreakerRegistry.getAllCircuitBreakers().stream().map(CircuitBreaker::getName).toList()) {
            CircuitBreaker cb = circuitBreakerRegistry.circuitBreaker(name);
            CircuitBreaker.Metrics metrics = cb.getMetrics();
            CircuitBreakerMetrics snapshot = new CircuitBreakerMetrics(
                name, metrics.getFailureRate(), metrics.getSlowCallRate(),
                metrics.getNumberOfSuccessfulCalls(), metrics.getNumberOfFailedCalls(),
                metrics.getNumberOfBufferedCalls()
            );
            try {
                ResponseEntity<AiCircuitBreakerConfig> response = restTemplate.postForEntity(
                    aiConfigUrl, snapshot, AiCircuitBreakerConfig.class
                );
                AiCircuitBreakerConfig recommended = response.getBody();
                if (recommended != null && recommended.confidence() > 0.8) {
                    applyConfig(name, recommended);
                }
            } catch (Exception e) {
                log.warn("AI 熔断配置服务调用失败:{}", e.getMessage());
            }
        }
    }

    private void applyConfig(String name, AiCircuitBreakerConfig config) {
        CircuitBreakerConfig newConfig = CircuitBreakerConfig.custom()
            .failureRateThreshold(config.failureRateThreshold())
            .slowCallRateThreshold(config.slowCallRateThreshold())
            .slowCallDurationThreshold(Duration.ofMillis(config.slowCallDurationMs()))
            .waitDurationInOpenState(Duration.ofMillis(config.waitDurationInOpenMs()))
            .permittedNumberOfCallsInHalfOpenState(config.permittedCallsInHalfOpen())
            .slidingWindowType(CircuitBreakerConfig.SlidingWindowType.COUNT_BASED)
            .slidingWindowSize(config.slidingWindowSize())
            .build();
        circuitBreakerRegistry.replace(name, newConfig);
        log.info("已更新熔断器 [{}] 配置:{}", name, config);
    }
}
4.3 AI 降级响应服务
/**
 * AI 增强的服务降级处理器
 * 在熔断触发时调用 LLM 生成有意义的降级响应
 */
@Component
public class AiFallbackHandler {
    private final RestTemplate restTemplate;
    
    @Value("${ai.fallback.service-url:http://localhost:5001/fallback/generate}")
    private String fallbackServiceUrl;

    public ResponseEntity<String> handleFallback(String serviceName, String path, Throwable throwable) {
        FallbackRequest request = new FallbackRequest(
            serviceName, path, throwable.getClass().getSimpleName(), throwable.getMessage()
        );
        try {
            ResponseEntity<String> response = restTemplate.postForEntity(
                fallbackServiceUrl, request, String.class
            );
            return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(response.getBody());
        } catch (Exception e) {
            // AI 服务也不可用,返回静态兜底
            return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE)
                .body(String.format("{ \"code\": 503, \"message\": \"服务暂时不可用,请稍后重试\", \"service\": \"%s\", \"timestamp\": \"%s\" }", serviceName, Instant.now()));
        }
    }
}

五、智能日志分析:AI 驱动的异常检测与根因定位

5.1 日志分析流水线

微服务日志输出 -> Filebeat 采集 -> Logstash 清洗/转换 -> Elasticsearch 存储 -> Kibana 可视化 -> AI 日志分析模块 -> 异常检测/根因分析 -> 告警通知(钉钉/邮件/Slack)-> 基线更新

5.2 日志异常检测(Python AI 模块)
# ai_log_analyzer.py
import re
import time
from datetime import datetime, timezone
from typing import Optional
import requests
from elasticsearch import Elasticsearch
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI(title="AI Log Analyzer")
es = Elasticsearch(["http://localhost:9200"])
LLM_API_URL = "http://localhost:8000/v1/chat"

class LogEntry(BaseModel):
    timestamp: str
    service: str
    level: str
    message: str
    trace_id: str = ""
    span_id: str = ""
    stack_trace: str = ""

class AnalysisResult(BaseModel):
    is_anomaly: bool
    severity: str  # critical, warning, info
    category: str  # OOM, NetworkError, Timeout, etc.
    root_cause: str
    suggestion: str
    confidence: float

ANOMALY_PATTERNS = [
    (r"OutOfMemoryError|OOM|heap space", "OOM", "critical"),
    (r"Connection refused|ConnectTimeoutException", "NetworkError", "critical"),
    (r"SocketTimeoutException|Read timed out", "Timeout", "warning"),
    (r"DeadlockLoserDataAccessException", "Deadlock", "critical"),
    (r"CircuitBreakerOpenException", "CircuitBreakerOpen", "warning"),
    (r"TooManyRequests|RateLimitExceeded", "RateLimit", "warning"),
    (r"StackOverflowError", "StackOverflow", "critical"),
    (r"Segmentation fault|SIGSEGV", "SegFault", "critical"),
]

def rule_based_detect(log: LogEntry) -> Optional[AnalysisResult]:
    """基于规则的快速异常检测。"""
    if log.level not in ("ERROR", "WARN", "FATAL"):
        return None
    for pattern, category, severity in ANOMALY_PATTERNS:
        if re.search(pattern, log.message + log.stack_trace, re.IGNORECASE):
            return AnalysisResult(
                is_anomaly=True, severity=severity, category=category,
                root_cause=f"规则匹配:{pattern}", suggestion="", confidence=0.9
            )
    return None

def llm_root_cause_analysis(log: LogEntry) -> AnalysisResult:
    """调用 LLM 进行深度根因分析。"""
    prompt = f"""你是一位资深微服务运维专家。请分析以下异常日志,给出:
    1. 异常类别
    2. 严重程度(critical/warning/info)
    3. 根因分析
    4. 修复建议
    日志信息:
    - 时间:{log.timestamp}
    - 服务:{log.service}
    - 级别:{log.level}
    - 消息:{log.message}
    - TraceID: {log.trace_id}
    - 堆栈:{log.stack_trace[:2000]}
    请以 JSON 格式回答,字段:category, severity, root_cause, suggestion"""
    try:
        response = requests.post(LLM_API_URL, json={"prompt": prompt, "max_tokens": 1024, "temperature": 0.3}, timeout=30)
        result = response.json().get("response", "")
        return AnalysisResult(
            is_anomaly=True, severity="warning", category="Unknown",
            root_cause=result[:500], suggestion="请查看详细分析", confidence=0.7
        )
    except Exception as e:
        return AnalysisResult(
            is_anomaly=True, severity="warning", category="AnalysisFailed",
            root_cause=f"LLM 分析失败:{str(e)}", suggestion="请人工排查", confidence=0.3
        )

@app.post("/log/analyze", response_model=AnalysisResult)
async def analyze_log(log: LogEntry):
    """分析单条日志:1. 先用规则引擎快速匹配 2. 规则未命中时调用 LLM 深度分析"""
    result = rule_based_detect(log)
    if result and result.confidence >= 0.8:
        return result
    return llm_root_cause_analysis(log)

@app.post("/log/batch-analyze")
async def batch_analyze(service: str, minutes: int = 10):
    """批量分析指定服务最近 N 分钟的 ERROR 日志。"""
    query = {
        "query": {
            "bool": {
                "must": [
                    {"term": {"service": service}},
                    {"term": {"level": "ERROR"}},
                    {"range": {"timestamp": {"gte": f"now-{minutes}m", "lte": "now"}}}
                ]
            }
        },
        "size": 100,
        "sort": [{"timestamp": {"order": "desc"}}]
    }
    result = es.search(index="microservice-logs-*", body=query)
    hits = result["hits"]["hits"]
    anomalies = []
    for hit in hits:
        source = hit["_source"]
        log = LogEntry(**source)
        analysis = await analyze_log(log)
        if analysis.is_anomaly:
            anomalies.append({"log": source, "analysis": analysis.model_dump()})
    return {"service": service, "total_errors": len(hits), "anomalies_found": len(anomalies), "details": anomalies}
5.3 Spring Boot 日志输出配置
<!-- logback-spring.xml -->
<configuration>
    <appender name="JSON_CONSOLE" class="ch.qos.logback.core.ConsoleEncoder">
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <includeMdc>true</includeMdc>
            <customFields>{ "service": "${spring.application.name}", "env": "${SPRING_PROFILES_ACTIVE:default}" }</customFields>
        </encoder>
    </appender>
    <appender name="AI_ALERT" class="com.example.log.AiAlertAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
    </appender>
    <root level="INFO">
        <appender-ref ref="JSON_CONSOLE"/>
        <appender-ref ref="AI_ALERT"/>
    </root>
</configuration>
5.4 自定义 AI 告警 Appender
/**
 * 自定义 Logback Appender
 * 将 ERROR 级别日志实时发送到 AI 分析模块
 */
@Component
public class AiAlertAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
    private final RestTemplate restTemplate = new RestTemplate();
    
    @Value("${ai.log-analyzer.url:http://localhost:5001/log/analyze}")
    private String analyzerUrl;

    @Override
    protected void append(ILoggingEvent event) {
        if (!event.getLevel().isGreaterOrEqual(Level.ERROR)) {
            return;
        }
        Map<String, Object> logEntry = Map.of(
            "timestamp", Instant.ofEpochMilli(event.getTimeStamp()).toString(),
            "service", event.getLoggerName(),
            "level", event.getLevel().toString(),
            "message", event.getFormattedMessage(),
            "trace_id", MDC.get("traceId") != null ? MDC.get("traceId") : "",
            "stack_trace", getStackTrace(event)
        );
        try {
            restTemplate.postForEntity(analyzerUrl, logEntry, AnalysisResult.class);
        } catch (Exception e) {
            addWarn("AI 日志分析服务不可用:" + e.getMessage());
        }
    }

    private String getStackTrace(ILoggingEvent event) {
        if (event.getThrowableProxy() == null) return "";
        return StreamSupport.stream(event.getThrowableProxy().getStackTraceElementProxyArray(), false)
            .map(Object::toString).collect(Collectors.joining("\n"));
    }
}

六、Kubernetes 部署编排

6.1 部署拓扑

资源分配估算:

  • Spring Cloud 业务服务:35%
  • AI 推理服务 (GPU):25%
  • Elasticsearch + Logstash:15%
  • Prometheus + Grafana:10%
  • Nacos 注册中心:5%
  • Kafka 消息队列:5%
  • 其他基础设施:5%
6.2 核心部署清单
# k8s/ai-inference-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ai-inference-service
  namespace: ai-platform
spec:
  replicas: 2
  selector:
    matchLabels:
      app: ai-inference
  template:
    metadata:
      labels:
        app: ai-inference
    spec:
      containers:
        - name: inference
          image: registry.example.com/ai-inference:v2.0.0
          ports:
            - containerPort: 5001
          resources:
            limits:
              nvidia.com/gpu: 1
              memory: "16Gi"
            requests:
              memory: "8Gi"
          env:
            - name: LLM_API_URL
              value: "http://llm-service:8000/v1/chat"
            - name: PROMETHEUS_URL
              value: "http://prometheus:9090"
            - name: ELASTICSEARCH_URL
              value: "http://elasticsearch:9200"
          livenessProbe:
            httpGet:
              path: /health
              port: 5001
            initialDelaySeconds: 30
            periodSeconds: 15
          readinessProbe:
            httpGet:
              path: /health
              port: 5001
            initialDelaySeconds: 10
            periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
  name: ai-inference-service
  namespace: ai-platform
spec:
  selector:
    app: ai-inference
  ports:
    - port: 5001
      targetPort: 5001
  type: ClusterIP

七、效果评估与监控

7.1 关键指标看板
指标说明目标值
路由决策延迟AI 路由服务的响应时间< 50ms (P99)
路由准确率AI 路由选择的实例是否最优> 90%
故障检测时间从异常发生到 AI 检测到的延迟< 30s
自愈成功率AI 触发的自愈操作成功恢复的比例> 85%
日志分析准确率AI 根因分析的准确程度> 80%
误报率AI 误报异常的比例< 5%
7.2 Grafana 监控面板配置
# grafana-dashboard-ai-metrics.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: ai-metrics-dashboard
  namespace: monitoring
data:
  dashboard.json: |
    {
      "dashboard": {
        "title": "AI 增强微服务监控",
        "panels": [
          {
            "title": "AI 路由决策延迟",
            "type": "graph",
            "targets": [
              {
                "expr": "histogram_quantile(0.99, sum(rate(ai_route_decision_duration_seconds_bucket[5m])) by (le))"
              }
            ]
          },
          {
            "title": "AI 熔断器调整次数",
            "type": "stat",
            "targets": [
              {
                "expr": "sum(increase(ai_circuit_breaker_adjustments_total[1h]))"
              }
            ]
          },
          {
            "title": "日志异常检测量",
            "type": "graph",
            "targets": [
              {
                "expr": "sum(rate(ai_log_anomaly_detected_total[5m])) by (severity)"
              }
            ]
          }
        ]
      }
    }

八、总结与展望

本文详细介绍了 Spring Cloud + AI 的三大核心应用场景:

场景传统方案痛点AI 增强价值
智能路由静态负载均衡,无法感知真实负载基于多维指标的动态最优实例选择
故障自愈固定阈值熔断,误报/漏报率高动态阈值 + AI 降级响应生成
日志分析人工排查,响应慢,经验依赖自动异常检测 + 根因定位 + 修复建议

未来演进方向:

  • AIOps 平台化:将 AI 运维能力抽象为通用平台,支持多业务线接入
  • 多模态分析:结合指标、日志、链路追踪(Trace)进行跨维度关联分析
  • 强化学习:让 AI 从历史运维数据中学习,持续优化路由和熔断策略
  • 边缘部署:将轻量 AI 推理模型下沉到边缘节点,实现近端决策

参考资源:

  • Spring Cloud Gateway:https://spring.io/projects/spring-cloud-gateway
  • Resilience4j:https://resilience4j.readme.io
  • Elasticsearch:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
  • vLLM:https://docs.vllm.ai

目录

  1. 一、整体架构
  2. 二、AI 增强的技术栈选型
  3. 三、智能路由:基于 AI 的动态流量调度
  4. 3.1 路由决策流程
  5. 3.2 自定义 AI 路由过滤器
  6. 3.3 AI 路由决策服务(Python 端)
  7. airouteservice.py
  8. 3.4 Gateway 路由配置
  9. 四、故障自愈:AI 驱动的动态熔断与恢复
  10. 4.1 故障自愈流程
  11. 4.2 动态熔断配置管理
  12. 4.3 AI 降级响应服务
  13. 五、智能日志分析:AI 驱动的异常检测与根因定位
  14. 5.1 日志分析流水线
  15. 5.2 日志异常检测(Python AI 模块)
  16. ailoganalyzer.py
  17. 5.3 Spring Boot 日志输出配置
  18. 5.4 自定义 AI 告警 Appender
  19. 六、Kubernetes 部署编排
  20. 6.1 部署拓扑
  21. 6.2 核心部署清单
  22. k8s/ai-inference-deployment.yaml
  23. 七、效果评估与监控
  24. 7.1 关键指标看板
  25. 7.2 Grafana 监控面板配置
  26. grafana-dashboard-ai-metrics.yaml
  27. 八、总结与展望
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • llama-recipes 项目架构设计解析
  • 自然语言处理在客户服务中的实战:从模型应用到聊天机器人开发
  • 基于 SSM 和 Vue 的在线投稿系统设计与实现
  • 5 款免费 AIGC 检测工具推荐与降重方法
  • Python 拼接地图瓦片常见错误及解决方案
  • UZH RPG 组 AC-MPC:微分 MPC 赋能强化学习实现无人机竞速
  • Xilinx FPGA Bit 文件加密配置详解
  • 基于 SSM 和 Vue 的在线投稿系统设计与实现
  • GeoAI 快速上手:地理空间 AI 分析指南
  • 阿里开源 PageAgent:让 AI 住进网页,用自然语言操控界面
  • Spring Boot 实战:从零设计短链系统(附代码与数据库设计)
  • SQL Server 表行转列方法详解
  • IntelliJ IDEA 创建 Spring Boot 项目完整指南
  • LLM 对齐方案升级:WizardLM、BackTranslation 与 Self Alignment
  • vscode copilot 的配置文件提示警告
  • 赋予大型语言模型多模态能力的技术架构与训练方法
  • 数据结构:哈希表原理与 C 语言实现
  • SpringBoot 开启 Gzip 压缩的两种方式:GeoJSON 数据优化
  • 基于知识图谱的电影推荐问答系统 Python Django Neo4j
  • 大模型 RAG 应用中的两种高级检索模式:融合检索与递归检索

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online