集团官方网站建设公众号开发者密码怎么启用

张小明 2026/1/10 5:13:49
集团官方网站建设,公众号开发者密码怎么启用,优惠卷网站建设怎么挣钱,photoshop做网站本文介绍大模型开发中的并行化模式#xff0c;通过并发执行多个独立组件而非顺序处理来显著提升效率。以文档分析为例#xff0c;展示如何同时进行情感分析、实体提取、主题识别和摘要生成#xff0c;最后整合结果。提供了LangChain的RunnableParallel和LangGraph的状态工作…本文介绍大模型开发中的并行化模式通过并发执行多个独立组件而非顺序处理来显著提升效率。以文档分析为例展示如何同时进行情感分析、实体提取、主题识别和摘要生成最后整合结果。提供了LangChain的RunnableParallel和LangGraph的状态工作流图两种实现方案强调识别可并行任务的重要性特别是在处理延迟外部服务时并行化是优化Agent工作流性能的关键技术。一、并行化模式概述在前面的章节中我们探讨了用于顺序工作流的提示链和用于动态决策及不同路径间转换的路由。虽然这些模式不可或缺但许多复杂的Agent任务涉及多个可同时执行而非顺序执行的子任务。这正是并行化模式变得至关重要的场景。并行化涉及并发执行多个组件包括LLM调用、工具使用乃至整个子Agent。不同于顺序等待每个步骤完成并行执行允许独立任务同时运行从而显著缩短可分解为独立部分的任务的总执行时间。设想一个旨在分析文档并提取不同方面信息的Agent。顺序方法可能如下分析文档的情感倾向 提取文档中的关键实体 总结文档的主要内容 基于以上分析生成综合报告而并行方法则可改为同时分析文档的情感倾向、提取关键实体和总结内容 基于所有并行分析结果生成综合报告此步骤通常为顺序执行需等待并行步骤完成核心思想是识别工作流中不依赖其他部分输出的环节并并行执行。这在处理具有延迟的外部服务如API或数据库时尤其有效因为您可以并发发出多个请求。实现并行化通常需要支持异步执行或多线程/多进程的框架。现代Agent框架在设计时已充分考虑异步操作使您能够轻松定义可并行运行的步骤。并行化模式对于提升Agent系统的效率和响应能力至关重要特别是在处理涉及多个独立查询、计算或与外部服务交互的任务时。这是优化复杂Agent工作流性能的关键技术。二、案例实战核心目标是从给定的网页URL加载文档然后同时并行对该文档进行四种不同类型的分析最后将所有分析结果整合成一份全面的报告。三、LangChain实现以下实现展示了使用LangChain框架与DeepSeek模型构建的并行文档分析工作流。该工作流设计用于对同一文档并行执行多种分析任务然后将结果整合为综合报告。importasyncioimportos os.environ[USER_AGENT]chapter3/langchain_example# 可自定义名称和联系方式from langchain_core.promptsimportChatPromptTemplate from langchain_core.output_parsersimportStrOutputParser, JsonOutputParser from langchain_core.runnablesimportRunnable, RunnableParallel, RunnablePassthrough from langchain_community.document_loadersimportWebBaseLoader from langchain_text_splittersimportRecursiveCharacterTextSplitter# --- 初始化llm ---from init_clientimportinit_llm llminit_llm(0.3)# --- 文档加载和预处理 ---def load_and_process_document(url: str)-str:加载并处理文档返回文本内容 loaderWebBaseLoader(url)documentsloader.load()text_splitterRecursiveCharacterTextSplitter(chunk_size2000,chunk_overlap200)textstext_splitter.split_documents(documents)# 合并所有文本块为一个完整文档full_text\n\n.join([doc.page_contentfordocintexts])returnfull_text# --- 定义并行分析链 ---# 情感分析链sentiment_chain: Runnable(ChatPromptTemplate.from_messages([(system,分析以下文本的整体情感倾向积极、消极或中性并提供简短解释),(user,{text})])|llm|StrOutputParser())# 关键实体提取链entities_chain: Runnable(ChatPromptTemplate.from_messages([(system,从以下文本中提取并列出所有重要实体人物、组织、地点等以JSON格式返回包含实体类型和实体名称),(user,{text})])|llm|JsonOutputParser())# 主题提取链topics_chain: Runnable(ChatPromptTemplate.from_messages([(system,从以下文本中识别3-5个主要主题或概念每个主题不超过5个词),(user,{text})])|llm|StrOutputParser())# 摘要生成链summary_chain: Runnable(ChatPromptTemplate.from_messages([(system,为以下文本生成一个简洁的摘要不超过200字),(user,{text})])|llm|StrOutputParser())# --- 构建并行 综合链 ---# 1. 定义要并行运行的任务块parallel_analysisRunnableParallel({sentiment:sentiment_chain,entities:entities_chain,topics:topics_chain,summary:summary_chain,text:RunnablePassthrough(),# 传递原始文本})# 2. 定义将组合并行结果的最终综合提示词synthesis_promptChatPromptTemplate.from_messages([(system,基于以下分析结果 情感分析{sentiment}关键实体{entities}主要主题{topics}内容摘要{summary}生成一个全面的分析报告包含以上所有方面的洞察并突出最重要的发现。),(user,原始文本片段{text}...)])# 3. 构建完整链full_analysis_chainparallel_analysis|synthesis_prompt|llm|StrOutputParser()# --- 运行链 ---async def analyze_document(url: str)-None: 异步分析文档并行执行多种分析任务 参数 url: 要分析的文档URLifnot llm: print(LLM未初始化。无法运行示例。)return# print(f\n--- 开始分析文档{url} ---)try:# 加载并处理文档document_textload_and_process_document(url)document_textdocument_text[:500]print(f文档加载完成长度{len(document_text)} 字符)# 并行执行分析print(\n--- 执行并行分析 ---)responseawait full_analysis_chain.ainvoke(document_text)print(\n--- 分析结果 ---)print(response)except Exception as e: print(f\n分析过程中发生错误{e})if__name____main__:article_urlhttps://hub.baai.ac.cn/view/50604asyncio.run(analyze_document(article_url))代码解释1. 模型初始化 from init_clientimportinit_llm llminit_llm(0.3)2. 文档加载与预处理 from langchain_community.document_loadersimportWebBaseLoader from langchain_text_splittersimportRecursiveCharacterTextSplitter def load_and_process_document(url: str)-str: loaderWebBaseLoader(url)documentsloader.load()text_splitterRecursiveCharacterTextSplitter(chunk_size2000,chunk_overlap200)textstext_splitter.split_documents(documents)full_text\n\n.join([doc.page_contentfordocintexts])returnfull_text 解释 WebBaseLoader(url)这是一个LangChain社区组件用于抓取指定URL的网页内容并将其转换为LangChain的Document对象格式。 RecursiveCharacterTextSplitterLLM的上下文窗口一次能处理的文本长度是有限的。因此长文档需要被分割成更小的块。chunk_size2000每个文本块大约2000个字符。chunk_overlap200相邻的文本块之间有200个字符的重叠。这可以确保在分割时不会丢失上下文信息比如一个句子不会被硬生生切断。 full_text\n\n.join(...)在这个特定示例中我们的分析链是针对整个文档进行操作的。因此在分割后我们又用换行符将所有文本块重新合并成一个大的字符串以便后续的并行分析可以基于完整的上下文。3. 定义独立的并行任务“分” 这是并行化模式的核心。我们定义了四个完全独立的LangChain链每个链执行一种特定的分析任务。# 情感分析链sentiment_chain: Runnable(ChatPromptTemplate.from_messages([...])|llm|StrOutputParser())# 关键实体提取链entities_chain: Runnable(ChatPromptTemplate.from_messages([...])|llm|JsonOutputParser())# 主题提取链topics_chain: Runnable(ChatPromptTemplate.from_messages([...])|llm|StrOutputParser())# 摘要生成链summary_chain: Runnable(ChatPromptTemplate.from_messages([...])|llm|StrOutputParser())解释 LCEL语法|是LangChain表达式语言LCEL的管道操作符。它将前一个组件的输出作为后一个组件的输入。 每个链的结构 ChatPromptTemplate定义发送给LLM的提示词。{text}是一个占位符在运行时会被实际的文档文本替换。 llm我们之前初始化的DeepSeek模型实例。 OutputParser解析LLM的原始输出。 StrOutputParser()将LLM的响应转换为纯字符串。 JsonOutputParser()强制LLM输出JSON格式的字符串并将其解析为Python字典非常适合结构化数据提取如实体列表。 独立性这四个链互不依赖它们都只需要同一个输入——{text}。这使得它们成为并行执行的理想候选者。4. 构建并行执行与综合流程“合” 现在我们将独立的任务组合起来先并行执行再汇总结果。# 1. 定义要并行运行的任务块parallel_analysisRunnableParallel({sentiment:sentiment_chain,entities:entities_chain,topics:topics_chain,summary:summary_chain,text:RunnablePassthrough(),# 传递原始文本})# 2. 定义将组合并行结果的最终综合提示词synthesis_promptChatPromptTemplate.from_messages([...])# 3. 构建完整链full_analysis_chainparallel_analysis|synthesis_prompt|llm|StrOutputParser()解释 RunnableParallel这是实现并行的关键组件。 它接收一个字典。字典的键如sentiment,entities将成为最终输出字典的键。 字典的值如 sentiment_chain, entities_chain是之前定义的可运行对象即我们的分析链。 RunnablePassthrough()这是一个特殊的可运行对象它不做任何处理只是将输入原封不动地传递到输出中。在这里它的作用是把原始的document_text也放入输出字典键为text以便后续的综合步骤可以使用。 工作原理当 parallel_analysis 被调用时LangChain会**同时并发**启动字典中的所有链。 synthesis_prompt这个提示词模板非常巧妙。它使用了与 parallel_analysis 输出字典完全相同的键作为占位符{sentiment},{entities}等。当它接收到 parallel_analysis 的输出时会自动将这些占位符填充为对应的并行分析结果。 full_analysis_chain这是最终的、完整的端到端工作流。 输入document_text首先进入 parallel_analysis。 parallel_analysis 并发执行四个分析链并输出一个包含所有结果的字典。 这个字典被自动传递给 synthesis_prompt生成一个包含所有分析结果的最终提示词。 这个最终提示词被发送给 llmDeepSeek生成综合报告。 StrOutputParser()将报告格式化为字符串。5. 异步执行与运行 async def analyze_document(url: str)-None:# ...document_textload_and_process_document(url)responseawait full_analysis_chain.ainvoke(document_text)# ...if__name____main__:article_url...asyncio.run(analyze_document(article_url))解释 async def analyze_document(...)我们将主逻辑封装在一个异步函数中。这是因为LLM的API调用是网络I/O操作会花费时间等待服务器响应。使用异步编程可以让程序在等待时去做其他事情在这里就是同时处理其他并行任务。 await full_analysis_chain.ainvoke(document_text) .ainvoke()是LangChain可运行对象的异步调用方法。 await 关键字会暂停当前函数的执行直到 full_analysis_chain 完成其所有工作包括内部的并行调用和最终的综合调用但在此期间asyncio事件循环可以高效地管理并发的网络请求。 asyncio.run(...)这是Python中启动顶层异步函数的标准方式。它创建并管理一个事件循环来运行我们的 analyze_document 协程。 总结 这段代码是一个展示现代Agent开发中并行化模式的绝佳范例。它利用LangChain的LCEL和RunnableParallel组件优雅地将一个复杂任务分解为多个独立的子任务并发执行它们最后再进行综合。通过配置ChatOpenAI来使用DeepSeek API它也展示了框架的灵活性和可扩展性。整个过程是异步的确保了在处理多个网络请求时的高效率最终实现了对文档的快速、多维度深度分析。 这个代码示例展示了如何使用LangChain与DeepSeek模型实现文档的并行分析。与原始示例相比主要变化在于语言模型的初始化部分我们使用了DeepSeek的API端点和模型名称同时保留了原有的并行处理逻辑。 代码首先从Web加载文档并进行预处理将其转换为适合分析的文本格式。然后定义了四个独立的分析链每个链负责执行不同的分析任务情感分析、实体提取、主题识别和摘要生成。 通过RunnableParallel组件这些分析任务被组织成一个并行执行的块。当输入文档传递给这个并行块时所有四个分析任务会同时执行各自独立调用DeepSeek模型。这种并行执行方式大大缩短了总分析时间特别是当处理大型文档或复杂分析时。 最后所有并行分析的结果被传递给一个综合链该链将所有分析结果整合成一个全面的分析报告。这种设计允许系统先并行收集各种维度的信息然后基于这些信息生成更深入的综合洞察。 在LangChain中并行执行主要通过LangChain表达式语言LCEL的RunnableParallel组件实现。这个组件允许开发者将多个可运行对象组织在一起当输入传递给这个并行组件时LCEL运行时会并发执行其中包含的所有可运行对象。 DeepSeek模型与OpenAI的API格式兼容因此我们可以继续使用LangChain中的ChatOpenAI类只需指定正确的API基础URL和模型名称即可。这种兼容性使得在不同LLM提供商之间切换变得非常简单而不需要改变应用程序的核心逻辑。 值得注意的是虽然我们使用Python的asyncio库来管理异步执行但在大多数情况下LangChain的抽象层已经处理了底层的并发细节。开发者只需要专注于定义并行任务的结构而不需要直接管理线程或进程。 这种并行化模式特别适合于以下场景 文档分析对同一文档执行多种分析任务 多源信息收集从多个不同来源获取信息 多角度评估从不同角度评估同一问题或方案 批量处理对多个项目应用相同的处理流程 通过并行化这些任务Agent系统可以显著提高处理效率减少总体响应时间特别是在涉及外部API调用或复杂计算的任务中。 并行化模式的挑战与最佳实践 虽然并行化带来了显著的性能优势但在实现时也需要考虑一些挑战 资源管理并行执行多个LLM调用可能会快速消耗API配额或计算资源。实现适当的速率限制和资源管理策略是必要的。 错误处理并行任务中的任何一个失败都可能影响整个工作流。设计健壮的错误处理和恢复机制很重要。 结果聚合并行任务的结果需要有效整合。设计清晰的综合步骤可以确保所有并行分析的价值得到充分利用。 依赖关系识别哪些任务可以真正并行执行哪些之间存在依赖关系是设计高效并行工作流的关键。 最佳实践包括 仔细分析工作流识别可以并行执行的任务 使用适当的抽象层如LangChain的RunnableParallel简化并行实现 实现全面的错误处理和日志记录 监控并行任务的性能优化资源使用 考虑实现动态并行化根据任务特性调整并行度 通过遵循这些最佳实践开发者可以充分利用并行化模式的优势构建高效、响应迅速的Agent系统。四、LangGraph实现import asyncio import os os.environ[USER_AGENT] chapter3/langgraph_example # 可自定义名称和联系方式 from typing import Optional, Dict, Any, List, TypedDict from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser, JsonOutputParser from langchain_community.document_loaders import WebBaseLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langgraph.graph import StateGraph, END from langgraph.checkpoint.memory import MemorySaver # --- 定义状态结构 --- class AnalysisState(TypedDict): 定义图中的状态结构包含所有需要在节点间传递的数据 url: str document_text: str sentiment: Optional[str] entities: Optional[Dict[str, List[str]]] topics: Optional[str] summary: Optional[str] final_report: Optional[str] # --- 初始化llm --- from init_client import init_llm llm init_llm(0.3) # --- 文档加载和预处理 --- def load_and_process_document(state: AnalysisState) - AnalysisState: 加载并处理文档返回更新后的状态 loader WebBaseLoader(state[url]) documents loader.load() text_splitter RecursiveCharacterTextSplitter(chunk_size2000, chunk_overlap200) texts text_splitter.split_documents(documents) full_text \n\n.join([doc.page_content for doc in texts]) # 返回一个新的状态字典只包含需要更新的键 return {document_text: full_text} # --- 定义并行分析节点 --- def analyze_sentiment(state: AnalysisState) - Dict[str, str]: 分析文档的情感倾向只返回sentiment if not llm: return {sentiment: 语言模型未初始化} prompt ChatPromptTemplate.from_messages([ (system, 分析以下文本的整体情感倾向积极、消极或中性并提供简短解释), (user, {text}) ]) chain prompt | llm | StrOutputParser() result chain.invoke({text: state[document_text]}) # 只返回本节点新增的数据 return {sentiment: result} def extract_entities(state: AnalysisState) - Dict[str, Any]: 提取文档中的关键实体只返回entities if not llm: return {entities: {error: 语言模型未初始化}} prompt ChatPromptTemplate.from_messages([ (system, 从以下文本中提取并列出所有重要实体人物、组织、地点等以JSON格式返回包含实体类型和实体名称), (user, {text}) ]) chain prompt | llm | JsonOutputParser() result chain.invoke({text: state[document_text]}) # 只返回本节点新增的数据 return {entities: result} def extract_topics(state: AnalysisState) - Dict[str, str]: 提取文档的主要主题只返回topics if not llm: return {topics: 语言模型未初始化} prompt ChatPromptTemplate.from_messages([ (system, 从以下文本中识别3-5个主要主题或概念每个主题不超过5个词), (user, {text}) ]) chain prompt | llm | StrOutputParser() result chain.invoke({text: state[document_text]}) # 只返回本节点新增的数据 return {topics: result} def generate_summary(state: AnalysisState) - Dict[str, str]: 生成文档的摘要只返回summary if not llm: return {summary: 语言模型未初始化} prompt ChatPromptTemplate.from_messages([ (system, 为以下文本生成一个简洁的摘要不超过200字), (user, {text}) ]) chain prompt | llm | StrOutputParser() result chain.invoke({text: state[document_text]}) # 只返回本节点新增的数据 return {summary: result} def synthesize_report(state: AnalysisState) - Dict[str, str]: 综合所有分析结果生成最终报告只返回final_report if not llm: return {final_report: 语言模型未初始化} prompt ChatPromptTemplate.from_messages([ (system, 基于以下分析结果 情感分析{sentiment} 关键实体{entities} 主要主题{topics} 内容摘要{summary} 生成一个全面的分析报告包含以上所有方面的洞察并突出最重要的发现。), (user, 原始文本片段{text}...) ]) chain prompt | llm | StrOutputParser() result chain.invoke({ sentiment: state[sentiment], entities: state[entities], topics: state[topics], summary: state[summary], text: state[document_text][:500] }) # 只返回本节点新增的数据 return {final_report: result} # --- 构建图 --- def build_analysis_graph(): 构建并返回分析图 workflow StateGraph(AnalysisState) # 添加节点 workflow.add_node(load_document, load_and_process_document) workflow.add_node(analyze_sentiment, analyze_sentiment) workflow.add_node(extract_entities, extract_entities) workflow.add_node(extract_topics, extract_topics) workflow.add_node(generate_summary, generate_summary) workflow.add_node(synthesize_report, synthesize_report) # 设置入口点 workflow.set_entry_point(load_document) # 添加边 - 从文档加载到并行分析节点 workflow.add_edge(load_document, analyze_sentiment) workflow.add_edge(load_document, extract_entities) workflow.add_edge(load_document, extract_topics) workflow.add_edge(load_document, generate_summary) # 添加边 - 从并行分析节点到综合节点 workflow.add_edge(analyze_sentiment, synthesize_report) workflow.add_edge(extract_entities, synthesize_report) workflow.add_edge(extract_topics, synthesize_report) workflow.add_edge(generate_summary, synthesize_report) # 设置结束点 workflow.add_edge(synthesize_report, END) # 编译图 memory MemorySaver() app workflow.compile(checkpointermemory) return app # --- 运行图 --- async def analyze_document_with_graph(url: str) - Dict[str, Any]: if not llm: print(LLM未初始化。无法运行示例。) return {error: LLM未初始化} app build_analysis_graph() # 打印图的结构可选非常直观 try: print(--- 图结构 ---) app.get_graph().print_ascii() print(\n * 20 \n) except Exception as e: print(f无法打印图结构: {e}) print(f\n--- 开始使用LangGraph分析文档{url} ---) try: # 初始状态 initial_state {url: url} # 运行图 config {configurable: {thread_id: 1}} final_state await app.ainvoke(initial_state, configconfig) print(\n--- 分析结果 ---) print(final_state[final_report]) return final_state except Exception as e: print(f\n分析过程中发生错误{e}) return {error: str(e)} if __name__ __main__: article_url https://hub.baai.ac.cn/view/50604 asyncio.run(analyze_document_with_graph(article_url))代码解释这段代码的核心目标是构建一个有状态的、可视化的工作流图用于并行分析文档。与 LangChain 的链式结构不同LangGraph 将工作流定义为由节点代表操作和边代表流程组成的图这使得处理复杂的依赖关系和并行任务变得更加直观和强大。 1. 核心概念状态 (AnalysisState) class AnalysisState(TypedDict): 定义图中的状态结构包含所有需要在节点间传递的数据 url: str document_text: str sentiment: Optional[str] entities: Optional[Dict[str, List[str]]] topics: Optional[str] summary: Optional[str] final_report: Optional[str] 解释 状态是核心在 LangGraph 中State 是整个工作流的“共享内存”或“单一事实来源”。它是一个字典包含了在所有节点之间流动和共享的所有数据。 TypedDict我们使用 TypedDict 来为状态定义一个清晰的结构。这不仅提供了代码自动补全和类型检查的好处更重要的是它让我们的工作流结构一目了然。 字段含义 url 和 document_text 是初始输入和中间数据。 sentiment, entities, topics, summary 是并行分析任务的输出结果。 final_report 是最终的综合输出。 Optional我们将分析结果字段标记为 Optional因为在工作流开始时它们是 None只有在对应的节点执行完毕后才被填充。 2. 核心概念节点 每个节点是一个函数它接收当前的状态执行一个特定的任务并返回一个包含状态更新的字典。 # 示例节点分析情感 def analyze_sentiment(state: AnalysisState) - Dict[str, str]: 分析文档的情感倾向只返回sentiment if not llm: return {sentiment: 语言模型未初始化} # ... 调用LLM进行分析 ... result chain.invoke({text: state[document_text]}) # 关键只返回本节点新增的数据 return {sentiment: result} 解释 输入每个节点函数的第一个参数是当前的 state。节点可以从 state 中读取它需要的数据例如state[document_text]。 输出关键修正点 旧方式导致错误节点返回整个 state 对象。当多个并行节点都这样做时它们会尝试同时更新 url 等共享键导致冲突。 新方式已修复节点只返回一个包含它所负责更新的键的字典。例如analyze_sentiment 节点只返回 {sentiment: ...}。 工作原理当一个节点返回 {sentiment: ...} 时它是在告诉 LangGraph“请将主状态中的 sentiment 字段更新为这个值。” 这种方式是幂等的多个节点可以安全地并行执行因为它们更新的键互不冲突。 3. 核心概念图 (build_analysis_graph) 这是整个工作流的“蓝图”它定义了节点如何连接以及执行顺序。 def build_analysis_graph(): workflow StateGraph(AnalysisState) # 1. 添加节点 workflow.add_node(load_document, load_and_process_document) workflow.add_node(analyze_sentiment, analyze_sentiment) # ... 添加其他节点 ... # 2. 设置入口点 workflow.set_entry_point(load_document) # 3. 添加边定义流程 # 从加载节点到所有并行分析节点 workflow.add_edge(load_document, analyze_sentiment) workflow.add_edge(load_document, extract_entities) workflow.add_edge(load_document, extract_topics) workflow.add_edge(load_document, generate_summary) # 从所有并行分析节点到综合节点 workflow.add_edge(analyze_sentiment, synthesize_report) workflow.add_edge(extract_entities, synthesize_report) workflow.add_edge(extract_topics, synthesize_report) workflow.add_edge(generate_summary, synthesize_report) # 4. 设置结束点 workflow.add_edge(synthesize_report, END) # 5. 编译图 memory MemorySaver() app workflow.compile(checkpointermemory) return app 解释 workflow StateGraph(AnalysisState)创建一个图实例并将其与我们之前定义的 AnalysisState 绑定。 add_node将每个函数注册为图中的一个命名节点。 set_entry_point定义工作流的起点。 add_edge这是定义流程的核心。 实现并行当您从一个节点如 load_document添加多条边指向多个不同的节点如 analyze_sentiment, extract_entities 等时LangGraph 会自动将这些目标节点并行执行。 实现汇聚当多个节点如所有分析节点的边都指向同一个节点如 synthesize_report时synthesize_report 节点会成为一个同步点。它只有在所有前置节点都执行完毕后才会开始执行。 END一个特殊的节点表示工作流的结束。 compile将图的蓝图编译成一个可执行的应用程序 (app)。checkpointerMemorySaver() 允许我们在每一步之后保存状态这对于调试、恢复和与人交互非常有用。 4. 执行图 (analyze_document_with_graph) 这是运行我们构建好的工作流的代码。 async def analyze_document_with_graph(url: str) - Dict[str, Any]: app build_analysis_graph() # 获取编译好的图 initial_state {url: url} # 定义初始状态 config {configurable: {thread_id: 1}} # 配置用于checkpointer # 异步调用图传入初始状态 final_state await app.ainvoke(initial_state, configconfig) print(final_state[final_report]) # 从最终状态中提取结果 return final_state 解释 initial_state我们用一个包含初始数据url的字典来启动图。 app.ainvoke(initial_state, ...)这是执行图的命令。 ainvoke 是异步版本适合在 I/O 密集型应用如调用LLM API中使用。 LangGraph 会根据图的定义从 load_document 节点开始沿着边流动状态直到到达 END 节点。 final_stateainvoke 返回的是工作流完成后的最终状态。这个字典包含了所有节点累积的所有信息我们可以从中提取任何我们关心的结果。 执行后会打印出图的 ASCII 结构让你对整个流程一目了然 ----------- | __start__ | ----------- * * * --------------- **| load_document |*** ******** --------------- ******** ******** *** *** ******* ******** ** ** ******** **** ** ** **** ------------------- ------------------ ---------------- ------------------ | analyze_sentiment |* | extract_entities | | extract_topics | *| generate_summary | ------------------- ******** ------------------ ---------------- ******** ------------------ ******** *** *** ******* ******** ** ** ******** **** ** ** **** ------------------- | synthesize_report | ------------------- * * * --------- | __end__ | ---------那么如何系统的去学习大模型LLM作为一名从业五年的资深大模型算法工程师我经常会收到一些评论和私信我是小白学习大模型该从哪里入手呢我自学没有方向怎么办这个地方我不会啊。如果你也有类似的经历一定要继续看下去这些问题啊也不是三言两语啊就能讲明白的。所以我综合了大模型的所有知识点给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢我就曾放空大脑以一个大模型小白的角度去重新解析它采用基础知识和实战项目相结合的教学方式历时3个月终于完成了这样的课程让你真正体会到什么是每一秒都在疯狂输出知识点。由于篇幅有限⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》扫码获取~为什么要学习大模型我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年人才缺口已超百万凸显培养不足。随着AI技术飞速发展预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。大模型学习指南路线汇总我们这套大模型资料呢会从基础篇、进阶篇和项目实战篇等三大方面来讲解。①.基础篇基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念用最易懂的方式带你入门大模型。②.进阶篇接下来是进阶篇你将掌握RAG、Agent、Langchain、大模型微调和私有化部署学习如何构建外挂知识库并和自己的企业相结合学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。③.实战篇实战篇会手把手带着大家练习企业级的落地项目已脱敏比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等从而帮助大家更好的应对大模型时代的挑战。④.福利篇最后呢会给大家一个小福利课程视频中的所有素材有搭建AI开发环境资料包还有学习计划表几十上百G素材、电子书和课件等等只要你能想到的素材我这里几乎都有。我已经全部上传到CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】相信我这套大模型系统教程将会是全网最齐全 最易懂的小白专用课
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

