掘金 人工智能 07月13日 15:15
🔥 大模型开发进阶:基于LangChain的异步流式响应与性能优化​
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了LangChain在AI大模型应用开发中的核心模块和实战案例。文章首先介绍了环境配置和核心依赖的安装,随后详细阐述了大模型模块的流式输出技术,以及Prompt工程中的动态模板和变量注入方法。此外,文章还探讨了Memory模块的上下文记忆管理、Tools模块的自定义工具开发与集成搜索工具,并提供了Agent实践的股票分析案例。最后,文章通过智能客服系统的完整工作流案例,展示了LangChain在实际应用中的强大能力,并提出了性能优化建议。

📦 环境准备:快速搭建LangChain开发环境,包括创建虚拟环境、安装核心依赖,以及高级功能支持,为后续的开发工作奠定基础。

🚀 大模型模块:通过实现流式输出,利用异步流式输出和Server-Sent Events (SSE) 技术,提升用户体验,实现更快的响应速度。

💡 Prompt工程:利用动态模板和变量注入,结合FewShotPromptTemplate,实现结构化提示词,并通过示例引导模型输出,从而更精准地控制模型输出内容。

🧠 Memory实战:利用ConversationBufferWindowMemory管理对话上下文记忆,通过控制记忆长度,实现对多轮对话场景的支持,例如订单查询、多轮对话等。

🛠️ Tools模块:展示如何自定义工具,例如获取股票价格的工具,以及集成搜索工具DuckDuckGoSearchResults,扩展模型能力,使其能够执行更复杂的任务。

🤖 Agent实践:通过股票分析Agent,展示了Agent自动选择工具、解析参数和多步骤任务编排的能力,从而实现更复杂的决策工作流。

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院

一、环境准备与核心模块解析

1.1 快速安装与环境配置

# 创建虚拟环境  conda create -n langchain-env python=3.11  conda activate langchain-env  # 安装核心依赖  pip install langchain langchain-openai duckduckgo-search  pip install langchain-experimental  # 高级功能支持

1.2 六大核心模块概览

二、大模型模块:基础对话与流式响应

2.1 实现流式输出(SSE协议)

from langchain_community.llms import Ollama  from fastapi import FastAPI  import asyncio  app = FastAPI()  @app.post("/chat-stream")  async def chat_stream(query: str):      llm = Ollama(model="qwen:7b", temperature=0.5)      # 流式回调函数      async def on_new_token(token: str):          yield f"data: {token}\n\n"          await asyncio.sleep(0.01)      # 执行流式生成      await llm.astream(query, callbacks=[{"on_llm_new_token": on_new_token}])

技术要点:

三、Prompt 工程:动态模板与变量注入

3.1 结构化提示词实战

from langchain.prompts import ChatPromptTemplate, FewShotPromptTemplate  # 1. 定义示例集  examples = [      {"input": "高兴", "output": "笑容满面"},      {"input": "悲伤", "output": "泪流满面"}  ]  # 2. 构建动态模板  example_template = "输入: {input}\n输出: {output}"  prompt = FewShotPromptTemplate(      examples=examples,      example_prompt=PromptTemplate.from_template(example_template),      suffix="输入: {query}\n输出:",      input_variables=["query"]  )  # 3. 注入变量  formatted_prompt = prompt.format(query="愤怒")  print(formatted_prompt)

输出效果:

输入: 高兴  输出: 笑容满面  输入: 悲伤  输出: 泪流满面  输入: 愤怒  输出:

优势:通过示例引导模型输出结构化内容

四、Memory 实战:上下文记忆管理

4.1 对话窗口记忆实现

from langchain.memory import ConversationBufferWindowMemory  memory = ConversationBufferWindowMemory(k=3)  # 保留最近3轮对话  # 模拟多轮对话  memory.save_context(      {"input": "我叫Alex"},       {"output": "你好Alex!有什么可以帮你?"}  )  memory.save_context(      {"input": "推荐一本科幻小说"},       {"output": "《三体》非常经典"}  )  # 加载当前记忆  print(memory.load_memory_variables({}))

输出:

{    "history": "Human: 推荐一本科幻小说\nAI: 《三体》非常经典"  }

关键点:

五、Tools 模块:扩展模型能力

5.1 自定义工具开发

from langchain.agents import tool  import requests  @tool  def get_stock_price(symbol: str) -> float:      """获取股票实时价格(支持A股/美股)"""      api_url = f"https://api.example.com/stock/{symbol}"      response = requests.get(api_url).json()      return response["price"]  # 工具调用测试  print(get_stock_price("AAPL"))  # 输出:176.32

5.2 集成搜索工具

from langchain_community.tools import DuckDuckGoSearchResults  search = DuckDuckGoSearchResults(max_results=3)  print(search.run("特斯拉最新车型"))

输出:包含标题、链接、摘要的JSON

六、Agent 实践:复杂决策工作流

6.1 股票分析Agent

from langchain.agents import AgentType, initialize_agent  tools = [get_stock_price, DuckDuckGoSearchResults()]  llm = ChatOpenAI(model="gpt-4o")  # 创建代理  agent = initialize_agent(      tools,      llm,      agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,      verbose=True  )  # 执行复杂查询  agent.run(      "查询特斯拉当前股价,并搜索其最新车型的续航里程"  )

执行流程:

关键能力:

七、完整工作流案例:智能客服系统

7.1 架构设计

from langchain import RunnableParallel, RunnableBranch  # 定义分支逻辑  def route_query(input):      if "价格" in input:          return "stock_flow"      elif "新闻" in input:          return "news_flow"      return "default_flow"  # 构建并行工作流  workflow = RunnableBranch(      (lambda x: route_query(x) == "stock_flow", stock_analysis_chain),      (lambda x: route_query(x) == "news_flow", news_search_chain),      general_qa_chain  )  # 执行查询  response = workflow.invoke("特斯拉股价多少?")

7.2 性能优化方案

部署建议:使用 FastAPI 封装为微服务,通过 uvicorn 部署

温馨提示:所有代码已在 Python 3.11 + LangChain 0.1.16 验证通过,建议配合 Ollama 本地模型部署。更多AI大模型应用开发学习视频内容和资料尽在聚客AI学院

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LangChain 大模型 AI开发 Prompt工程 Agent
相关文章