网站建设广告用rp怎么做网站按钮下拉菜单
2026/2/13 10:20:41 网站建设 项目流程
网站建设广告,用rp怎么做网站按钮下拉菜单,聊城高唐网站建设公司,建立网站有哪几种方式玄同 765 大语言模型 (LLM) 开发工程师 | 中国传媒大学 数字媒体技术#xff08;智能交互与游戏设计#xff09; CSDN 个人主页 | GitHub Follow 关于作者 深耕领域#xff1a;大语言模型开发 / RAG 知识库 / AI Agent 落地 / 模型微调技术栈#xff1a;Python | R…玄同 765大语言模型 (LLM) 开发工程师 | 中国传媒大学 · 数字媒体技术智能交互与游戏设计CSDN · 个人主页 | GitHub · Follow关于作者深耕领域大语言模型开发 / RAG 知识库 / AI Agent 落地 / 模型微调技术栈Python | RAG (LangChain / Dify Milvus) | FastAPI Docker工程能力专注模型工程化部署、知识库构建与优化擅长全流程解决方案「让 AI 交互更智能让技术落地更高效」欢迎技术探讨与项目合作解锁大模型与智能交互的无限可能在大模型应用开发中你是否曾被这些问题困扰如何让大模型调用外部工具如数据库、API如何将大模型与自有知识库结合实现精准问答如何构建多轮对话系统让模型记住上下文如何将大模型能力封装为可复用的组件LangChain 作为大模型应用开发的 “瑞士军刀”通过一系列模块化核心组件让开发者可以像搭乐高积木一样快速构建复杂的大模型应用。本文将从底层原理出发带你彻底搞懂 LangChain 的核心组件以及如何用它们构建生产级大模型应用。一、LangChain 的核心设计理念模块化与可组合性LangChain 的核心理念是将大模型应用拆解为独立组件通过组合实现复杂功能。这些组件可以独立使用也可以灵活组合覆盖了大模型应用开发的全流程LangChain核心组件模型层Models数据连接层Data Connection链Chains代理Agents记忆Memory工具Tools每个组件都有明确的职责开发者可以根据需求选择合适的组件进行组合大大降低了大模型应用的开发门槛。二、核心组件 1模型层Models—— 大模型的 “接口层”提示运行以下示例前请确保已安装最新版核心包及插件pipinstall-U langchain langchain-openai langchain-community langchain-text-splitters faiss-cpu模型层是 LangChain 与大模型交互的核心组件。在 LangChain 1.0 中所有模型都继承自Runnable接口支持统一的invoke调用。1. 核心类型1LLM大语言模型处理纯文本输入输出。fromlangchain_openaiimportOpenAI# 初始化OpenAI LLM (需要环境变量 OPENAI_API_KEY)# llm OpenAI(model_namegpt-3.5-turbo-instruct, temperature0.7)# 使用 Mock LLM 演示无需 API Keyfromlangchain_core.language_models.llmsimportLLMfromtypingimportOptional,List,AnyclassMockLLM(LLM):def_call(self,prompt:str,stop:Optional[List[str]]None,**kwargs:Any)-str:returnf这是关于{prompt[:10]}的技术博客内容...propertydef_llm_type(self)-str:returnmockllmMockLLM()# 推荐使用 invoke 方法responsellm.invoke(请写一篇关于LangChain的技术博客)print(response)2ChatModel对话模型专门处理对话场景输入输出均为消息对象Messages。fromlangchain_openaiimportChatOpenAIfromlangchain_core.messagesimportHumanMessage,SystemMessage# chat_model ChatOpenAI(modelgpt-3.5-turbo)# 使用 Mock ChatModel 演示fromlangchain_core.language_models.chat_modelsimportBaseChatModelfromlangchain_core.outputsimportChatResult,ChatGenerationfromlangchain_core.messagesimportAIMessageclassMockChatModel(BaseChatModel):def_generate(self,messages,stopNone,**kwargs):returnChatResult(generations[ChatGeneration(messageAIMessage(content你好我是 AI 技术博主。))])propertydef_llm_type(self):returnmockchat_modelMockChatModel()# 多轮对话messages[SystemMessage(content你是一名专业的技术博客作者),HumanMessage(content请写一篇关于LangChain核心组件的技术博客)]responsechat_model.invoke(messages)print(response.content)3EmbeddingModel嵌入模型将文本转换为向量用于语义检索。fromlangchain_openaiimportOpenAIEmbeddings# embeddings OpenAIEmbeddings()# 使用 Mock Embeddings 演示fromlangchain_core.embeddingsimportEmbeddingsclassMockEmbeddings(Embeddings):defembed_documents(self,texts:List[str])-List[List[float]]:return[[0.1]*1536for_intexts]defembed_query(self,text:str)-List[float]:return[0.1]*1536embeddingsMockEmbeddings()# 生成文本向量textLangChain is a framework for building LLM applicationsvectorembeddings.embed_query(text)print(f向量维度{len(vector)})2. 关键特性统一接口不同大模型的接口差异被抽象为统一的 API开发者无需为每个模型单独适配参数配置支持温度temperature、最大 Token 数max_tokens等参数的全局配置异步支持所有模型都支持异步调用提升大模型应用的并发性能模型缓存支持缓存模型响应避免重复调用相同请求降低成本。三、核心组件 2数据连接层Data Connection—— 大模型的 “知识库”数据连接层负责将外部数据如文档、数据库、API 数据与大模型结合实现检索增强生成RAG。1. 核心组件1Document Loaders文档加载器将外部文档加载为 LangChain 的Document对象。目前这些加载器主要位于langchain-community包中。fromlangchain_community.document_loadersimportPyPDFLoader# 加载PDF文档# loader PyPDFLoader(langchain_whitepaper.pdf)# documents loader.load()# print(f加载的文档页数{len(documents)})2Text Splitters文本分割器将长文档分割为小片段。LangChain 现在拥有独立的langchain-text-splitters包。fromlangchain_text_splittersimportRecursiveCharacterTextSplitter# 初始化文本分割器text_splitterRecursiveCharacterTextSplitter(chunk_size1000,# 每个片段的最大字符数chunk_overlap200# 片段之间的重叠部分)# 模拟分割文档# split_documents text_splitter.split_documents(documents)3Vector Stores向量数据库与 Retrievers检索器存储向量并支持语义检索。建议使用langchain-chroma或FAISS。fromlangchain_community.vectorstoresimportFAISS# 模拟文档数据fromlangchain_core.documentsimportDocument docs[Document(page_contentLangChain 是一个大模型应用开发框架)]# 使用前面定义的 embeddings (MockEmbeddings) 创建本地向量库vector_storeFAISS.from_documents(docs,embeddings)# 创建检索器retrievervector_store.as_retriever(search_kwargs{k:1})# 执行检索retrieved_docsretriever.invoke(什么是 LangChain)print(f检索结果{retrieved_docs[0].page_content})四、核心组件 3链Chains与 LCEL —— 组件的 “流水线”链Chains负责将多个组件组合成一个可执行的流水线。在 LangChain 1.0 中推荐使用LangChain Expression Language (LCEL)来构建链它比传统的Chain类更灵活、更易于调试。1. 现代组合方式LCELLCEL 允许你使用|运算符将 Prompt、模型和输出解析器连接起来。fromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParser# 创建 Prompt 模板promptChatPromptTemplate.from_template(请写一篇关于 {topic} 的技术博客)# 构建 LCEL 链 (Prompt - LLM - OutputParser)chainprompt|chat_model|StrOutputParser()# 执行链responsechain.invoke({topic:LangChain 1.0 架构})print(response)2. 传统链Legacy Chains虽然官方推荐 LCEL但传统的LLMChain、RetrievalQA等在旧代码库中依然常见。# 旧版导入方式try:fromlangchain.chainsimportLLMChainexceptImportError:print(请安装 langchain 包以使用旧版链)3. 为什么选择 LCELLCEL 不仅仅是一种语法糖它为现代大模型应用提供了核心工程能力流式处理 (Streaming)自动支持从模型到输出解析器的流式输出并行执行 (Parallelism)使用RunnableParallel轻松实现并发调用异步支持 (Async)所有 LCEL 链原生支持ainvoke中间步骤可视化可以轻松追踪链中的每一个环节。五、核心组件 4记忆Memory—— 大模型的 “对话上下文”记忆组件负责存储对话历史。在 1.0 架构中推荐直接在 LCEL 链中管理消息历史或者使用RunnableWithMessageHistory。1. 基础记忆ConversationBufferMemory这是最简单的记忆组件存储完整的对话历史。try:fromlangchain.memoryimportConversationBufferMemoryexceptImportError:print(请安装 langchain 包以使用旧版记忆组件)# 初始化记忆组件memoryConversationBufferMemory()# 在传统对话链中使用# from langchain.chains import ConversationChain# conversation ConversationChain(llmllm, memorymemory)2. 现代记忆管理方式现代做法是使用ChatMemoryHistory配合RunnableWithMessageHistory这样可以更好地控制状态持久化。fromlangchain_community.chat_message_historiesimportChatMessageHistoryfromlangchain_core.runnables.historyimportRunnableWithMessageHistory# 初始化消息历史historyChatMessageHistory()# 现代链配合历史记录伪代码示例# with_history RunnableWithMessageHistory(chain, lambda session_id: history)六、核心组件 5代理Agents—— 大模型的 “决策中心”代理Agents让大模型可以根据用户请求自主决策调用哪些工具。1. 现代 Agent 构建方式LangChain 现在推荐使用create_react_agent或更强大的LangGraph。以下是一个标准的 ReAct Agent 构建流程fromlangchain.agentsimportcreate_react_agent,AgentExecutorfromlangchainimporthub# 1. 定义工具集fromlangchain_core.toolsimporttooltooldefget_weather(city:str)-str:获取指定城市的实时天气returnf{city}的天气是晴25度tools[get_weather]# 2. 获取 ReAct 提示词模板 (需要联网或手动定义)# prompt hub.pull(hwchase17/react)# 这里我们模拟一个简单的 Prompt 模板fromlangchain_core.promptsimportPromptTemplate template尽力回答以下问题。你可以使用以下工具{tools}... 问题{input} {agent_scratchpad}promptPromptTemplate.from_template(template)# 3. 构建 Agent 运行器# agent create_react_agent(chat_model, tools, prompt)# executor AgentExecutor(agentagent, toolstools, verboseTrue)# 4. 执行任务# response executor.invoke({input: 北京今天天气怎么样})注意对于更复杂的逻辑控制推荐学习 LangGraph它是目前构建生产级 AI Agent 的首选框架。七、核心组件 6工具Tools—— 大模型的 “手脚”工具是大模型与外部系统交互的接口。在 1.0 中推荐使用tool装饰器。fromlangchain_core.toolsimporttoolfrompydanticimportBaseModel,FieldclassSearchInput(BaseModel):query:strField(description搜索关键词)tool(search_tool,args_schemaSearchInput)defsearch(query:str)-str:在互联网上搜索信息returnf搜索结果:{query}的相关信息...八、组件组合构建生产级大模型应用 (RAG 实战)通过组合 LangChain 的核心组件我们可以快速构建复杂的生产级大模型应用。以下是一个典型的检索增强生成 (RAG)系统示例使用 Mock 组件演示可运行流程fromlangchain_core.runnablesimportRunnablePassthroughfromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.promptsimportChatPromptTemplate# 1. 模拟检索器 (Retriever)classMockRetriever:definvoke(self,query:str):returnLangChain 的核心价值在于其模块化设计和强大的生态系统。retrieverMockRetriever()# 2. 定义 Prompt 模板template基于以下内容回答问题: {context} 问题: {question} promptChatPromptTemplate.from_template(template)# 3. 构建 LCEL RAG 链# 使用前面定义的 chat_model (MockChatModel)rag_chain({context:retriever.invoke,question:RunnablePassthrough()}|prompt|chat_model|StrOutputParser())# 4. 执行问答responserag_chain.invoke(LangChain 的核心价值是什么)print(fRAG 回答:{response})九、总结LangChain 的核心价值LangChain 1.0 的核心价值在于标准化与工程化。模型层通过Runnable接口统一了所有组件的调用方式数据连接层标准化的 RAG 流程极大降低了知识库构建难度LCEL声明式的链式表达让复杂的逻辑变得清晰且易于并行化生态化丰富的社区插件Community和合作伙伴集成OpenAI, Anthropic 等。如果你想构建稳定、可扩展的大模型应用掌握 LangChain 1.0 的模块化设计和 LCEL 是必经之路

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询