景安网站站长网站后台

张小明 2025/12/31 2:55:42
景安网站,站长网站后台,郑州男科医院哪家权威,手机制作网站的软件文章详细介绍了使用LangChain构建多智能体协作系统的完整流程#xff0c;包括设计TeamState实现Agent间数据流转#xff0c;使用LangGraph构建包含研究员、报告撰写员和协调员的工作流#xff0c;并通过条件边实现动态循环机制。教程从顺序协作到动态协作逐步深入#xff0…文章详细介绍了使用LangChain构建多智能体协作系统的完整流程包括设计TeamState实现Agent间数据流转使用LangGraph构建包含研究员、报告撰写员和协调员的工作流并通过条件边实现动态循环机制。教程从顺序协作到动态协作逐步深入提供了完整代码实现和调试技巧帮助开发者掌握如何将复杂任务拆解为多个专业Agent协作完成提升AI系统的效率和质量。在上一篇教程中我们掌握了 LangChain 的基础能力让 AI 能聊、能记、能读文件、能用工具。但真实世界的复杂任务往往需要多个专家协作才能完成——就像一个项目团队有人负责调研有人负责撰写还有人负责审核。单一 Agent 的局限性在哪里假设你要求 AI “写一份关于2025年AI药物研发趋势的报告”。一个全能 Agent 需要上网搜索最新数据整理和分析信息撰写专业报告自我审核质量这就像要求一个人既是侦探、又是作家、还是编辑——虽然可能做到但效率和质量都会打折扣。多智能体协作的优势是什么专业分工研究员专注搜索报告员专注写作协调员专注质量控制并行处理不同 Agent 可以同时工作本教程聚焦顺序协作并行协作是下一个进阶主题质量保证通过协调员的循环检查确保输出达标易于调试每个 Agent 职责清晰问题定位更简单本教程将带你从零构建一个研究-报告团队系统包含三个专业 Agent研究员(Researcher)使用本地搜索工具获取实时数据报告撰写员(Reporter)将数据整理成专业报告协调员(Coordinator)判断数据质量决定是继续研究还是进入撰写最精彩的部分是协调员可以让研究员重复搜索直到数据质量达标——这就是动态协作与循环机制的威力。希望对你有所启发。PART 01 - 多智能体架构设计为什么需要 TeamState在单一 Agent 中我们只需要关心用户输入和AI 输出。但在多智能体系统中数据需要在 Agent 之间流转用户查询 → 研究员(搜索数据) → 协调员(评估) → 报告员(撰写) → 最终报告问题来了研究员找到的数据怎么传给协调员协调员的决策怎么告诉系统下一步去哪里这就需要一个团队共享的数据包—— TeamState。TeamState 设计三核心字段TeamState 必须包含class TeamState(TypedDict): query: str # 用户的原始查询/任务 - 所有 Agent 的起点 research_data: str # 研究员收集到的数据 - 传递给协调员和报告员 report: str # 撰写员最终的报告 - 系统的输出 coordinator_decision: str # 协调员的决策 - 控制流程分支关键设计理念query是不变的锚点所有 Agent 都知道最初的目标是什么research_data是数据流转的核心从研究员流向协调员和报告员coordinator_decision是流程控制的关键决定循环还是结束report是最终产物只有报告员会写入LangGraph 架构State Nodes Edges从 LangGraph 的角度看整个系统是一个有向图[START] ↓[Researcher 节点] ← ┐ ↓ │[Coordinator 节点] │ ↓ │ 判断 │ ├─ 数据不足 ────┘ (循环) ├─ 数据充足 → [Reporter 节点] → [END]三种边的类型普通边(add_edge) - 固定流向如 Researcher → Coordinator条件边(add_conditional_edges) - 根据 State 动态决定下一步终点边指向END结束流程PART 02 - 顺序协作研究员 报告员我们先构建一个简化版本研究员搜索数据 → 报告员撰写报告没有循环机制。这样可以先理解基础的数据流转。步骤 1环境准备与工具定义创建新文件lesson8_multiteam.py首先导入依赖并定义本地化搜索工具import osfrom typing import TypedDict, Annotated, List, Unionfrom langgraph.graph import StateGraph, ENDfrom langchain_openai import ChatOpenAIfrom langchain_core.messages import BaseMessage, SystemMessage, HumanMessagefrom langchain.agents import AgentExecutor, create_openai_functions_agentfrom langchain.tools import toolfrom langchain_core.prompts import ChatPromptTemplate# --- 配置 LLM ---API_KEY 你的_API_KEY # 记得替换BASE_URL https://open.bigmodel.cn/api/paas/v4/llm ChatOpenAI( modelglm-4, openai_api_keyAPI_KEY, openai_api_baseBASE_URL)# 定义本地化搜索工具tooldef local_search_proxy(query: str) - str: 使用国内本地搜索引擎代理查找实时数据或事实。 print(f\n 正在调用本地搜索代理查询: {query[:30]}...) # 模拟搜索结果 if 人工智能 in query or AI in query: return 【本地搜索结果】: AI在药物研发、气候建模和多模态交互方面取得了重要进展。2025年行业报告显示具身智能是下一代热点。 return 【本地搜索结果】: 未找到针对该主题的实时数据。tools [local_search_proxy]技术要点tool装饰器将普通函数转换为 LangChain 可识别的工具本教程使用模拟数据实际应用中可替换为真实搜索 API如 Serper、Bing Search步骤 2定义 TeamState 和 Agent# --- 1. 定义团队状态 ---class TeamState(TypedDict): query: str research_data: str report: str# --- 2. 定义研究员 Agent ---researcher_prompt ChatPromptTemplate.from_messages([ (system, 你是一位顶尖的研究员你唯一的任务是使用 local_search_proxy 工具来获取关于用户查询的最新事实和数据。), (human, {query}), (placeholder, {agent_scratchpad}), # 必需字段])researcher_agent create_openai_functions_agent(llm, tools, researcher_prompt)researcher_executor AgentExecutor(agentresearcher_agent, toolstools, verboseTrue)# --- 3. 定义报告撰写员 Agent ---reporter_prompt ChatPromptTemplate.from_messages([ (system, 你是一位专业的报告撰写员。你将接收研究员提供的数据并将其整理成一份清晰、简洁的报告。), (human, 请根据以下数据撰写报告\n\n数据{research_data}), (placeholder, {agent_scratchpad}), # 必需字段])reporter_agent create_openai_functions_agent(llm, [], reporter_prompt)reporter_executor AgentExecutor(agentreporter_agent, tools[], verboseTrue)关键错误预防每个 Agent 的 Prompt 都必须包含{agent_scratchpad}占位符这是 LangChain 框架的强制要求。它用于记录 Agent 的思考过程和工具调用历史。❌常见错误(human, {query}) # 缺少 agent_scratchpad✅正确写法(human, {query}),(placeholder, {agent_scratchpad})步骤 3定义节点函数节点函数是 LangGraph 和 Agent 之间的适配器负责从 TeamState 中提取 Agent 需要的数据调用 Agent Executor将 Agent 的输出更新回 TeamState# --- 4. 定义节点函数 ---def run_researcher(state: TeamState): 研究员节点执行搜索任务 query state[query] print( [节点 A] 研究员启动开始搜索...) # 运行研究员 Agent result researcher_executor.invoke({query: query}) research_data result[output] print(f✅ 研究员完成。数据摘要: {research_data[:100]}...) return {research_data: research_data}def run_reporter(state: TeamState): 报告撰写员节点整理数据为报告 research_data state[research_data] print( [节点 B] 报告撰写员启动...) # 运行报告员 Agent result reporter_executor.invoke({research_data: research_data}) report result[output] print(f✅ 报告完成。摘要: {report[:100]}...) return {report: report}设计模式这是典型的适配器模式(Adapter Pattern)。LangGraph 需要的是接受TeamState参数并返回dict的函数而 Agent Executor 期望的是特定格式的输入。节点函数就是这两者之间的桥梁。步骤 4构建 LangGraph 工作流# --- 5. 组装图表 ---workflow StateGraph(TeamState)# A. 添加节点workflow.add_node(researcher, run_researcher)workflow.add_node(reporter, run_reporter)# B. 设置起点workflow.set_entry_point(researcher)# C. 连接节点顺序执行workflow.add_edge(researcher, reporter)# D. 设置终点workflow.add_edge(reporter, END)# E. 编译图表app workflow.compile()print(✅ 研究与报告团队系统已启动)# --- 6. 测试运行 ---query_task 请使用联网搜索总结2025年人工智能在药物研发领域的最新突破。print(f\n 任务启动: {query_task})final_state app.invoke({query: query_task})print(\n--- 协作任务完成 ---)print(f最终报告\n{final_state[report]})运行流程用户输入 query ↓set_entry_point(researcher) # 从研究员开始 ↓run_researcher() 执行 ├─ 调用 researcher_executor ├─ Agent 使用 local_search_proxy 工具 └─ 更新 state[research_data] ↓add_edge(researcher, reporter) # 自动跳转到报告员 ↓run_reporter() 执行 ├─ 读取 state[research_data] ├─ 调用 reporter_executor └─ 更新 state[report] ↓add_edge(reporter, END) # 结束运行结果✅ 研究员成功调用了local_search_proxy工具✅ 数据通过TeamState从研究员流向报告员PART 03 - 动态协作引入协调员与循环机制顺序协作的局限性在上面的系统中研究员只搜索一次就把数据交给报告员。但如果搜索结果质量不高数据量太少包含大量无关信息我们需要一个质量检查机制能够让研究员重新搜索直到数据达标——这就是循环协作的核心价值。架构升级加入协调员# --- 更新 TeamState ---class TeamState(TypedDict): query: str research_data: str report: str coordinator_decision: str # 新增协调员的决策定义协调员 Agent# --- 协调员 Agent ---coordinator_prompt ChatPromptTemplate.from_messages([ (system, 你是一位专业的团队协调员。你的任务是评估研究员提供的数据是否足以撰写完整报告。 【严格格式要求】: - 如果数据充足请**只回复** finish。 - 如果数据不足请**只回复** research_more。 - 严禁包含任何其他文字或Markdown格式。 ), (human, 请评估以下数据是否充足\n\n{research_data}), (placeholder, {agent_scratchpad}), # 必需])coordinator_agent create_openai_functions_agent(llm, [], coordinator_prompt)coordinator_executor AgentExecutor(agentcoordinator_agent, tools[], verboseTrue)# --- 协调员节点 ---def run_coordinator(state: TeamState): 协调员节点评估数据质量 research_data state[research_data] print( [节点 C] 协调员启动评估数据质量...) result coordinator_executor.invoke({research_data: research_data}) decision result[output].strip().lower() print(f✅ 协调员决策: {decision}) return {coordinator_decision: decision}关键设计协调员的输出必须是finish或research_more之一因为这两个字符串会直接用于 LangGraph 的路由决策。构建动态流程条件边# --- 路由函数 ---def route_coordinator(state: TeamState): 根据协调员决策路由流程 return state[coordinator_decision]# --- 组装动态图表 ---workflow StateGraph(TeamState)# 添加所有节点workflow.add_node(researcher, run_researcher)workflow.add_node(coordinator, run_coordinator)workflow.add_node(reporter, run_reporter)# 设置起点workflow.set_entry_point(researcher)# 研究员 → 协调员固定workflow.add_edge(researcher, coordinator)# 协调员 → 动态路由关键workflow.add_conditional_edges( coordinator, # 从协调员节点出发 route_coordinator, # 调用路由函数 { finish: reporter, # 数据充足 → 报告员 research_more: researcher # 数据不足 → 回到研究员循环 })# 报告员 → 结束workflow.add_edge(reporter, END)app workflow.compile()条件边的工作原理┌─────────────┐ │ Coordinator │ └──────┬──────┘ │ route_coordinator() │ ┌────────────┴────────────┐ │ │ decision finish decision research_more │ │ ↓ ↓ ┌──────────┐ ┌────────────┐ │ Reporter │ │ Researcher │ ← 形成循环 └──────────┘ └─────┬──────┘ │ ↓ 回到 Coordinator完整代码import osfrom typing import TypedDictfrom langgraph.graph import StateGraph, ENDfrom langchain_openai import ChatOpenAIfrom langchain.agents import AgentExecutor, create_openai_functions_agentfrom langchain.tools import toolfrom langchain_core.prompts import ChatPromptTemplate# 配置 API_KEY 你的_API_KEYBASE_URL https://open.bigmodel.cn/api/paas/v4/llm ChatOpenAI( modelglm-4, openai_api_keyAPI_KEY, openai_api_baseBASE_URL)# 工具定义 tooldef local_search_proxy(query: str) - str: 使用国内搜索引擎获取实时数据 print(f\n 搜索: {query[:30]}...) if 人工智能 in query or AI in query: return 【搜索结果】: AI在药物研发、气候建模领域取得重要进展。2025年具身智能成为热点。 return 【搜索结果】: 未找到相关数据。tools [local_search_proxy]# 状态定义 class TeamState(TypedDict): query: str research_data: str report: str coordinator_decision: str# Agent 定义 # 1. 研究员researcher_prompt ChatPromptTemplate.from_messages([ (system, 你是顶尖研究员使用 local_search_proxy 工具获取最新数据。), (human, {query}), (placeholder, {agent_scratchpad}),])researcher_agent create_openai_functions_agent(llm, tools, researcher_prompt)researcher_executor AgentExecutor(agentresearcher_agent, toolstools, verboseTrue)# 2. 协调员coordinator_prompt ChatPromptTemplate.from_messages([ (system, 评估数据是否充足。 - 充足回复: finish - 不足回复: research_more - 严禁其他内容), (human, 评估数据\n{research_data}), (placeholder, {agent_scratchpad}),])coordinator_agent create_openai_functions_agent(llm, [], coordinator_prompt)coordinator_executor AgentExecutor(agentcoordinator_agent, tools[], verboseTrue)# 3. 报告员reporter_prompt ChatPromptTemplate.from_messages([ (system, 你是专业报告撰写员整理数据为清晰报告。), (human, 根据数据撰写报告\n{research_data}), (placeholder, {agent_scratchpad}),])reporter_agent create_openai_functions_agent(llm, [], reporter_prompt)reporter_executor AgentExecutor(agentreporter_agent, tools[], verboseTrue)# 节点定义 def run_researcher(state: TeamState): print( 研究员启动...) result researcher_executor.invoke({query: state[query]}) return {research_data: result[output]}def run_coordinator(state: TeamState): print( 协调员评估...) result coordinator_executor.invoke({research_data: state[research_data]}) decision result[output].strip().lower() print(f✅ 决策: {decision}) return {coordinator_decision: decision}def run_reporter(state: TeamState): print( 报告员撰写...) result reporter_executor.invoke({research_data: state[research_data]}) return {report: result[output]}# 路由函数 def route_coordinator(state: TeamState): return state[coordinator_decision]# 构建图表 workflow StateGraph(TeamState)workflow.add_node(researcher, run_researcher)workflow.add_node(coordinator, run_coordinator)workflow.add_node(reporter, run_reporter)workflow.set_entry_point(researcher)workflow.add_edge(researcher, coordinator)workflow.add_conditional_edges( coordinator, route_coordinator, {finish: reporter, research_more: researcher})workflow.add_edge(reporter, END)app workflow.compile()# 运行测试 if __name__ __main__: print(✅ 动态多智能体系统启动\n) query 总结2025年AI在药物研发领域的最新突破 final_state app.invoke({query: query}) print(\n *60) print( 最终报告) print(*60) print(final_state[report])运行结果与分析研究员调用工具获取数据协调员评估数据充足返回finishLangGraph 根据路由规则跳转到报告员生成最终报告如果数据不足会发生什么假设搜索结果是未找到相关数据协调员会返回research_more流程会Researcher → Coordinator (decision: research_more) ↓ ↓ (循环) ↓ Researcher (再次搜索) ↓ Coordinator (再次评估) ↓ ...直到 decision finishPART 04 - 调试与优化技巧常见错误 1agent_scratchpad 缺失错误信息ValueError: Prompt must have input variable原因create_openai_functions_agent强制要求 Prompt 包含{agent_scratchpad}占位符。解决方案# ❌ 错误prompt ChatPromptTemplate.from_messages([ (system, ...), (human, {query}),])# ✅ 正确prompt ChatPromptTemplate.from_messages([ (system, ...), (human, {query}), (placeholder, {agent_scratchpad}), # 必需])常见错误 2协调员决策格式不规范问题协调员返回了finish。或我建议finish导致路由失败。解决方案在 System Prompt 中明确强调格式要求在节点函数中清洗输出def run_coordinator(state: TeamState): result coordinator_executor.invoke({research_data: state[research_data]}) decision result[output].strip().lower() # 清洗输出提取关键词 if finish in decision: decision finish elif research_more in decision or more in decision: decision research_more else: decision finish # 默认策略 return {coordinator_decision: decision}调试技巧启用详细日志# 在 AgentExecutor 中启用 verboseresearcher_executor AgentExecutor( agentresearcher_agent, toolstools, verboseTrue, # 显示详细思考过程 max_iterations3, # 限制最大迭代次数防止死循环)输出示例 Entering new AgentExecutor chain...Thought: 我需要使用 local_search_proxy 工具来搜索数据。Action: local_search_proxyAction Input: 2025年AI药物研发突破Observation: 【搜索结果】: ...Thought: 我现在知道了答案。Final Answer: ... Finished chain.性能优化限制循环次数如果协调员一直返回research_more可能导致无限循环。解决方案在 TeamState 中增加循环计数器class TeamState(TypedDict): query: str research_data: str report: str coordinator_decision: str loop_count: int # 新增循环计数def run_researcher(state: TeamState): loop_count state.get(loop_count, 0) 1 print(f 研究员启动 (第 {loop_count} 次)...) if loop_count 3: # 最多循环3次 print(⚠️ 达到最大循环次数强制结束研究。) return { research_data: state.get(research_data, 数据收集超时), loop_count: loop_count } result researcher_executor.invoke({query: state[query]}) return { research_data: result[output], loop_count: loop_count }PART 05 - 进阶主题与实战建议进阶 1并行多智能体本教程的 Agent 是顺序执行的。在实际应用中多个 Agent 可以并行工作# 并行执行多个研究员workflow.add_node(researcher_ai, run_researcher_ai)workflow.add_node(researcher_bio, run_researcher_bio)# 从起点同时启动两个研究员workflow.set_entry_point(researcher_ai)workflow.set_entry_point(researcher_bio) # LangGraph 支持多起点# 两个研究员都完成后才进入协调员workflow.add_edge(researcher_ai, aggregator)workflow.add_edge(researcher_bio, aggregator)进阶 2人类在环(Human-in-the-Loop)在协调员节点增加人类审核def run_coordinator_with_human(state: TeamState): print( 协调员评估...) result coordinator_executor.invoke({research_data: state[research_data]}) decision result[output].strip().lower() # 增加人类确认 print(f\nAI 建议: {decision}) user_confirm input(是否同意(y/n): ) if user_confirm.lower() ! y: decision input(请输入决策 (finish/research_more): ) return {coordinator_decision: decision}进阶 3持久化状态将 TeamState 保存到数据库支持长时间运行的任务from langgraph.checkpoint.sqlite import SqliteSaver# 使用检查点机制memory SqliteSaver.from_conn_string(checkpoints.db)app workflow.compile(checkpointermemory)# 运行时指定 thread_idconfig {configurable: {thread_id: task_001}}final_state app.invoke({query: query}, configconfig)# 稍后可以恢复执行final_state app.invoke(None, configconfig) # 从上次中断处继续实战建议1. 工具选择搜索工具国内推荐 Serper API需翻墙或自建爬虫向量数据库Chroma(本地)、Pinecone(云端)、阿里云向量检索LLM 选择智谱 GLM-4(中文强)、Kimi(长文本)、通义千问(免费额度高)2. Prompt 工程协调员的 Prompt 是系统稳定性的关键务必多次测试使用 Few-shot Learning 提升输出稳定性(system, 你是协调员。参考以下示例示例1:数据: AI在药物研发取得突破...决策: finish示例2:数据: 未找到相关数据决策: research_more现在评估以下数据...)3. 错误处理每个节点函数都应该有 try-exceptAgent 调用超时后的降级策略def run_researcher(state: TeamState): try: result researcher_executor.invoke( {query: state[query]}, {max_execution_time: 30} # 30秒超时 ) return {research_data: result[output]} except Exception as e: print(f⚠️ 研究员执行失败: {e}) return {research_data: 搜索超时使用缓存数据}结论恭喜你完成了 LangChain 多智能体协作的进阶学习你现在已经掌握✅TeamState 设计- 理解数据如何在 Agent 间流转✅LangGraph 架构- 使用 Nodes、Edges、Conditional Edges 构建复杂流程✅Agent 分工协作- 将任务拆解为专业节点提升质量和可维护性✅动态循环机制- 通过协调员实现质量检查和重试逻辑✅调试与优化- 处理常见错误提升系统稳定性技术总结表技术点核心概念实战价值TeamState类型化的数据容器保证数据流转的类型安全Agent ExecutorAgent 的运行时环境封装 LLM 工具调用逻辑addedge固定流向的边构建顺序执行流程addconditionaledges动态路由的边实现循环和分支逻辑agentscratchpadAgent 的工作记忆LangChain 框架强制要求工具(tool)扩展 Agent 能力连接外部系统(搜索、数据库)下一步学习路径并行多智能体多个 Agent 同时工作提升效率流式输出(Streaming)实时显示 Agent 的思考过程向量数据库集成构建 RAG 系统让 Agent 访问私有知识库生产级部署使用 FastAPI Docker 部署到云端成本优化混合使用不同价位的模型降低 API 费用如何学习AI大模型 “最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】CSDN粉丝独家福利这份完整版的 AI 大模型学习资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取【保证100%免费】读者福利CSDN大礼包《最新AI大模型学习资源包》免费分享 安全链接放心点击对于0基础小白入门如果你是零基础小白想快速入门大模型是可以考虑的。一方面是学习时间相对较短学习内容更全面更集中。二方面是可以根据这些资料规划好学习计划和方向。1.大模型入门学习思维导图要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。对于从来没有接触过AI大模型的同学我们帮你准备了详细的学习成长路线图学习规划。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。全套教程文末领取哈2.AGI大模型配套视频很多朋友都不喜欢晦涩的文字我也为大家准备了视频教程每个章节都是当前板块的精华浓缩。3.大模型实际应用报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。全套教程文末领取哈4.大模型实战项目项目源码光学理论是没用的要学会跟着一起做要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战项目来学习。全套教程文末领取哈5.大模型经典学习电子书随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。全套教程文末领取哈6.大模型面试题答案截至目前大模型已经超过200个在大模型纵横的时代不仅大模型技术越来越卷就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道我总结了大模型常考的面试题。全套教程文末领取哈为什么分享这些资料?只要你是真心想学AI大模型我这份资料就可以无偿分享给你学习我国在这方面的相关人才比较紧缺大模型行业确实也需要更多的有志之士加入进来我也真心希望帮助大家学好这门技术如果日后有什么学习上的问题欢迎找我交流有技术上面的问题我是很愿意去帮助大家的这些资料真的有用吗?这份资料由我和鲁为民博士共同整理鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。CSDN粉丝独家福利这份完整版的 AI 大模型学习资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取【保证100%免费】读者福利CSDN大礼包《最新AI大模型学习资源包》免费分享 安全链接放心点击
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做专题页的背景网站网站建设产品图

