当前位置: 首页 > news >正文

智能体团队 (Agent Team)

概述

智能体团队是一种多智能体协作模式,它将多个智能体组织成一个团队,共同解决复杂任务。与智能体监督模式不同,智能体团队中的成员通常具有平等的地位,通过相互交流和协作来达成目标。这种模式特别适合需要多种观点或多领域专业知识综合考量的问题。

在智能体团队中,每个成员都有特定的角色和专长,但没有明确的层级结构。团队成员可以自由交流,提出建议,并共同决策。这种模式模拟了人类团队协作的方式,强调信息共享和集体智慧。

工作原理

智能体团队的工作流程通常包括以下几个阶段:

  1. 团队组建:根据任务需求选择具有互补技能的智能体
  2. 任务分析:团队成员共同分析问题和要求
  3. 角色分配:根据专长为每个成员分配特定职责
  4. 交流与协作:成员之间相互交流信息和见解
  5. 共识形成:成员共同讨论并达成解决方案的共识
  6. 结果整合:将各成员的贡献整合为最终输出

优势

  • 多角度思考:不同智能体提供多种视角和思考方式
  • 平衡决策:通过集体智慧减少个体偏见
  • 专业互补:结合不同领域的专业知识
  • 创意激发:通过成员间的交流产生创新想法
  • 适应复杂性:能够处理需要多维度考量的复杂问题
  • 自组织能力:团队成员可以动态调整角色和职责

基本用法示例

以下是创建和使用基本智能体团队的完整示例:

from langchain_openai import ChatOpenAI
from langchain.agents import Tool
from langchain.schema import SystemMessage, HumanMessage, AIMessage
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.agents.agent_toolkits import create_conversational_retrieval_agent
from langchain.schema.runnable import RunnablePassthrough
from typing import List, Dict, Any# 初始化基础模型
llm = ChatOpenAI(temperature=0)# 创建团队成员配置
team_members = {"创意专家": {"description": "专门负责创新思考和创意生成的专家。擅长提出新颖的想法和解决方案。","system_message": "你是一个创意思考专家,擅长产生创新的想法和解决方案。思考问题时,你应该考虑不寻常的角度,提出突破性的建议。"},"批判分析师": {"description": "专门负责逻辑分析和批判性思考的专家。擅长评估想法的可行性和发现潜在问题。","system_message": "你是一个批判性思维专家,擅长逻辑分析和问题评估。你的任务是仔细评估提出的想法,找出潜在缺陷,并提供建设性的改进建议。"},"执行规划师": {"description": "专门负责实施策略和行动计划的专家。擅长将想法转化为具体可行的步骤。","system_message": "你是一个执行规划专家,擅长创建实施方案和行动计划。你的任务是将概念性想法转化为具体、可行的步骤,并考虑资源、时间和可行性因素。"}
}# 创建团队协调者
class AgentTeamCoordinator:def __init__(self, llm, team_members: Dict[str, Dict]):self.llm = llmself.team_members = team_membersself.conversation_history = []def _create_team_member_message(self, role: str, content: str) -> dict:"""创建团队成员消息格式"""return {"role": role,"content": content}def get_team_member_input(self, member_name: str, task: str) -> str:"""获取特定团队成员对任务的输入"""member_config = self.team_members[member_name]# 构建提示,包括之前的对话历史messages = [SystemMessage(content=member_config["system_message"]),HumanMessage(content=f"任务: {task}\n\n请以{member_name}的角色,根据你的专业知识和视角,对这个任务提供你的见解和建议。")]# 添加对话历史供参考if self.conversation_history:history_text = "\n\n团队讨论历史:\n"for msg in self.conversation_history:history_text += f"\n{msg['role']}: {msg['content']}"messages.append(HumanMessage(content=f"{history_text}\n\n基于以上历史和你的专业知识,请提供你的观点。"))# 获取响应response = self.llm.invoke(messages)# 记录到对话历史self.conversation_history.append(self._create_team_member_message(member_name, response.content))return response.contentdef synthesize_team_inputs(self, task: str, member_inputs: Dict[str, str]) -> str:"""综合团队成员的输入,得出最终结论"""synthesis_prompt = f"""作为团队协调者,你的任务是综合以下团队成员对任务的见解,提出一个全面的最终解决方案。任务:{task}团队成员输入:"""for member_name, input_text in member_inputs.items():synthesis_prompt += f"\n\n{member_name} ({self.team_members[member_name]['description']}):\n{input_text}"synthesis_prompt += "\n\n综合以上团队成员的见解,提出一个平衡各种观点、全面而实用的最终解决方案。解释您如何整合各成员的建议。"response = self.llm.invoke([HumanMessage(content=synthesis_prompt)])return response.contentdef solve_task(self, task: str) -> str:"""使用团队智能体解决任务"""print(f"开始解决任务: {task}")self.conversation_history = []  # 清空之前的对话历史# 获取每个团队成员的输入member_inputs = {}for member_name in self.team_members.keys():print(f"\n请求 {member_name} 的输入...")member_inputs[member_name] = self.get_team_member_input(member_name, task)print(f"{member_name} 回应: {member_inputs[member_name][:100]}...")# 综合团队输入print("\n综合团队输入...")final_solution = self.synthesize_team_inputs(task, member_inputs)return final_solution# 创建团队并解决任务
team_coordinator = AgentTeamCoordinator(llm, team_members)
result = team_coordinator.solve_task("设计一个创新的智能家居系统,既要满足用户便利性需求,又要考虑隐私保护和能源效率。")print("\n最终解决方案:\n")
print(result)

