基于Agent的智能客服项目(已交付)

news2026/3/24 8:37:20
深度参与了多个智能客服系统的设计与实施见证了 **从传统人工客服到AI Agent的完整转型过程。**今天想和大家分享一下智能客服Agent的技术实现细节以及我在实际项目中总结的效果评估方法。智能客服Agent作为人工智能在企业服务领域的重要应用正在彻底改变传统客服行业的运营模式。从最初的简单关键词匹配到现在基于大语言模型的多轮对话系统智能客服的能力边界在不断扩展。在我参与的项目中我们发现一个设计良好的智能客服Agent不仅能够处理80%以上的常规咨询还能在复杂场景下提供个性化的解决方案。本文将从技 **术架构、核心算法、工程实现和效果评估四个维度全面解析智能客服Agent的构建过程。**我会结合实际案例分享在意图识别、对话管理、知识图谱构建等关键环节的技术选型和优化策略。同时我也会详细介绍如何建立科学的评估体系从准确率、响应时间、用户满意度等多个角度衡量系统效果为大家提供可操作的实施指南。智能客服Agent技术架构概览1.1 整体架构设计智能客服Agent的技术架构需要考虑多个层面的协同工作从用户交互到后端处理每个环节都至关重要。这个架构图展示了从用户输入到系统响应的完整流程。预处理模块负责文本清洗和标准化意图识别和实体抽取并行处理用户输入对话管理器根据当前状态决定后续处理路径。1.2 核心组件详解在实际实现中每个组件都有其特定的技术选型和优化策略class CustomerServiceAgent: def __init__(self): self.preprocessor TextPreprocessor() self.intent_classifier IntentClassifier() self.entity_extractor EntityExtractor() self.dialog_manager DialogManager() self.knowledge_base KnowledgeBase() self.response_generator ResponseGenerator() def process_user_input(self, user_input, session_id): 处理用户输入的主流程 # 1. 预处理 cleaned_text self.preprocessor.clean(user_input) # 2. 意图识别和实体抽取 intent self.intent_classifier.predict(cleaned_text) entities self.entity_extractor.extract(cleaned_text) # 3. 对话状态管理 dialog_state self.dialog_manager.update_state( session_id, intent, entities ) # 4. 生成响应 if dialog_state.is_complete(): response self._generate_final_response(dialog_state) else: response self._generate_clarification(dialog_state) return response def _generate_final_response(self, dialog_state): 生成最终回复 # 知识库检索 relevant_docs self.knowledge_base.search( dialog_state.intent, dialog_state.entities ) # 回复生成 response self.response_generator.generate( dialog_state, relevant_docs ) return response这段代码展示了智能客服Agent的核心处理逻辑。关键在于process_user_input方法的设计它将复杂的处理流程分解为清晰的步骤每个步骤都可以独立优化和测试。意图识别与实体抽取技术实现2.1 基于BERT的意图****分类器意图识别是智能客服的核心能力直接决定了系统能否准确理解用户需求。import torch import torch.nn as nn from transformers import BertModel, BertTokenizer class BertIntentClassifier(nn.Module): def __init__(self, num_intents, bert_model_namebert-base-chinese): super().__init__() self.bert BertModel.from_pretrained(bert_model_name) self.dropout nn.Dropout(0.3) self.classifier nn.Linear(self.bert.config.hidden_size, num_intents) def forward(self, input_ids, attention_mask): # BERT编码 outputs self.bert(input_idsinput_ids, attention_maskattention_mask) pooled_output outputs.pooler_output # 分类层 output self.dropout(pooled_output) logits self.classifier(output) return logits class IntentClassifier: def __init__(self, model_path, intent_labels): self.device torch.device(cuda if torch.cuda.is_available() else cpu) self.tokenizer BertTokenizer.from_pretrained(bert-base-chinese) self.model BertIntentClassifier(len(intent_labels)) self.model.load_state_dict(torch.load(model_path, map_locationself.device)) self.model.to(self.device) self.model.eval() self.intent_labels intent_labels def predict(self, text, confidence_threshold0.8): 预测用户意图 # 文本编码 encoding self.tokenizer( text, truncationTrue, paddingTrue, max_length128, return_tensorspt ) input_ids encoding[input_ids].to(self.device) attention_mask encoding[attention_mask].to(self.device) # 模型推理 with torch.no_grad(): logits self.model(input_ids, attention_mask) probabilities torch.softmax(logits, dim-1) confidence, predicted_idx torch.max(probabilities, dim-1) # 置信度检查 if confidence.item() confidence_threshold: return {intent: unknown, confidence: confidence.item()} predicted_intent self.intent_labels[predicted_idx.item()] return {intent: predicted_intent, confidence: confidence.item()}这个实现使用了预训练的BERT模型作为特征提取器在其基础上添加分类层。关键的设计考虑包括置信度阈值设置、未知意图处理、以及GPU加速支持。2.2命名实体识别系统实体抽取用于从用户输入中提取关键信息如产品名称、订单号、时间等。import torch import torch.nn as nn from torch.nn.utils.rnn import pad_packed_sequence, pack_padded_sequence class BiLSTMCRF(nn.Module): def __init__(self, vocab_size, tag_size, embedding_dim100, hidden_dim128): super().__init__() self.embedding_dim embedding_dim self.hidden_dim hidden_dim self.vocab_size vocab_size self.tag_size tag_size # 词嵌入层 self.word_embeds nn.Embedding(vocab_size, embedding_dim) # BiLSTM层 self.lstm nn.LSTM(embedding_dim, hidden_dim // 2, num_layers1, bidirectionalTrue, batch_firstTrue) # 线性变换层 self.hidden2tag nn.Linear(hidden_dim, tag_size) # CRF层参数 self.transitions nn.Parameter(torch.randn(tag_size, tag_size)) self.transitions.data[tag_size-2, :] -10000 # START标签 self.transitions.data[:, tag_size-1] -10000 # END标签 def forward(self, sentence, lengths): # 词嵌入 embeds self.word_embeds(sentence) # BiLSTM编码 packed_embeds pack_padded_sequence(embeds, lengths, batch_firstTrue, enforce_sortedFalse) lstm_out, _ self.lstm(packed_embeds) lstm_out, _ pad_packed_sequence(lstm_out, batch_firstTrue) # 线性变换 lstm_feats self.hidden2tag(lstm_out) return lstm_feats class EntityExtractor: def __init__(self, model_path, vocab, tag_vocab): self.device torch.device(cuda if torch.cuda.is_available() else cpu) self.vocab vocab self.tag_vocab tag_vocab self.model BiLSTMCRF(len(vocab), len(tag_vocab)) self.model.load_state_dict(torch.load(model_path, map_locationself.device)) self.model.to(self.device) self.model.eval() def extract(self, text): 抽取命名实体 # 文本预处理和编码 tokens list(text) token_ids [self.vocab.get(token, self.vocab[UNK]) for token in tokens] # 模型推理 with torch.no_grad(): sentence_tensor torch.tensor([token_ids], dtypetorch.long).to(self.device) lengths torch.tensor([len(token_ids)], dtypetorch.long) # 获取特征 lstm_feats self.model(sentence_tensor, lengths) # Viterbi解码简化版本 tag_seq self._viterbi_decode(lstm_feats[0]) # 实体提取和格式化 entities self._extract_entities(tokens, tag_seq) return entities def _extract_entities(self, tokens, tags): 从BIO标签序列中提取实体 entities [] current_entity None for i, (token, tag) in enumerate(zip(tokens, tags)): if tag.startswith(B-): if current_entity: entities.append(current_entity) current_entity { text: token, label: tag[2:], start: i, end: i 1 } elif tag.startswith(I-) and current_entity: current_entity[text] token current_entity[end] i 1 else: if current_entity: entities.append(current_entity) current_entity None if current_entity: entities.append(current_entity) return entities这个实现采用了BiLSTM-CRF架构能够有效处理序列标注任务。BiLSTM负责特征提取CRF层确保标签序列的合理性。对话管理与状态跟踪3.1 多轮对话状态管理对话管理是智能客服Agent的大脑 负责维护对话上下文和决策下一步行动 。from enum import Enum from dataclasses import dataclass from typing import Dict, List, Optional import json class DialogState(Enum): GREETING greeting INFORMATION_GATHERING info_gathering PROCESSING processing CONFIRMATION confirmation COMPLETED completed FAILED failed dataclass class DialogContext: session_id: str current_state: DialogState intent: Optional[str] None entities: Dict[str, any] None required_slots: List[str] None filled_slots: Dict[str, any] None conversation_history: List[Dict] None retry_count: int 0 def __post_init__(self): if self.entities is None: self.entities {} if self.required_slots is None: self.required_slots [] if self.filled_slots is None: self.filled_slots {} if self.conversation_history is None: self.conversation_history [] class DialogManager: def __init__(self): self.sessions {} # 存储会话状态 self.slot_requirements { order_inquiry: [order_number], product_consultation: [product_name], complaint_handling: [issue_type, order_number], refund_request: [order_number, reason] } def update_state(self, session_id: str, intent: str, entities: Dict): 更新对话状态 # 获取或创建会话上下文 if session_id not in self.sessions: self.sessions[session_id] DialogContext( session_idsession_id, current_stateDialogState.GREETING ) context self.sessions[session_id] # 更新意图和实体 if intent ! unknown: context.intent intent context.required_slots self.slot_requirements.get(intent, []) # 更新槽位信息 for entity_type, entity_value in entities.items(): if entity_type in context.required_slots: context.filled_slots[entity_type] entity_value # 状态转换逻辑 context.current_state self._determine_next_state(context) # 记录对话历史 context.conversation_history.append({ intent: intent, entities: entities, state: context.current_state.value }) return context def _determine_next_state(self, context: DialogContext) - DialogState: 确定下一个对话状态 if not context.intent: return DialogState.GREETING # 检查必需槽位是否已填充 missing_slots [slot for slot in context.required_slots if slot not in context.filled_slots] if missing_slots: if context.retry_count 3: return DialogState.INFORMATION_GATHERING else: return DialogState.FAILED else: return DialogState.PROCESSING def get_missing_slots(self, session_id: str) - List[str]: 获取缺失的槽位信息 if session_id not in self.sessions: return [] context self.sessions[session_id] return [slot for slot in context.required_slots if slot not in context.filled_slots] def is_dialog_complete(self, session_id: str) - bool: 判断对话是否完成 if session_id not in self.sessions: return False context self.sessions[session_id] return context.current_state in [DialogState.COMPLETED, DialogState.FAILED]这个 对 话管理器采用了基于状态机的设计能够有效跟踪多轮对话的进展。关键特性包括槽位填充、状态转换和重试机制。3.2 对话流程可视化这个状态图清晰展示了对话管理的核心逻辑每个状态都有明确的转换条件和处理逻辑。知识库构建与检索优化4.1 向量化知识库设计知识库是智能客服的知识来源需要支持快速准确的信息检索。import numpy as np from sentence_transformers import SentenceTransformer import faiss import pickle from typing import List, Dict, Tuple class VectorKnowledgeBase: def __init__(self, model_nameparaphrase-multilingual-MiniLM-L12-v2): self.encoder SentenceTransformer(model_name) self.index None self.documents [] self.metadata [] def build_index(self, documents: List[Dict]): 构建向量索引 print(正在构建知识库索引...) # 提取文档文本 texts [] for doc in documents: # 组合标题和内容 text f{doc.get(title, )} {doc.get(content, )} texts.append(text) # 文本向量化 embeddings self.encoder.encode(texts, show_progress_barTrue) # 构建FAISS索引 dimension embeddings.shape[1] self.index faiss.IndexFlatIP(dimension) # 内积相似度 # 归一化向量用于余弦相似度 faiss.normalize_L2(embeddings) self.index.add(embeddings.astype(float32)) # 存储文档和元数据 self.documents documents self.metadata [ { doc_id: i, title: doc.get(title, ), category: doc.get(category, ), tags: doc.get(tags, []) } for i, doc in enumerate(documents) ] print(f索引构建完成共 {len(documents)} 个文档) def search(self, query: str, top_k: int 5, category_filter: str None) - List[Dict]: 搜索相关文档 if self.index is None: return [] # 查询向量化 query_embedding self.encoder.encode([query]) faiss.normalize_L2(query_embedding) # 向量检索 scores, indices self.index.search( query_embedding.astype(float32), min(top_k * 2, len(self.documents)) # 检索更多候选 ) # 结果过滤和排序 results [] for score, idx in zip(scores[0], indices[0]): if idx -1: # FAISS返回-1表示无效索引 continue doc self.documents[idx] metadata self.metadata[idx] # 类别过滤 if category_filter and metadata[category] ! category_filter: continue results.append({ document: doc, metadata: metadata, score: float(score), relevance: self._calculate_relevance(query, doc, score) }) if len(results) top_k: break return results def _calculate_relevance(self, query: str, document: Dict, vector_score: float) - float: 计算综合相关性分数 # 基础向量相似度 relevance vector_score * 0.7 # 关键词匹配加分 query_words set(query.lower().split()) doc_words set((document.get(content, ) document.get(title, )).lower().split()) keyword_overlap len(query_words doc_words) / len(query_words) relevance keyword_overlap * 0.2 # 文档质量加分 quality_score document.get(quality_score, 0.5) relevance quality_score * 0.1 return min(relevance, 1.0) def save_index(self, filepath: str): 保存索引到文件 faiss.write_index(self.index, f{filepath}.faiss) with open(f{filepath}.pkl, wb) as f: pickle.dump({ documents: self.documents, metadata: self.metadata }, f) def load_index(self, filepath: str): 从文件加载索引 self.index faiss.read_index(f{filepath}.faiss) with open(f{filepath}.pkl, rb) as f: data pickle.load(f) self.documents data[documents] self.metadata data[metadata]这个向量化知识库使用了Sentence-BERT进行文本编码FAISS进行高效的向量检索。关键优化包括向量归一化、多重相关性计算、以及索引持久化。4.2 混合检索策略效果评估体系设计5.1 多维度评估指标建立科学的评估体系是优化智能客服系统的关键。我们需要从多个维度来衡量系统效果。这个评估体系涵盖了 技术指标和业务指标能够全面反映系统的实际效果。权重分配考虑了不同指标对业务价值的贡献度。5.2 自动化评估框架import time import json import numpy as np from typing import Dict, List from dataclasses import dataclass from datetime import datetime, timedelta dataclass class EvaluationResult: accuracy_metrics: Dict[str, float] efficiency_metrics: Dict[str, float] satisfaction_metrics: Dict[str, float] overall_score: float timestamp: datetime class CustomerServiceEvaluator: def __init__(self): self.test_cases [] self.evaluation_history [] def load_test_cases(self, filepath: str): 加载测试用例 with open(filepath, r, encodingutf-8) as f: self.test_cases json.load(f) def evaluate_intent_recognition(self, agent, test_cases: List[Dict]) - Dict: 评估意图识别准确性 correct_predictions 0 total_predictions len(test_cases) confusion_matrix {} for case in test_cases: user_input case[input] expected_intent case[expected_intent] # 获取预测结果 result agent.intent_classifier.predict(user_input) predicted_intent result[intent] confidence result[confidence] # 统计准确性 if predicted_intent expected_intent: correct_predictions 1 # 构建混淆矩阵 if expected_intent not in confusion_matrix: confusion_matrix[expected_intent] {} if predicted_intent not in confusion_matrix[expected_intent]: confusion_matrix[expected_intent][predicted_intent] 0 confusion_matrix[expected_intent][predicted_intent] 1 accuracy correct_predictions / total_predictions return { accuracy: accuracy, confusion_matrix: confusion_matrix, total_cases: total_predictions } def evaluate_entity_extraction(self, agent, test_cases: List[Dict]) - Dict: 评估实体抽取效果 true_positives 0 false_positives 0 false_negatives 0 for case in test_cases: user_input case[input] expected_entities set(case[expected_entities]) # 获取预测结果 predicted_entities agent.entity_extractor.extract(user_input) predicted_set set([f{e[label]}:{e[text]} for e in predicted_entities]) # 计算P/R/F1 true_positives len(expected_entities predicted_set) false_positives len(predicted_set - expected_entities) false_negatives len(expected_entities - predicted_set) precision true_positives / (true_positives false_positives) if (true_positives false_positives) 0 else 0 recall true_positives / (true_positives false_negatives) if (true_positives false_negatives) 0 else 0 f1_score 2 * precision * recall / (precision recall) if (precision recall) 0 else 0 return { precision: precision, recall: recall, f1_score: f1_score } def evaluate_response_time(self, agent, test_cases: List[Dict], iterations: int 100) - Dict: 评估响应时间 response_times [] for _ in range(iterations): case np.random.choice(test_cases) user_input case[input] session_id ftest_session_{time.time()} start_time time.time() response agent.process_user_input(user_input, session_id) end_time time.time() response_times.append(end_time - start_time) return { mean_response_time: np.mean(response_times), median_response_time: np.median(response_times), p95_response_time: np.percentile(response_times, 95), max_response_time: np.max(response_times) } def evaluate_dialog_completion(self, agent, dialog_test_cases: List[Dict]) - Dict: 评估对话完成率 completed_dialogs 0 total_dialogs len(dialog_test_cases) for case in dialog_test_cases: session_id feval_session_{time.time()} dialog_turns case[dialog_turns] expected_completion case[should_complete] # 模拟多轮对话 for turn in dialog_turns: agent.process_user_input(turn[user_input], session_id) # 检查对话是否完成 is_completed agent.dialog_manager.is_dialog_complete(session_id) if is_completed expected_completion: completed_dialogs 1 completion_rate completed_dialogs / total_dialogs return { completion_rate: completion_rate, total_dialogs: total_dialogs } def run_comprehensive_evaluation(self, agent) - EvaluationResult: 运行综合评估 print(开始综合评估...) # 意图识别评估 intent_results self.evaluate_intent_recognition( agent, [case for case in self.test_cases if expected_intent in case] ) # 实体抽取评估 entity_results self.evaluate_entity_extraction( agent, [case for case in self.test_cases if expected_entities in case] ) # 响应时间评估 time_results self.evaluate_response_time(agent, self.test_cases) # 对话完成率评估 dialog_results self.evaluate_dialog_completion( agent, [case for case in self.test_cases if dialog_turns in case] ) # 计算综合得分 accuracy_score (intent_results[accuracy] * 0.6 entity_results[f1_score] * 0.4) efficiency_score min(2.0 / time_results[mean_response_time], 1.0) completion_score dialog_results[completion_rate] overall_score (accuracy_score * 0.4 efficiency_score * 0.3 completion_score * 0.3) result EvaluationResult( accuracy_metrics{ intent_accuracy: intent_results[accuracy], entity_f1: entity_results[f1_score] }, efficiency_metrics{ mean_response_time: time_results[mean_response_time], p95_response_time: time_results[p95_response_time] }, satisfaction_metrics{ completion_rate: dialog_results[completion_rate] }, overall_scoreoverall_score, timestampdatetime.now() ) self.evaluation_history.append(result) return result这个评估框架提供了全面的性能测试能力包括准确性、效率和完整性的多维度评估。关键特性包括自动化测试执行、结果历史记录和综合评分计算。实际部署与优化策略6.1 生产环境架构在生产环境中 智能客服Agent需要考虑高并发、高可用和可扩展性。这个架构设计考虑了系统的各个层面从API网关到数据存储每一层都有相应的优化策略。6.2 性能优化实践import asyncio import aioredis from concurrent.futures import ThreadPoolExecutor import logging class OptimizedCustomerServiceAgent: def __init__(self): # 基础组件初始化 self.preprocessor TextPreprocessor() self.intent_classifier IntentClassifier() self.entity_extractor EntityExtractor() self.dialog_manager DialogManager() self.knowledge_base VectorKnowledgeBase() # 性能优化组件 self.redis_client None self.thread_pool ThreadPoolExecutor(max_workers4) self.response_cache {} # 配置日志 logging.basicConfig(levellogging.INFO) self.logger logging.getLogger(__name__) async def initialize_async_components(self): 初始化异步组件 self.redis_client await aioredis.from_url(redis://localhost:6379) async def process_user_input_async(self, user_input: str, session_id: str): 异步处理用户输入 start_time time.time() try: # 1. 缓存检查 cache_key fresponse:{hash(user_input)} cached_response await self.redis_client.get(cache_key) if cached_response: self.logger.info(f缓存命中: {session_id}) return json.loads(cached_response) # 2. 并行处理意图识别和实体抽取 intent_task asyncio.create_task( self._async_intent_recognition(user_input) ) entity_task asyncio.create_task( self._async_entity_extraction(user_input) ) # 等待并行任务完成 intent_result, entity_result await asyncio.gather( intent_task, entity_task ) # 3. 对话管理 dialog_state self.dialog_manager.update_state( session_id, intent_result[intent], entity_result ) # 4. 响应生成 if dialog_state.current_state DialogState.PROCESSING: response await self._async_generate_response(dialog_state) else: response await self._async_generate_clarification(dialog_state) # 5. 缓存结果 await self.redis_client.setex( cache_key, 3600, json.dumps(response) ) # 6. 记录性能指标 processing_time time.time() - start_time self.logger.info(f处理完成: {session_id}, 耗时: {processing_time:.3f}s) return response except Exception as e: self.logger.error(f处理错误: {session_id}, 错误: {str(e)}) return {error: 系统暂时无法处理您的请求请稍后重试} async def _async_intent_recognition(self, text: str): 异步意图识别 loop asyncio.get_event_loop() return await loop.run_in_executor( self.thread_pool, self.intent_classifier.predict, text ) async def _async_entity_extraction(self, text: str): 异步实体抽取 loop asyncio.get_event_loop() return await loop.run_in_executor( self.thread_pool, self.entity_extractor.extract, text ) async def _async_generate_response(self, dialog_state): 异步响应生成 # 知识库检索 search_results await self._async_knowledge_search( dialog_state.intent, dialog_state.filled_slots ) # 响应模板匹配 template self._get_response_template(dialog_state.intent) # 生成个性化回复 response self._format_response(template, search_results, dialog_state) return response async def _async_knowledge_search(self, intent: str, entities: Dict): 异步知识库搜索 query f{intent} .join([str(v) for v in entities.values()]) loop asyncio.get_event_loop() return await loop.run_in_executor( self.thread_pool, self.knowledge_base.search, query, 5 )这个优化版本采用了异步处理、缓存机制、线程池等技术能够显著提升系统的并发处理能力和响应速度。实际案例分析与效果展示7.1 某电商平台客服系统改造在我参与的某大型电商平台客服系统改造项目中我们面临的主要挑战包括“传统客服系统无法应对双11期间的咨询高峰人工客服成本居高不下用户等待时间过长满意度持续下降。我们需要一个能够7×24小时服务同时保持高质量回复的智能客服解决方案。”项目实施前后的关键指标对比7.2 系统优化历程这个时间线展示了智能客服系统从概念到成熟产品的完整演进过程每个阶段都有明确的目标和交付物。总结通过这篇文章我和大家分享了智能客服Agent从技术架构到实际部署的完整实现过程。作为一名深度参与多个智能客服项目的技术人员我深刻体会到这个领域的技术挑战和业务价值。智能客服Agent的成功实施需要在多个技术层面做出正确的选择 **意图识别需要结合预训练模型和领域适配实体抽取要考虑业务场景的特殊性对话管理需要平衡灵活性和可控性知识库构建要兼顾检索效率和内容质量。**更重要的是我们需要建立科学的评估体系从技术指标和业务指标两个维度持续优化系统效果。在实际项目中我发现最大的挑战往往不是单个技术组件的实现而是如何将各个组件有机整合形成一个稳定可靠的整体系统。这需要我们在 **架构设计时就考虑到扩展性、可维护性和性能优化。**同时用户体验的持续改进也是系统成功的关键因素需要我们建立完善的反馈机制和迭代优化流程。展望未来随着大语言模型技术的快速发展 **智能客服Agent将具备更强的理解能力和生成能力。**但无论技术如何演进 **以用户为中心的设计理念和严谨的工程实践都将是系统成功的基础。**我相信通过持续的技术创新和经验积累智能客服Agent将在更多场景中发挥重要作用为企业和用户创造更大的价值。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2443314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…