博罗做网站望京做网站的公司哪家好

Linux 打印机、扫描仪使用及多语言支持全攻略 打印机墨水及维护功能 若现有工具无法查看打印机墨水水平和维护功能,或者打印机品牌未被列出,可尝试使用制造商提供的 Linux 驱动程序(若有)。部分新型打印机可通过机身上的控制按钮来检查墨水水平、对齐和清洁墨盒。若有疑问…

张小明 2026/1/5 20:47:06 网站建设

网站框架一般用什么做广州建网站哪儿济南兴田德润简介

PaddlePaddle Kaggle竞赛实战:如何用它赢得第一名? 在Kaggle这类高手云集的数据科学竞技场中,每一分提升都意味着背后无数轮的模型迭代、特征工程和训练优化。而真正拉开差距的,往往不只是算法创意本身——更是开发效率、环境稳定…

张小明 2026/1/1 18:15:53 网站建设

python毕业设计做网站百度网址输入

LobeChat vs ChatGPT:谁才是真正的开源替代之选? 在大语言模型席卷全球的今天,ChatGPT 已经成为智能对话系统的代名词。它的出现不仅重新定义了人机交互的方式,也催生了一波AI应用开发热潮。然而,当企业开始将这类技术…

张小明 2026/1/1 5:59:24 网站建设

做一般的网站要多久国家对网站建设有什么要求

第一章:Open-AutoGLM 2.0安装前的准备工作在部署 Open-AutoGLM 2.0 之前,必须确保系统环境满足其运行依赖。该框架对硬件资源、操作系统版本及核心依赖库有明确要求,准备不当可能导致安装失败或运行异常。系统与硬件要求 操作系统&#xff1a…

张小明 2026/1/8 18:59:47 网站建设

响水建设局网站wordpress列表系统插件

第一章:Agent服务的备份恢复挑战与现状在现代分布式系统架构中,Agent 服务广泛用于监控、日志采集、配置同步等关键任务。由于其通常部署在边缘节点或客户端环境中,面临网络不稳定、硬件故障频发等问题,备份与恢复机制的设计尤为复…

张小明 2026/1/1 15:19:13 网站建设

高明网站设计收费滕州网站建设网站行吗

从零开始学Excalidraw:新手也能画出专业级手绘图表 在远程协作成为常态的今天,你有没有遇到过这样的场景?——会议刚开始,主持人说:“我们先画个架构图理清思路。”于是大家盯着空白屏幕,有人小心翼翼地拖…

张小明 2026/1/8 19:16:25 网站建设