高级用法

动态团队讨论

以下示例展示了如何实现更复杂的团队讨论流程,允许团队成员进行多轮交流:

class DynamicAgentTeam:def __init__(self, llm, team_members: Dict[str, Dict]):self.llm = llmself.team_members = team_membersself.discussion_history = []def _format_discussion_history(self) -> str:"""将讨论历史格式化为可读文本"""if not self.discussion_history:return ""history = "\n\n讨论历史:\n"for entry in self.discussion_history:history += f"\n{entry['speaker']}: {entry['message']}"return historydef team_member_speak(self, member_name: str, task: str, specific_question: str = "") -> str:"""让特定团队成员发言"""member_config = self.team_members[member_name]# 构建提示discussion_history = self._format_discussion_history()if specific_question:prompt = f"""任务: {task}作为{member_name}{member_config['system_message']}{discussion_history}现在请回应这个具体问题: {specific_question}请基于你的专业知识提供见解,并考虑之前的讨论内容。"""else:prompt = f"""任务: {task}作为{member_name}{member_config['system_message']}{discussion_history}考虑到讨论的当前状态,请提供你的专业见解。如果这是讨论的开始,请先分享你对任务的初步想法。"""response = self.llm.invoke([HumanMessage(content=prompt)])# 记录到讨论历史self.discussion_history.append({"speaker": member_name,"message": response.content})return response.contentdef moderator_guide_discussion(self) -> dict:"""由主持人引导讨论,确定下一步"""discussion_history = self._format_discussion_history()prompt = f"""作为团队讨论的主持人,你的任务是评估当前讨论状态,并决定下一步行动。{discussion_history}基于当前讨论,请判断:1. 讨论是否应该继续?如果是,哪位团队成员应该发言,以及他们应该回应什么具体问题?2. 如果讨论已充分,请说明原因并提出应该如何整合团队见解得出最终结论。以JSON格式返回你的决定:{{"continue_discussion": true或false,"next_speaker": "团队成员名称或'none'","question": "下一个讨论问题或''(如果讨论结束)","reasoning": "你的推理过程"  }}"""response = self.llm.invoke([HumanMessage(content=prompt)])# 解析响应获取决策# 实际应用中应添加错误处理import jsontry:decision = json.loads(response.content)return decisionexcept:# 解析失败时的后备方案return {"continue_discussion": False,"next_speaker": "none","question": "","reasoning": "无法解析决策,建议结束讨论并综合现有输入。"}def synthesize_final_solution(self, task: str) -> str:"""综合讨论结果,形成最终解决方案"""discussion_history = self._format_discussion_history()prompt = f"""作为团队协调者,你的任务是综合团队讨论,提出一个全面的最终解决方案。任务:{task}{discussion_history}请提供一个综合各团队成员观点的最终解决方案。确保解决方案是全面、平衡且可行的。解释你如何整合各种观点,以及最终解决方案如何解决原始任务。"""response = self.llm.invoke([HumanMessage(content=prompt)])return response.contentdef facilitate_team_discussion(self, task: str, max_turns: int = 6) -> str:"""组织团队讨论,解决任务"""print(f"开始团队讨论: {task}")self.discussion_history = []  # 清空之前的讨论# 初始发言人initial_speaker = list(self.team_members.keys())[0]print(f"\n{initial_speaker} 开始讨论...")self.team_member_speak(initial_speaker, task)# 讨论轮次turn = 1while turn < max_turns:# 主持人引导讨论decision = self.moderator_guide_discussion()print(f"\n讨论轮次 {turn} - 决策: {decision['reasoning'][:100]}...")# 检查是否继续讨论if not decision["continue_discussion"]:print("讨论已充分,准备总结...")break# 让下一个发言人发言next_speaker = decision["next_speaker"]specific_question = decision["question"]print(f"\n{next_speaker} 回应: {specific_question[:50]}...")self.team_member_speak(next_speaker, task, specific_question)turn += 1# 综合讨论结果print("\n综合讨论结果...")final_solution = self.synthesize_final_solution(task)return final_solution# 使用动态团队讨论解决问题
dynamic_team = DynamicAgentTeam(llm, team_members)
complex_task = "设计一个可持续发展的城市交通系统,平衡效率、环境影响和社会公平性。"
result = dynamic_team.facilitate_team_discussion(complex_task)print("\n最终解决方案:\n")
print(result)