编程实现 WPF 应用程序 1. 引言 Microsoft 目前提供了两种创建桌面应用程序的方式:Windows Forms(自 .NET 1.0 起使用的技术)和 Windows Presentation Foundation(WPF,.NET 3.5 新增)。无论使用哪种技术,C# 语言基本保持不变。本文将重点介绍如何使用 C# 事件处理程序…

张小明 2025/12/28 22:03:08 网站建设

wordpress用网站测速室内平面设计软件

2025年已成为AI Agent发展的关键年份。随着技术的成熟和应用场景的拓展,AI智能体正从简单的聊天机器人进化成为能够真正理解、规划并执行复杂任务的数字伙伴。今天我们就来盘点一下当前热门的AI Agent方向和未来趋势。 一、记忆型Agent:突破“金鱼记忆”…

张小明 2025/12/30 3:37:35 网站建设

网站建设数据库怎么选择宣武网站开发

Spring Boot 概述Spring Boot 是一个基于 Spring 框架的开源项目,旨在简化 Spring 应用的初始搭建和开发过程。通过自动配置、约定优于配置的原则,以及内嵌服务器等特性,Spring Boot 显著减少了开发者的配置工作,使得快速构建独立…

张小明 2025/12/28 22:01:52 网站建设

深圳网站建设哪家最好深圳 seo 外贸网站建设 多语种

Sequential Thinking MCP Server:5步构建高效结构化思维框架的终极指南 【免费下载链接】mcp-sequential-thinking 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-sequential-thinking 在信息过载的时代,如何保持清晰的思考路径成为每个人面…

张小明 2025/12/30 6:31:47 网站建设

微信公众号 做不了微网站wordpress邮件客户端

EmotiVoice语音合成API计费模式设计思路 在虚拟助手、数字人、有声内容创作日益普及的今天,用户对语音合成的要求早已超越“能说话”这一基本功能。人们期待的是富有情感、具备个性、甚至带有“人格”的声音输出——这正是EmotiVoice这类高表现力TTS引擎迅速崛起的技…

张小明 2025/12/30 1:16:34 网站建设

网站托管服务协议电子商务网站开发的说法

Silverlight的动画、变换与自定义控件开发 在Silverlight开发中,动画和变换是提升用户体验的重要手段,而自定义控件则能满足特定功能需求。下面将详细介绍Silverlight中的动画、变换以及自定义控件的相关知识。 1. Silverlight中的动画与变换 Silverlight包含多种2D变换,…

张小明 2025/12/28 22:00:01 网站建设