LLMFlows异步流教程并行运行多个AI模型调用提升应用效率300%【免费下载链接】llmflowsLLMFlows - Simple, Explicit and Transparent LLM Apps项目地址: https://gitcode.com/gh_mirrors/ll/llmflowsLLMFlows是一个专注于简化AI应用开发的Python框架通过其异步流功能开发者可以轻松实现多个AI模型调用的并行执行显著提升应用效率。本文将详细介绍如何利用LLMFlows的异步流特性构建高效的AI应用。为什么选择异步流处理AI模型调用在传统的AI应用开发中模型调用通常是串行执行的这意味着每个调用必须等待前一个调用完成才能开始。这种方式在处理多个相互独立的模型调用时效率极低会造成大量的等待时间。LLMFlows的异步流功能允许开发者将多个AI模型调用设计为流步骤FlowStep并自动并行执行那些所有输入都已准备就绪的步骤。这种并行处理能力可以将应用效率提升300%以上特别是在需要处理复杂流程或多个独立任务的场景中。图LLMFlows复杂异步流结构示意图展示了多个流步骤如何并行执行LLMFlows异步流核心组件LLMFlows提供了一系列用于构建异步流的核心组件主要包括AsyncBaseFlow所有异步流的基类负责管理流步骤和执行流程AsyncBaseFlowStep异步流步骤的基类支持并行执行AsyncFlow异步流的具体实现类AsyncFlowStep异步流步骤的具体实现类这些组件定义在以下路径中llmflows/flows/async_base_flow.pyllmflows/flows/async_base_flowstep.pyllmflows/flows/async_flow.pyllmflows/flows/async_flowstep.py快速入门构建你的第一个异步流下面我们通过一个实际示例来演示如何使用LLMFlows构建异步流。这个示例将创建一个电影相关内容生成器包括生成电影标题、歌曲标题、主要角色和歌词等多个并行任务。1. 安装LLMFlows首先你需要克隆仓库并安装LLMFlowsgit clone https://gitcode.com/gh_mirrors/ll/llmflows cd llmflows pip install -r requirements.txt2. 创建异步流步骤以下是创建多个异步流步骤的基本示例from llmflows.flows import AsyncFlow, AsyncFlowStep from llmflows.llms import OpenAI from llmflows.prompts import PromptTemplate # 创建LLM实例 open_ai_llm OpenAI(api_keyyour-api-key) # 创建提示模板 title_template PromptTemplate(What is a good title of a movie about {topic}?) song_template PromptTemplate(What is a good song title for a movie called {movie_title}?) characters_template PromptTemplate(What are two main characters for a movie called {movie_title}?) lyrics_template PromptTemplate(Write lyrics for a song based on {song_title} and characters {main_characters}) # 创建异步流步骤 flowstep1 AsyncFlowStep( nameMovie Title, llmopen_ai_llm, prompt_templatetitle_template, output_keymovie_title ) flowstep2 AsyncFlowStep( nameSong Title, llmopen_ai_llm, prompt_templatesong_template, output_keysong_title ) flowstep3 AsyncFlowStep( nameMain Characters, llmopen_ai_llm, prompt_templatecharacters_template, output_keymain_characters ) flowstep4 AsyncFlowStep( nameSong Lyrics, llmopen_ai_llm, prompt_templatelyrics_template, output_keysong_lyrics )3. 连接流步骤并运行接下来我们需要连接这些流步骤并创建异步流# 连接流步骤 flowstep1.connect(flowstep2, flowstep3) # 电影标题生成后并行生成歌曲标题和角色 flowstep2.connect(flowstep4) # 歌曲标题生成后用于生成歌词 flowstep3.connect(flowstep4) # 角色生成后用于生成歌词 # 创建异步流 soundtrack_flow AsyncFlow(flowstep1) # 运行流 async def run_flow(): result await soundtrack_flow.start(topicfriendship, verboseTrue) print(result) import asyncio asyncio.run(run_flow())完整的示例代码可以在examples/10_complex_async_flows.py中找到。异步流的工作原理LLMFlows的异步流通过以下机制实现并行执行依赖解析流会自动分析各个步骤之间的依赖关系就绪检查持续检查哪些步骤的所有输入都已准备就绪并行执行对所有就绪的步骤进行并行执行结果传递将步骤的输出自动传递给依赖它的后续步骤这种机制确保了系统资源得到最充分的利用同时简化了开发者的工作不需要手动管理线程或进程。图LLMFlows异步流执行流程示意图展示了步骤如何根据依赖关系并行执行异步流的最佳实践1. 合理设计步骤依赖为了最大化并行性应该将相互独立的任务设计为可以并行执行的步骤。例如在生成报告时可以同时并行生成不同章节最后再合并。2. 设置适当的超时时间在创建异步流步骤时可以设置适当的超时时间避免某个步骤阻塞整个流程flowstep AsyncFlowStep( nameExample Step, llmopen_ai_llm, prompt_templateprompt_template, output_keyoutput, timeout30 # 设置30秒超时 )3. 使用回调函数监控进度LLMFlows支持回调函数可以用来监控流的执行进度和处理异常from llmflows.callbacks import AsyncBaseCallback class MyCallback(AsyncBaseCallback): async def on_flow_start(self, flow_name): print(fFlow {flow_name} started) async def on_flow_end(self, flow_name, result): print(fFlow {flow_name} ended with result: {result}) # 在流中使用回调 flow AsyncFlow(first_step, callbacks[MyCallback()])相关的回调类定义在llmflows/callbacks/目录下。异步流在实际项目中的应用LLMFlows的异步流功能可以应用于多种场景内容创作同时生成标题、摘要、关键词等数据分析并行处理不同数据源客户服务同时进行意图识别、情感分析和回复生成研究助手并行查询多个知识库并整合结果在examples/llmflows_in_fastapi/目录中你可以找到如何将LLMFlows异步流集成到FastAPI应用中的示例。总结LLMFlows的异步流功能为AI应用开发提供了强大的并行处理能力能够显著提升应用效率。通过合理设计流步骤和依赖关系开发者可以轻松构建复杂而高效的AI应用。无论是处理简单的多步骤任务还是构建复杂的AI工作流LLMFlows的异步流都能帮助你以更少的代码实现更高的性能。现在就尝试使用LLMFlows体验AI应用开发的新方式吧更多详细文档和示例请参考项目的docs/目录。如果你有任何问题或建议欢迎参与项目的贡献和讨论。【免费下载链接】llmflowsLLMFlows - Simple, Explicit and Transparent LLM Apps项目地址: https://gitcode.com/gh_mirrors/ll/llmflows创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考