以下是一个针对特定专业领域(如软件开发)的团队示例:```python
from langchain.tools import tool# 创建软件开发团队
software_team_members = {"产品经理": {"description": "负责定义产品需求和功能优先级","system_message": "你是一名经验丰富的产品经理,负责理解用户需求并将其转化为清晰的产品规范。你关注用户体验和业务目标。"},"架构师": {"description": "负责技术架构设计和技术选型","system_message": "你是一名软件架构师,专注于设计可扩展、可维护的系统架构。你需要平衡技术债务、性能要求和实施复杂性。"},"开发工程师": {"description": "负责实现具体功能和编写代码","system_message": "你是一名全栈开发工程师,擅长将需求转化为实际代码。你关注代码质量、可测试性和最佳实践。"},"QA测试员": {"description": "负责质量保证和测试策略","system_message": "你是一名QA专家,负责确保软件质量。你擅长识别潜在问题、设计测试用例和验证功能完整性。"}
}# 为开发团队添加专业工具
@tool
def search_technical_docs(query: str) -> str:"""搜索技术文档获取信息"""# 实际应用中连接到技术文档数据库return f"关于'{query}'的技术文档搜索结果:[相关技术信息]"@tool
def analyze_code(code_snippet: str) -> str:"""分析代码片段的质量和潜在问题"""# 实际应用中连接到代码分析服务return f"代码分析结果:[代码质量评估和建议]"@tool
def estimate_effort(feature_description: str) -> str:"""估算开发特性所需的工作量"""# 实际应用中可能使用历史数据和ML模型return f"工作量估算:基于'{feature_description}'的特性,预计需要[X]人天"# 创建软件开发团队协调器的扩展类
class SoftwareDevelopmentTeam(DynamicAgentTeam):def __init__(self, llm, team_members):super().__init__(llm, team_members)self.project_artifacts = {"requirements": "","architecture": "","implementation_plan": "","test_strategy": ""}def create_artifact(self, artifact_type: str, content: str):"""创建或更新项目工件"""if artifact_type in self.project_artifacts:self.project_artifacts[artifact_type] = contentprint(f"\n✅ 已更新{artifact_type}文档")return f"{artifact_type}已成功更新"return f"未知工件类型:{artifact_type}"def generate_project_documentation(self) -> str:"""生成完整的项目文档"""prompt = f"""基于以下项目工件,创建一个综合的项目文档:需求文档:{self.project_artifacts['requirements']}架构设计:{self.project_artifacts['architecture']}实施计划:{self.project_artifacts['implementation_plan']}测试策略:{self.project_artifacts['test_strategy']}请创建一个结构清晰、内容全面的项目文档,包括概述、详细需求、技术架构、开发计划和质量保证措施。"""response = self.llm.invoke([HumanMessage(content=prompt)])return response.contentdef develop_software_project(self, project_description: str) -> str:"""开发完整的软件项目"""# 第一阶段:需求分析print("\n📌 阶段1:需求分析")requirement_task = f"针对以下项目进行需求分析:{project_description}\n请详细列出功能需求、非功能需求和用户场景。"self.discussion_history = []self.team_member_speak("产品经理", requirement_task)self.create_artifact("requirements", self.discussion_history[-1]["message"])# 第二阶段:架构设计print("\n📌 阶段2:架构设计")architecture_task = f"根据以下需求设计系统架构:\n{self.project_artifacts['requirements']}"self.discussion_history = []self.team_member_speak("架构师", architecture_task)self.create_artifact("architecture", self.discussion_history[-1]["message"])# 第三阶段:实施计划print("\n📌 阶段3:实施计划")implementation_task = f"根据以下需求和架构设计,制定实施计划:\n需求:{self.project_artifacts['requirements'][:200]}...\n架构:{self.project_artifacts['architecture'][:200]}..."self.discussion_history = []result = self.facilitate_team_discussion(implementation_task, max_turns=4)self.create_artifact("implementation_plan", result)# 第四阶段:测试策略print("\n📌 阶段4:测试策略")test_task = f"为以下项目设计测试策略:\n{project_description}\n考虑单元测试、集成测试和用户验收测试。"self.discussion_history = []self.team_member_speak("QA测试员", test_task)self.create_artifact("test_strategy", self.discussion_history[-1]["message"])# 最终项目文档print("\n📌 生成最终项目文档")final_documentation = self.generate_project_documentation()return final_documentation# 使用软件开发团队
software_team = SoftwareDevelopmentTeam(llm, software_team_members)
project_description = "开发一个在线团队协作工具,支持任务管理、文档共享和实时通信。系统需要高度可扩展,支持web和移动端访问。"
final_documentation = software_team.develop_software_project(project_description)

实际应用场景

1. 创意和内容策划

智能体团队在创意和内容策划领域可以提供多角度的思考和综合创意能力。

from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler# 创建具有不同创意风格的团队
creative_team = {"头脑风暴专家": {"description": "专注于快速生成大量创意想法,不过滤","system_message": "你是一个头脑风暴专家,专注于快速生成大量创意。不要自我审查,即使想法看起来不寻常或不可行。你的目标是数量和多样性。"},"叙事专家": {"description": "专注于故事结构和情感连接","system_message": "你是一个叙事和故事架构专家。专注于如何通过引人入胜的故事结构、人物塑造和情感连接来吸引目标受众。"},"趋势分析师": {"description": "关注当前文化潮流和受众偏好","system_message": "你是一个文化趋势分析师,专注于识别和应用当前的文化趋势、热门话题和受众偏好。确保创意与当前环境相关并引起共鸣。"},"品牌策略师": {"description": "确保创意符合品牌形象和营销目标","system_message": "你是一个品牌策略专家,确保创意符合品牌身份、价值观和营销目标。你关注创意如何加强品牌形象和与目标受众的长期关系。"}
}# 创建内容策划团队协调器
class ContentIdeationTeam(DynamicAgentTeam):def __init__(self, llm, team_members):super().__init__(llm, team_members)def generate_content_concept(self, brief: str, target_audience: str, brand_guidelines: str) -> str:"""生成内容创意概念"""# 构建任务描述task = f"""创建内容策划方案项目简介:{brief}目标受众:{target_audience}品牌指南:{brand_guidelines}请团队合作开发一个全面的内容创意概念,包括核心信息、叙事方法、创意元素和执行建议。"""# 进行团队讨论result = self.facilitate_team_discussion(task, max_turns=8)return resultdef evaluate_concept(self, concept: str, criteria: str) -> str:"""评估创意概念"""evaluation_task = f"""评估以下内容创意概念:{concept}评估标准:{criteria}请团队协作评估这个概念的优势、劣势和改进机会。提供具体、实用的反馈。"""self.discussion_history = []  # 清空之前的讨论result = self.facilitate_team_discussion(evaluation_task, max_turns=5)return result

2. 决策支持系统

智能体团队可以作为高级决策支持系统,综合不同视角和专业知识来分析复杂问题。

from datetime import datetime# 创建决策团队
decision_team = {"数据分析师": {"description": "专注于数据分析和量化评估","system_message": "你是一个数据分析专家,擅长解读数据,发现趋势和基于证据进行推理。你始终寻求量化证据和具体数字来支持决策。"},"风险评估师": {"description": "专注于识别潜在风险和缓解策略","system_message": "你是一个风险评估专家,专注于识别方案中的潜在风险、挑战和意外后果。你应该考虑短期和长期风险,并提出缓解策略。"},"战略规划师": {"description": "专注于长期战略影响和机会","system_message": "你是一个战略规划专家,专注于长期视角和战略影响。你考虑决策如何影响未来的增长、市场定位和竞争优势。"},"利益相关者代表": {"description": "代表不同利益相关者的观点和需求","system_message": "你代表各种利益相关者的观点和需求,包括客户、员工、投资者、社区和监管机构。确保决策考虑到所有受影响方的利益和关切。"}
}# 创建决策支持团队协调器
class DecisionSupportTeam(DynamicAgentTeam):def __init__(self, llm, team_members):super().__init__(llm, team_members)self.decision_matrix = {}def analyze_options(self, scenario: str, options: list, criteria: list) -> str:"""分析决策选项"""# 构建分析任务options_text = "\n".join([f"选项{i+1}: {option}" for i, option in enumerate(options)])criteria_text = "\n".join([f"标准{i+1}: {criterion}" for i, criterion in enumerate(criteria)])task = f"""决策场景分析:场景:{scenario}待评估选项:{options_text}评估标准:{criteria_text}请团队协作分析这些选项,考虑每个选项相对于评估标准的优缺点。提供全面、平衡的分析,并最终推荐最佳选择。"""result = self.facilitate_team_discussion(task, max_turns=10)return resultdef scenario_planning(self, context: str, scenarios: list, time_horizon: str) -> str:"""进行情景规划分析"""scenarios_text = "\n".join([f"情景{i+1}: {scenario}" for i, scenario in enumerate(scenarios)])task = f"""情景规划分析:当前背景:{context}可能的未来情景:{scenarios_text}时间范围:{time_horizon}请团队分析这些不同的未来情景,评估每种情景的可能性、影响和战略响应。对于每个情景,提供:1. 关键驱动因素和早期警示信号2. 潜在影响和风险3. 建议的准备策略和应对措施4. 情景间的共性机会和威胁最后,提供一个综合战略,帮助在所有情景下保持适应性和韧性。"""result = self.facilitate_team_discussion(task, max_turns=12)return result

最佳实践

  1. 明确角色定义:为每个团队成员定义明确的角色、专长和职责范围。

    # 在团队成员定义中包含明确的角色边界
    team_member_config = {"专家A": {"description": "...","system_message": "你是专家A,专注于X领域。你的主要职责是Y。请不要涉及Z领域,那是其他团队成员的专长。","strengths": ["优势1", "优势2"],"limitations": ["局限1", "局限2"]}
    }
    
  2. 有效信息共享:确保团队成员之间能够有效共享和获取所需信息。

  3. 构建完整上下文:为每个成员提供足够的任务上下文和其他成员的相关输入。

  4. 平衡发言机会:确保所有团队成员都有机会贡献其专业知识,避免单个成员主导讨论。

  5. 有效冲突解决:建立冲突解决机制,处理团队成员之间的不同意见。

    def resolve_conflict(topic: str, opinions: Dict[str, str]) -> str:"""解决团队成员之间的冲突"""conflict_prompt = f"""作为中立的协调者,你需要帮助解决团队成员关于'{topic}'的不同观点:{format_opinions(opinions)}请分析各种观点的优缺点,找出共同点,并提出一个平衡的解决方案。说明你的推理过程和如何整合不同的观点。"""response = llm.invoke([HumanMessage(content=conflict_prompt)])return response.content
    
  6. 迭代改进:基于团队讨论和反馈不断改进解决方案。

  7. 适当的团队规模:根据任务复杂性选择合适的团队规模,通常保持在3-7名成员之间。

  8. 清晰的综合机制:建立明确的方法来综合各成员的贡献形成最终输出。

与其他多智能体模式的对比

特性智能体团队智能体监督平行处理
结构平等成员,协作决策层次化(监督者+专家)独立智能体
交流模式多向交流主要是双向(监督者与专家)最小交流或无交流
决策方式共识或综合中央控制各自独立
适用场景需要多视角的复杂问题明确分工的复杂任务可并行的独立子任务
灵活性
自主性中等(专家在各自领域)
协调复杂度

常见问题与解决方案

  1. 角色重叠

    • 解决方案:明确定义每个智能体的专长和边界
    • 在提示中强调各自的独特视角
  2. 讨论发散

    • 解决方案:实现有效的讨论引导机制
    • 定期评估讨论进展并重新聚焦
  3. 信息过载

    • 解决方案:实现有效的信息摘要和过滤机制
    • 只共享与各成员角色相关的信息
  4. 决策延迟

    • 解决方案:设置讨论轮次限制
    • 实现决策触发机制,如达到共识阈值时
  5. 成员贡献不平衡

    • 解决方案:实现参与监控机制
    • 主动邀请贡献较少的成员发言

总结

智能体团队是一种强大的多智能体协作模式,特别适合需要多视角综合考量的复杂问题。通过组织具有不同专长和视角的智能体成员进行平等协作,团队可以产生比单个智能体更全面、更平衡的解决方案。

与其他多智能体模式相比,智能体团队注重成员之间的多向交流和共识形成,特别适用于创意生成、政策制定、复杂决策等需要综合多种视角的场景。然而,这种模式也需要更复杂的协调机制来管理团队交流和整合成果。

通过遵循本文档中的最佳实践和实施建议,开发者可以构建高效、协作的智能体团队系统,充分利用多智能体协作的优势解决复杂问题。

相关文章:

智能体团队 (Agent Team)

概述 智能体团队是一种多智能体协作模式&#xff0c;它将多个智能体组织成一个团队&#xff0c;共同解决复杂任务。与智能体监督模式不同&#xff0c;智能体团队中的成员通常具有平等的地位&#xff0c;通过相互交流和协作来达成目标。这种模式特别适合需要多种观点或多领域专…...

AI日报 - 2025年04月19日

&#x1f31f; 今日概览(60秒速览) ▎&#x1f916; AGI突破 | OpenAI与Google模型在复杂推理上展现潜力&#xff0c;但距AGI仍有距离&#xff1b;因果AI被视为关键路径。 模型如o3解决复杂迷宫&#xff0c;o4-mini通过棋盘测试&#xff0c;但专家预测AGI仍需30年。 ▎&#x1…...

【实战中提升自己】内网安全部署之dot1x部署 本地与集成AD域的主流方式(附带MAC认证)

1 dot1x部署【用户名密码认证&#xff0c;也可以解决私接无线AP等功能】 说明&#xff1a;如果一个网络需要通过用户名认证才能访问内网&#xff0c;而认证失败只能访问外网与服务器&#xff0c;可以部署dot1x功能。它能实现的效果是&#xff0c;当内部用户输入正常的…...

算法—合并排序—js(场景:大数据且需稳定性)

合并排序基本思想&#xff08;稳定且高效&#xff09; 将数组递归拆分为最小单元&#xff0c;合并两个有序数组。 特点&#xff1a; 时间复杂度&#xff1a;O(n log n) 空间复杂度&#xff1a;O(n) 稳定排序 // 合并排序-分解 function mergeSort(arr) {if (arr.length < …...

绝对路径与相对路径

绝对路径和相对路径是在计算机系统中用于定位文件或目录的两种方式&#xff0c;以下是具体介绍&#xff1a; 绝对路径 • 定义&#xff1a;是从文件系统的根目录开始到目标文件或目录的完整路径&#xff0c;它包含了从根目录到目标位置的所有目录和子目录信息&#xff0c;具有…...

RabbitMQ,添加用户时,出现Erlang cookie不一致,导致添加用户失败的问题解决

1. 问题现象 RabbitMQ 添加用户&#xff0c;出现以下报错 ./rabbitmgctl add user admin admin666*2. 问题原因和解决方法 安装的 RabbitMQ 里的 Erlang cookie&#xff0c;和 Erlang 环境的 cookie 不一致导致的 解决方法&#xff1a;将 Erlang 环境的 cookie &#xff0c…...

阿拉丁神灯-第16届蓝桥第4次STEMA测评Scratch真题第2题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥真题&#xff0c;这是Scratch蓝桥真题解析第219讲。 第16届蓝桥第4次STEMA测评已于2025年1月12日落下帷幕&#xff0c;编程题一共有5题&#xff08;初级组只有前4道编…...

常用的验证验证 onnxruntime-gpu安装的命令

#工作记录 我们经常会遇到明明安装了onnxruntime-gpu或onnxruntime后&#xff0c;无法正常使用的情况。 一、强制重新安装 onnxruntime-gpu 及其依赖 # 强制重新安装 onnxruntime-gpu 及其依赖 pip install --force-reinstall --no-cache-dir onnxruntime-gpu1.18.0 --extra…...

docker配置skywalking 监控springcloud应用

在使用 Docker 配置 SkyWalking 监控 Spring Cloud 应用时&#xff0c;主要分为以下几个步骤&#xff1a; 1. 准备工作 确保你的开发环境已经安装了 Docker 和 Docker Compose。准备好 Spring Cloud 应用代码&#xff0c;并确保它支持 SkyWalking 的探针&#xff08;Agent&…...

HBase安装与基本操作指南

## 1. 安装准备 首先确保您的系统已经安装了以下组件: - Java JDK 8或更高版本 - Hadoop(HBase可以运行在独立模式下,但建议配合Hadoop使用) ## 2. 下载与安装HBase ```bash # 下载HBase(以2.4.12版本为例) wget https://downloads.apache.org/hbase/2.4.12/hbase-2…...

【Linux】Rhcsa复习5

一、Linux文件系统权限 1、文件的一般权限 文件权限针对三类对象进行定义&#xff1a; owner 属主&#xff0c;缩写u group 属组&#xff0c; 缩写g other 其他&#xff0c;缩写o 每个文件针对每类访问者定义了三种主要权限&#xff1a; r&#xff1a;read 读 w&…...

C++11特性补充

目录 lambda表达式 定义 捕捉的方式 可变模板参数 递归函数方式展开参数包 数组展开参数包 移动构造和移动赋值 包装器 绑定bind 智能指针 RAII auto_ptr unique_ptr shared_ptr 循环引用 weak_ptr 补充 总结 特殊类的设计 不能被拷贝的类 只能在堆上创建…...

缓存 --- Redis性能瓶颈和大Key问题

缓存 --- Redis性能瓶颈和大Key问题 内存瓶颈网络瓶颈CPU 瓶颈持久化瓶颈大key问题优化方案 Redis 是一个高性能的内存数据库&#xff0c;但在实际使用中&#xff0c;可能会在内存、网络、CPU、持久化、大键值对等方面遇到性能瓶颈。下面从这些方面详细分析 Redis 的性能瓶颈&a…...

css3新特性第三章(文本属性)

一、文本属性 文本阴影文本换行文本溢出文本修饰文本描边 1.1 文本阴影 在 CSS3 中&#xff0c;我们可以使用 text-shadow 属性给文本添加阴影。 语法&#xff1a; text-shadow: h-shadow v-shadow blur color; 值描述h-shadow必需写&#xff0c;水平阴影的位置。允许负值。…...

Redis 缓存—处理高并发问题

Redis的布隆过滤器、单线程架构、双写一致性、比较穿透、击穿及雪崩、缓存更新方案及分布式锁。 1 布隆过滤器 是一种高效的概率型数据结构&#xff0c;用于判断元素是否存在。主要用于防止缓存穿透&#xff0c;通过拦截不存在的数据查询&#xff0c;避免击穿数据库。 原理&…...

嵌入式芯片中的 SRAM 内容细讲

什么是 RAM&#xff1f; RAM 指的是“随机存取”&#xff0c;意思是存储单元都可以在相同的时间内被读写&#xff0c;和“顺序访问”&#xff08;如磁带&#xff09;相对。 RAM 不等于 DRAM&#xff0c;而是一类统称&#xff0c;包括 SRAM 和 DRAM 两种主要类型。 静态随机存…...

实操基于MCP驱动的 Agentic RAG:智能调度向量召回或者网络检索

我们展示了一个由 MCP 驱动的 Agentic RAG&#xff0c;它会搜索向量数据库&#xff0c;当然如果有需要他会自行进行网络搜索。 为了构建这个系统&#xff0c;我们将使用以下工具&#xff1a; 博查搜索 用于大规模抓取网络数据。作为Faiss向量数据库。Cursor 作为 MCP 客户端。…...

位运算---总结

位运算 基础 1. & 运算符 : 有 0 就是 0 2. | 运算符 : 有 1 就是 1 3. ^ 运算符 : 相同为0 相异为1 and 无进位相加位运算的优选级 不用在意优先级,能加括号就加括号给一个数 n ,确定它的二进制位中第 x 位是 0 还是 1? 规定: 题中所说的第x位指:int 在32位机器下4个…...

从0开始搭建一套工具函数库,发布npm,支持commonjs模块es模块和script引入使用

文章目录 文章目标技术选型工程搭建1. 初始化项目2. 安装开发依赖3. 项目结构4. 配置文件tsconfig.json.eslintrc.jseslint.config.prettierrc.jsrollup.config.cjs创建 .gitignore文件 设置 Git 钩子创建示例工具函数8. 版本管理和发布9 工具函数测试方案1. 安装测试依赖2. 配…...

精通 Spring Cache + Redis:避坑指南与最佳实践

Spring Cache 以其优雅的注解方式&#xff0c;极大地简化了 Java 应用中缓存逻辑的实现。结合高性能的内存数据库 Redis&#xff0c;我们可以轻松构建出响应迅速、扩展性强的应用程序。然而&#xff0c;在享受便捷的同时&#xff0c;一些常见的“坑”和被忽视的最佳实践可能会悄…...

DSP28335入门学习——第一节:工程项目创建

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.20 DSP28335开发板学习——第一节&#xff1a;工程项目创建 前言开发板说明引用解答…...

Docker Registry(镜像仓库)

官方架构 Docker 使用客户端 - 服务器 (C/S) 架构模式&#xff0c;使用远程 API 来管理和创建 Docker 容器。Docker 容器通过 Docker 镜像来创建。 Docker 仓库(Registry)&#xff1a;Docker 仓库用来保存镜像&#xff0c;可以理解为代码控制中的代码仓库。Docker Hu…...

通过Dify快速搭建本地AI智能体开发平台

1. 安装Docker Desktop 访问 Docker官网 点击Download Docker Desktop&#xff0c;直接按照官方要求来就可以。 # 这串命令就像魔法咒语&#xff0c;在黑色窗口&#xff08;命令提示符&#xff09;里输入就能检查安装是否成功 docker --version2.安装dify 3.运行 Ollama 大…...

计算机视觉与深度学习 | Transformer原理,公式,代码,应用

Transformer 详解 Transformer 是 Google 在 2017 年提出的基于自注意力机制的深度学习模型,彻底改变了序列建模的范式,解决了 RNN 和 LSTM 在长距离依赖和并行计算上的局限性。以下是其原理、公式、代码和应用的详细解析。 一、原理 核心架构 Transformer 由 编码器(Encod…...

skywalking agent 关联docker镜像

Apache SkyWalking 提供了多种方式来部署和使用 SkyWalking Agent&#xff0c;包括在 Docker 容器中运行的应用。虽然 SkyWalking Agent 本身不是一个独立的 Docker 镜像&#xff0c;但你可以通过几种方式将 SkyWalking Agent 集成到你的 Docker 应用中。 方式一&#xff1a;手…...

【中间件】nginx将请求负载均衡转发给网关,网关再将请求转发给对应服务

一、场景 前端将请求发送给nginx&#xff0c;nginx将请求再转发给网关&#xff0c;网关再将请求转发至对应服务。由于网关会部署在多台服务器上&#xff0c;因此nginx需要负载均衡给网关发请求。nginx所有配置均参照官方文档nginx开发文档&#xff0c;可参考负载均衡板块内容 二…...

Milvus(1):什么是 Milvus

Milvus 由 Zilliz 开发&#xff0c;并很快捐赠给了 Linux 基金会下的 LF AI & Data 基金会&#xff0c;现已成为世界领先的开源向量数据库项目之一。它采用 Apache 2.0 许可发布&#xff0c;大多数贡献者都是高性能计算&#xff08;HPC&#xff09;领域的专家&#xff0c;擅…...

第十六节:高频开放题-React与Vue设计哲学差异

响应式原理&#xff08;Proxy vs 虚拟DOM&#xff09; 组合式API vs Hooks React 与 Vue 设计哲学差异深度解析 一、响应式原理的底层实现差异 1. Vue 的响应式模型&#xff08;Proxy/数据劫持&#xff09; Vue 的响应式系统通过 数据劫持 实现自动依赖追踪&#xff1a; • …...

【Hot100】 240. 搜索二维矩阵 II

目录 引言搜索二维矩阵 II我的解题贪心求解解题思路详解搜索策略&#xff08;以从右上角开始为例&#xff09;为什么这种方法有效&#xff1f; 完整代码实现复杂度分析示例演示 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a…...

每日面试实录·携程·社招·JAVA

&#x1f4cd;面试公司&#xff1a;携程 &#x1f45c;面试岗位&#xff1a;后端开发工程师&#xff08;社招&#xff09; &#x1f550;面试时长&#xff1a;约 50 分钟 &#x1f504;面试轮次&#xff1a;第 1 轮技术面 ✨面试整体节奏&#xff1a; 这场携程的社招 Java 一面…...

Oracle--用户管理

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 用户管理在 Oracle 数据库中至关重要。一个服务器通常只运行一个 Oracle 实例&#xff0c;而一个 Oracle 用户代表一个用户群&#xff0c;他们通过该用…...

20.3 使用技巧5

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的 20.3.8 CellContentClick事件 当增加新按钮列或者超链接列后&#xff0c;按钮或者超链接&#xff0c;会发现&#xff0c;按钮或者超链…...

Kubernetes相关的名词解释Metrics Server组件(7)

什么是Metrics Server&#xff1f; Metrics Server 是 Kubernetes 集群中的一个关键组件&#xff0c;主要用于资源监控和自动扩缩容。 kubernetes 从1.8版本开始不再集成cadvisor&#xff0c;也废弃了heapster&#xff0c;使用metrics server来提供metrics。那么...... 什么…...

17.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--SonarQube部署与配置

在将孢子记账系统从单体架构转向微服务架构的过程中&#xff0c;代码质量的管理变得尤为重要。随着项目规模的扩大和团队协作的深入&#xff0c;我们需要一个强大的工具来帮助我们持续监控和改进代码质量。我们首选SonarQube&#xff0c;它能够帮助我们识别代码中的潜在问题、技…...

计算机是如何看待数据的?

一、计算机如何“看待”数据&#xff1f; 物理层本质&#xff1a; 计算机的所有数据最终以二进制&#xff08;0和1&#xff09;在电路中表示&#xff08;高电平1&#xff0c;低电平0&#xff09;。 无论你用何种进制描述数据&#xff08;如十六进制 0xA1 或十进制 161&#xf…...

25.4.20学习总结

如何使用listView组件来做聊天界面 1. 什么是CellFactory&#xff1f; 在JavaFX中&#xff0c;控件&#xff08;比如ListView、TableView等&#xff09;用Cell来显示每一条数据。 Cell&#xff1a;代表这个单元格&#xff08;即每个列表项&#xff09;中显示的内容和样式。 …...

SpringBoot3集成ES8.15实现余额监控

1. gradle依赖新增 implementation org.springframework.boot:spring-boot-starter-data-elasticsearch implementation co.elastic.clients:elasticsearch-java:8.15.02. application.yml配置 spring:elasticsearch:uris: http://localhost:9200username: elasticpassword: …...

STM32基础教程——串口收发

目录 前言 字长设置 ​编辑 停止位 起始位侦测 波特率 1. UART波特率的基本原理 2. 为什么需要先除以分频因子&#xff08;USARTDIV&#xff09;&#xff1f; &#xff08;1&#xff09;PCLK频率太高 &#xff08;2&#xff09;分频因子的作用 3. 为什么还需要再除以…...

Matlab 步进电机传递函数模糊pid

1、内容简介 Matlab 210-步进电机传递函数模糊pid 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

unordered_map、unordered_set详解

深入理解C中的 unordered_map 和 unordered_set 在C标准库中&#xff0c;unordered_map 和 unordered_set 是两个基于‌哈希表&#xff08;Hash Table&#xff09;‌实现的高效容器。它们以‌O(1)‌的平均时间复杂度实现快速查找、插入和删除操作&#xff0c;特别适合需要高频…...

详解trl中的GRPOTrainer和GRPOConfig

引言 在大型语言模型(LLM)的强化学习微调领域, Group Relative Policy Optimization (GRPO) 算法因其高效性和资源友好性受到广泛关注。Hugging Face的 TRL (Transformer Reinforcement Learning) 库通过GRPOTrainer和GRPOConfig提供了该算法的开箱即用实现。本文将深入解析…...

【C++】多态 - 从虚函数到动态绑定的核心原理

&#x1f4cc; 个人主页&#xff1a; 孙同学_ &#x1f527; 文章专栏&#xff1a;C &#x1f4a1; 关注我&#xff0c;分享经验&#xff0c;助你少走弯路 文章目录 1. 多态的概念2. 多态的定义及实现2.1 多态的构成条件2.1.1实现多态还有两个必须重要条件&#xff1a;2.1.2 虚…...

项目预期管理:超越甘特图,实现客户价值交付

引言 在项目管理实践中&#xff0c;许多项目经理习惯于将注意力集中在甘特图的进度条上&#xff0c;关注任务是否按时完成、里程碑是否达成。然而&#xff0c;这种以计划管理为中心的方法往往忽略了项目管理的核心目标&#xff1a;满足客户预期&#xff0c;交付真正的价值。项…...

FISCO 2.0 安装部署WeBASE与区块链浏览器(环境搭建)

FISCO BCOS 2.0 安装部署WeBASE与区块链浏览器-对应的官网地址&#xff1a; WeBASE平台&#xff1a;https://webasedoc.readthedocs.io/zh-cn/latest/docs/WeBASE/install.html 区块链浏览器&#xff1a;https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/br…...

xss学习3之服务端session

一、服务端的Session 1. cookie和session 1&#xff09;cookie和session对比 cookie: 保存在客户端&#xff0c;包含所有key-value信息&#xff0c;浏览器访问多个网站时会积累大量cookie&#xff0c;占用存储空间&#xff0c;并在每次请求时携带所有cookie&#xff0c;增加…...

23种设计模式-结构型模式之适配器模式(Java版本)

Java 适配器模式&#xff08;Adapter Pattern&#xff09;详解 &#x1f50c; 什么是适配器模式&#xff1f; 适配器模式用于将一个类的接口转换成客户端所期望的另一种接口&#xff0c;让原本接口不兼容的类可以协同工作。 &#x1f4e6; 就像插头转换器&#xff0c;让不同…...

【2025计算机网络-面试常问】http和https区别是什么,http的内容有哪些,https用的是对称加密还是非对称加密,流程是怎么样的

HTTP与HTTPS全面对比及HTTPS加密流程详解 一、HTTP与HTTPS核心区别 特性HTTPHTTPS协议基础明文传输HTTP SSL/TLS加密层默认端口80443加密方式无加密混合加密&#xff08;非对称对称&#xff09;证书要求不需要需要CA颁发的数字证书安全性易被窃听、篡改、冒充防窃听、防篡改…...

使用安全继电器的急停电路设计

使用安全继电器的急停电路设计 一&#xff0c;急停回路的设计1&#xff0c;如何将急停接到线路当中&#xff1f;2&#xff0c;急停开关 如何接到安全继电器中 一&#xff0c;急停回路的设计 急停是每一个设备必不可少的部分&#xff0c;因为关乎安全&#xff0c;所以说所以说他…...

SpringCloud概述和环境搭建

SpringCloud概述和环境搭建 一.微服务的引入1.单体架构2.集群和分布式架构3.集群和分布式4.微服务架构4.微服务的优缺点 二.微服务解决方案-SpringCloud1.Spring Cloud简介2.Spring Cloud版本3.Spring Cloud实现方案4.Spring Cloud Alibaba 三.环境搭建1.安装JDK172.Ubantu上下…...

System.out 详解

System.out 详解 System.out 是 Java 提供的标准输出流(PrintStream 类型),默认关联控制台(Console),用于向终端打印文本信息。它是 Java 中最常用的输出方式之一,尤其在调试和命令行程序开发中。 1. 核心知识点 (1)System.out 的本质 类型:PrintStream(字节流,但…...