LangChain与大语言模型应用开发实战-课件 第1-4章 LangChain与智能应用开发概述 -高级应用开发_第1页
LangChain与大语言模型应用开发实战-课件 第1-4章 LangChain与智能应用开发概述 -高级应用开发_第2页
LangChain与大语言模型应用开发实战-课件 第1-4章 LangChain与智能应用开发概述 -高级应用开发_第3页
LangChain与大语言模型应用开发实战-课件 第1-4章 LangChain与智能应用开发概述 -高级应用开发_第4页
LangChain与大语言模型应用开发实战-课件 第1-4章 LangChain与智能应用开发概述 -高级应用开发_第5页
已阅读5页,还剩139页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LangChain与大语言模型应用开发实战第一章:LangChain与智能应用开发概述讲师:XXX|日期:XXX年XX月课程导入:技术的温度危机时刻:海量求救与翻译困境2023年2月,土耳其与叙利亚边境发生7.8级强震。海量混杂方言、多语言的碎片化求救信息涌入社交媒体,传统翻译工具无法处理复杂语境,导致救援效率严重受阻。破局:PolyglotRescueAI系统伊斯坦布尔科技大学学生团队利用LangChain快速构建了解决方案,结合GPT-3.5Turbo的强大语义理解能力与地理信息系统(GIS),精准解析求救内容与位置。成果:与时间赛跑的生命救援•系统上线72小时内高效处理了23.8万条碎片化信息。

•精准定位加济安泰普市坍塌点,协助成功救出42名幸存者。这个案例证明了,技术不应该是冰冷的代码堆砌,而可以是拯救生命的有力武器。

今天,我们将一起探索赋予技术这种“温度”的强大工具——LangChain。本章教学目标01了解概念•了解大语言模型(LLM)的基本概念和发展历程,建立技术认知基础。•理解LangChain是什么,以及它在连接LLM与实际应用开发中的核心价值。02掌握方法•掌握LangChain的基本架构和四大核心组件:Models,Chains,Agents,Memory。•理解如何利用LangChain将LLM与外部知识库、API等工具无缝集成。03理解核心•理解如何有效设计提示词模板(PromptEngineering),提升回答质量。•掌握对话上下文记忆(Memory)的管理方法,实现连贯的交互体验。•理解如何优化模型与外部数据的交互逻辑,构建更智能的应用。什么是大语言模型(LLM)?▍核心定义大语言模型(LargeLanguageModel,LLM)是一种基于深度学习的自然语言处理技术。它通过在海量文本数据上进行训练,能够理解、生成和推理人类语言,是当前人工智能领域的核心技术之一。参数规模庞大模型内部包含数亿至数千亿个参数,海量参数赋予了模型强大的知识储备和逻辑推理能力。通用性极强无需针对特定任务微调,一个模型即可灵活处理问答、翻译、写作、代码编写等多种复杂任务。上下文理解能力能够捕捉长文本中的复杂语义关联,精准理解对话中的上下文逻辑,实现像人一样的自然交流。交互逻辑:输入提示词(Prompt)➜模型计算与推理➜生成答案(Response)我们通过输入指令或问题,引导模型在庞大的知识库中进行检索、推理和生成,最终得到满足需求的文本回答。LLM发展历史时间线(一):从规则到统计基于规则的方法1950s-1980s·早期探索💡代表:乔治敦大学与IBM的机器翻译实验,开启机器翻译先河。🔧核心原理:由语言学家人工编写大量的语言转换规则,进行翻译与处理。⚠️局限性:规则繁琐,只能处理简单句式,难以应对复杂语义与长文本。统计语言模型(n-gram)1990s-2000s·数据驱动💡代表:早期中文输入法“智能ABC”,是大众接触的统计模型典型应用。🔧核心原理:基于大规模文本语料库,通过计算词频与词语序列概率,预测下一个最可能出现的词。⚠️局限性:缺乏对语义的深层理解,预测能力受限于固定长度的上下文窗口。神经网络语言模型(NNLM)2000s-2010·深度学习初现💡代表:YoshuaBengio团队发表的《ANeuralProbabilisticLanguageModel》。🔧核心原理:开创性地使用神经网络来学习词语的分布式表示(词向量),并建模词语间的概率关系。⚠️局限性:受限于当时的算力和数据量,模型规模较小,实际应用效果受限。LLM发展历史时间线(二):深度学习崛起第二阶段:深度学习崛起(2010–2017)词向量(Word2Vec)📌代表:Google发布的Word2Vec模型。🧠核心原理:将词语映射到高维向量空间,语义相似的词在空间中距离更近。✨经典示例:“国王”-“男人”+“女人”≈“女王”。🚀深远影响:搜索引擎开始能理解“笔记本电脑”和“手提电脑”等同义词,实现语义检索。循环神经网络(RNN/LSTM)📌生活代表:iPhone输入法的自动联想、语音识别。🧠核心原理:引入循环结构,专门处理序列数据,能够捕捉一定的上下文信息。⚠️技术局限:存在梯度消失或爆炸问题,难以捕捉长距离依赖关系。💡后续发展:LSTM与GRU的出现缓解了部分问题,但依然受限于上下文长度。LLM发展历史时间线(三):Transformer革命第三阶段:Transformer架构与预训练浪潮(2017–2020)Transformer架构的诞生(2017)来源:Google论文《AttentionIsAllYouNeed》彻底改变了NLP。核心突破:引入自注意力机制(Self-Attention),实现并行计算,解决了RNN长文本依赖与效率瓶颈。里程碑式模型爆发•2018年:GPT-1开启生成式预训练;BERT刷新理解类任务SOTA。•2020年:OpenAI发布GPT-3(1750亿参数),展现惊人的“零样本/少样本”学习能力,预示通用AI曙光。LLM发展历史时间线(四):多模态与专用化第四阶段:多模态与专用化(2021–2023)多模态大模型:感官融合核心能力:打破单一文本限制,融合视觉、听觉等多模态信息,实现“看、听、说、想”一体化理解与生成。📌示例:GPT-4可直接分析肺部CT影像,并结合患者主诉生成专业的诊断分析报告。垂直领域专用模型:深度赋能发展趋势:从“通用”走向“专业”。针对法律、医疗、金融等特定行业数据进行微调,精准解决行业痛点。📌示例:法律AI工具LawGPT,学习海量判例与法规,合同条款风险分析准确率高达92%。架构演进与性能提升图:Transformer架构在处理长文本与多任务时相比传统模型的优势示意LLM相关专业术语Token(词元)定义:语言模型处理文本的基本单位,可以是一个单词、一个子词或一个标点符号。作用:Token的数量直接关系到API调用的成本和模型的计算效率。微调(Fine-tuning)定义:在一个已经预训练好的通用大模型基础上,使用特定领域或任务的数据进行进一步训练。目的:让模型适应特定需求,在特定任务上表现更优。提示词(Prompt)定义:用户输入给模型的指令、问题或上下文,用于引导模型生成特定类型的输出。重要性:设计高质量的提示词是优化模型输出的关键。上下文窗口(ContextWindow)定义:模型在处理任务时能够“记住”和利用的前文信息的最大范围。影响:窗口越大,模型能处理的文本越长,但计算成本也越高。什么是LangChain?01/定义DefinitionLangChain是一个用于开发由大型语言模型(LLMs)驱动的应用程序的框架。它提供了一系列工具、组件和接口,旨在简化构建复杂LLM应用的过程,降低开发门槛与成本。02/核心使命CoreMission连接Connect打通LLM与外部数据源(数据库、API、本地文件等)的壁垒编排Orchestrate将多个LLM调用与工具调用组织成连贯、可解释的工作流扩展Extend赋予模型记忆、推理和工具使用能力,突破原生模型局限03/LangChain生态系统EcosystemLangChain不仅是一个库,更是一个不断壮大的生态:

•核心库:提供基础组件与抽象接口。

•集成工具:支持市面上主流的LLM、向量数据库与API服务。

•应用与平台:包含LangGraph(用于构建多智能体工作流)和LangSmith(调试与监控平台),为开发、部署与迭代提供全流程支持。LangChain的核心价值与重要性(一)模块化设计:降低门槛,提升复用效率Models(模型层)统一抽象各种LLM接口,切换不同模型只需修改参数配置,实现“即插即用”。Chains(链逻辑)将多步任务封装为可复用的逻辑单元,简化复杂流程开发,避免重复造轮子。Agents(智能体)赋予LLM自主决策能力,能根据任务需求自动选择并调用外部工具完成复杂任务。Memory(记忆模块)内置多种记忆组件,轻松管理和存储历史对话,实现流畅的多轮对话体验。上下文管理:增强交互与长文本能力突破上下文窗口限制·短期记忆利用ConversationBufferMemory等组件,有效存储和引用当前对话历史,避免模型“健忘”。知识持久化·长期记忆无缝集成向量数据库,将海量外部知识库转化为可检索的长期记忆,支持长文本知识问答。资源智能分配·动态窗口优化通过ConversationTokenBufferMemory等机制智能截断历史,在有限的Token中保留最关键信息。LangChain的核心价值与重要性(二)03/工具集成打破模型边界,连接现实世界⚡预置工具库:内置50多种常用工具(搜索、计算、SQL查询等),一键加载即可使用。🛠️自定义工具:通过简单封装,快速将企业私有API、内部服务转化为大模型可调用的功能。🤖智能代理:基于任务目标,模型能自主判断并动态组合最合适的工具链来完成复杂任务。04/提示词工程系统化优化模型输出,提升可控性与质量📑模板化设计:提供PromptTemplate机制,支持变量注入和格式校验,彻底避免手动拼接提示词的易错性。📚少样本学习(Few-shot):支持在提示词中嵌入高质量示例,引导模型在少数据场景下也能表现出色。🔄动态优化:结合记忆模块,自动生成包含历史对话与上下文信息的提示词,实现连贯的长对话。LangChain的核心价值与重要性(三)05工程化能力支撑从开发到生产的全周期管理调试与监控(LangSmith)提供可视化日志,追踪每一步调用,快速定位问题,让开发过程更透明可控。性能优化与成本控制支持异步调用、批量处理和智能缓存机制,显著提升响应速度,有效降低API调用成本。一键部署支持(LangServe)提供标准化的一键式API部署方案,大幅降低运维复杂度,加速应用从开发到上线。06生态整合构建开放协同的LLM应用生态活跃的社区驱动通过`langchain-community`模块集成了海量外部工具、数据源与模型,避免重复造轮子。完善的商业工具链LangGraph支持复杂的多智能体协作,LangChainCloud提供全托管服务,覆盖商业全场景。跨领域场景适配灵活组合领域特定提示词与工具,实现“一次开发,多场景复用”,大幅提升开发效率。原理解析:四大核心组件Models(模型层)对接各种语言模型(GPT-4,Claude等),提供统一抽象接口,屏蔽底层差异。fromlangchain_community.llmsimportOpenAI

llm=OpenAI(model_name="gpt-4",temperature=0.7)Chains(链式流程)将“提示词构造、模型调用、结果解析”等多个独立步骤串联,形成可复用的逻辑单元。fromlangchain.chainsimportLLMChain,SimpleSequentialChain

chain1=LLMChain(llm=llm,prompt=prompt1)

overall_chain=SimpleSequentialChain(chains=[chain1,chain2])Agents(智能代理)赋予LLM自主规划和决策能力,根据任务动态选择工具并调用,解决复杂问题。fromlangchain.agentsimportinitialize_agent,load_tools

tools=load_tools(["llm-math"],llm=llm)

agent=initialize_agent(tools,llm,agent="zero-shot-react")Memory(记忆管理)维护并管理对话历史或任务上下文,让模型拥有“记忆”,实现连续多轮交互。fromlangchain.memoryimportConversationBufferMemory

memory=ConversationBufferMemory()

memory.save_context({"input":"你好"},{"output":"有什么可以帮助您?"})原理解析:链式执行流程01.输入解析InputParsing将用户输入转换为结构化数据,使用PromptTemplate动态生成包含上下文的提示词。frommptsimportPromptTemplate

prompt=PromptTemplate.from_template("解释{concept}的原理")

formatted=prompt.format(concept="量子计算")02.工具调用ToolExecution根据任务需求,智能代理(Agent)自主决定是否调用外部工具以获取实时或专业信息。fromlangchain.toolsimportTool

defsearch_api(q):return"搜索结果..."

tool=Tool(name="Search",func=search_api,desc="查询数据")03.模型推理ModelInference将格式化的提示词与工具返回的结果整合,输入大语言模型(LLM)进行综合推理与生成。#整合上下文,调用模型

response=llm.invoke(formatted_prompt)传统开发模式手动编写代码进行流程编排,逻辑分散且维护成本高;上下文状态与记忆管理复杂,容易出错。LangChain链式开发通过组件化、模块化的方式封装流程,内置记忆机制与丰富的工具集成,极大降低了LLM应用的开发门槛与复杂度。应用场景一:智能客服与问答系统场景描述企业需要构建一个智能客服系统,全天候自动回答客户关于产品特性、售后服务流程或订单物流状态等高频、重复性的常见问题,从而释放人力资源,专注解决更复杂的问题。核心需求✅精准理解用户自然语言问题中的真实意图|✅基于企业私有知识库进行准确回复

✅支持上下文记忆,流畅进行多轮对话交互|✅知识边界感:不足时自动搜索或无缝转接人工实现思路(基于LangChain框架)1.设计专业提示词模板规范对话风格2.初始化GPT-3.5/4等大语言模型

3.集成ConversationBufferMemory实现对话记忆4.接入搜索API以补充外部知识

5.配置Agent智能代理,决策调用内部知识库或外部搜索工具智能客服系统代码解析(一):导入库与设置提示词模板Python/app.py#导入构建对话系统的核心组件fromlangchain.chainsimportConversationChainfromlangchain.memoryimportConversationBufferMemoryfrommptsimportPromptTemplatefromlangchain.llmsimportOpenAI#1.定义客服的角色与回答规则template="""你是一个专业的电商平台客服助手,回答需简洁且友好。上下文:{history}客户问题:{input}如果不知道答案,请说“我需要咨询同事后回复您”。"""prompt=PromptTemplate(input_variables=["history","input"],template=template)💡核心代码解析导入核心依赖库引入LangChain生态中的链(Chain)、记忆(Memory)、提示词(Prompt)等模块,构建对话系统的基石。定义角色提示词模板明确AI的定位是“电商客服”,规定回答风格需“专业且友好”,以此统一回答的语气和标准。动态变量与安全兜底利用{history}和{input}动态注入上下文;设置明确的兜底话术,防止AI编造不存在的信息,确保回复的准确性与安全性。智能客服系统代码解析(二):初始化模型、记忆与创建对话链#2.初始化语言模型llm=OpenAI(model_name="gpt-3.5-turbo",temperature=0.7)#3.设置对话记忆模块memory=ConversationBufferMemory(return_messages=True)#4.创建对话链conversation=ConversationChain(llm=llm,prompt=prompt,memory=memory,verbose=True)初始化语言模型实例化OpenAI的GPT-3.5模型,其中参数`temperature=0.7`是在回答的“创造性”与“准确性”之间取得平衡的关键设置。设置对话记忆创建一个`ConversationBufferMemory`缓冲区,用于在多轮对话中实时保存历史上下文,让模型“记得”之前聊过的内容。组装对话链将语言模型、提示词模板和记忆模块进行“组装”。开启`verbose=True`可在运行时输出详细日志,便于排查问题和调试。智能客服系统代码解析(三):集成外部工具与创建智能代理#5.集成外部知识库/搜索APIsearch=GoogleSearchAPIWrapper()tools=[Tool(name="GoogleSearch",func=search.run,description="当需要查询最新的产品信息或政策时使用")]#6.创建带工具的智能代理agent=initialize_agent(tools,llm,agent="conversational-react-description",memory=memory,verbose=True)初始化外部工具代码中使用GoogleSearchAPIWrapper()初始化了搜索工具。这让智能代理具备了联网获取最新信息的能力,解决了LLM知识截止日期的限制。封装并描述工具通过Tool对象将搜索功能封装,并提供清晰的description。这是Agent理解何时以及如何调用工具的关键“说明书”。构建完整的智能代理使用initialize_agent将语言模型、记忆系统与工具集合组装在一起。conversational-react-description类型赋予了它处理对话上下文并自主决定是否调用工具的能力。智能客服系统代码解析(四):核心对话逻辑与测试#7.示例对话函数,串联逻辑与工具defcustomer_service_chat(user_input):try:#1.尝试使用基础大模型对话链回答response=conversation.predict(input=user_input)#2.触发条件:无法回答时,调用搜索代理if"需要咨询"inresponseor"不知道"inresponse:print("尝试通过外部搜索获取答案...")response=agent.run(user_input)returnresponseexceptExceptionase:return"抱歉,系统暂时无法处理您的请求..."#8.测试对话,覆盖不同场景queries=["订单12345状态?","新款手机何时上市?"]forqinqueries:print(f"客服:{customer_service_chat(q)}")混合对话策略优先使用基础对话链以保证响应速度。当检测到“不知道”或“需要咨询”等关键词时,才动态升级调用智能代理进行联网搜索,平衡效率与准确度。系统健壮性保障引入标准的try-except异常处理机制。无论发生API调用错误、网络问题还是逻辑异常,都能捕获并返回友好的提示语,防止系统崩溃。覆盖式场景测试测试用例涵盖了内部知识库(订单状态查询)和外部实时信息(产品上市时间)两种典型场景,验证系统在不同情况下的正确路由能力。应用场景二:多语言翻译与本地化场景描述跨国企业或国际组织需将内部文档、客户沟通内容实时翻译成多种语言。痛点:在紧急救援、国际会议等高频沟通场景中,需快速处理混杂方言、俚语、行业黑话的碎片化信息,传统翻译工具往往难以兼顾效率与准确度。核心需求01.语境理解:不只是逐字翻译,需结合上下文实现“信、达、雅”的高精度转换。02.覆盖广泛:支持全球主流语言及特定地区方言、行业专业术语。03.关键聚焦:在处理紧急信息时,能自动识别并优先保证位置、人数、伤情等关键信息的准确传达。实现思路1.模型初始化:

选择具备优秀多语言能力的Chat模型作为翻译底座。2.提示词工程:

设计标准化提示词,明确翻译的风格、专业领域及对俚语/方言的处理规则。3.模式化应对:

预设“普通商务”与“紧急救援”等不同模式,在紧急模式下自动触发关键信息提取逻辑。4.效率优化:

对接文档解析工具,实现对整份PDF/Word文档的批量翻译与格式保留。多语言翻译系统代码解析translator.pyfromlangchain.chat_modelsimportChatOpenAIfromlangchain.schemaimportHumanMessage,SystemMessageimportconcurrent.futuresclassSimpleTranslator:def__init__(self,api_key:str):self.model=ChatOpenAI(openai_api_key=api_key,model_name="gpt-3.5-turbo",temperature=0.3)deftranslate(self,text:str,src:str,tgt:str,is_emergency:bool=False):ifis_emergency:#优先传达求救、位置等关键信息prompt=f"紧急翻译{src}->{tgt}:确保关键信息100%准确,只输出翻译结果"else:prompt=f"将{src}翻译成{tgt},保持原意准确,表达自然流畅。"defbatch_translate(self,texts,src,tgt):withconcurrent.futures.ThreadPoolExecutor()ase:futures=[e.submit(self.translate,t,src,tgt)fortintexts]return[f.result()forfinfutures]本章小结大语言模型(LLM)•基于深度学习、参数规模庞大、通用性强的语言处理技术,是当前AI应用的核心基座。•经历了从传统统计模型到Transformer架构的革命性技术演变。LangChain开发框架•核心价值:连接·编排·扩展,解决LLM应用开发中的复杂性。•通过Models,Chains,Agents,Memory等模块化组件降低开发门槛,提高复用性。•提供强大的上下文管理、外部工具集成及提示词工程能力。典型应用场景•智能客服系统:结合知识库与记忆功能,实现个性化、上下文感知的对话交互体验。•多语言翻译工具:利用框架的编排能力,快速实现高质量、高并发的文档与实时对话翻译。本章习题与讨论01.实践对比尝试分别用原生API和LangChain实现同一个简单功能(如天气查询机器人),对比两者的代码量、开发时间和复杂度。02.模块化设计分组设计一个模块化应用(如学术论文助手),要求至少集成2个外部API,体会组件化开发的优势。03.安全与伦理结合LangChain的“开放生态”特性,探讨可能存在的数据隐私风险、Prompt注入风险及对应的防护方案。04.创意应用发挥想象力,尝试用LangChain搭建一个“校园食堂点评机器人”,结合记忆功能和检索功能优化用户体验。05.RAG技术应用找一篇本行业的分析报告,尝试用RAG技术精准提取其中的关键风险事件,并让模型生成对应的业务应对方案。06.深度思考结合当前对话系统的局限性,讨论“AI心理咨询师是否应该完全替代人类医生”,并思考未来的人机协作模式。Q&A感谢观看THANKYOUFORWATCHINGLangChain与大语言模型应用开发实战第二章:开发环境搭建讲师:XXX日期:XXX年XXX月课堂导入:为什么需要LangChain?大语言模型的局限❌无记忆:对话“断片”,无法关联上下文信息。❌无手脚:如同“缸中之脑”,无法访问本地文档、数据库,也不能联网查天气、分析Excel。💡结论:大模型空有“聪明大脑”,却缺“记忆”与“执行力”。LangChain的核心价值🌉连接桥梁:打通大模型与外部世界的通路,让AI走出“孤岛”。🧠赋予超能力:赋予模型“长记忆”、“工具使用”和“复杂逻辑推理”能力。✅典型应用:上下文智能客服·文档自动分析助手·自动化运维Agent·企业知识库问答系统🎯本章目标:快速搭建LangChain开发环境,掌握基础组件,为后续实战打下坚实基础。本章教学目标掌握|Python环境配置熟练掌握Python开发环境的基础配置方法,为后续开发打下坚实基础。熟悉|LangChain核心库安装完成核心库安装并掌握处理版本冲突、依赖兼容性等常见技术问题的方法。掌握|大模型API对接学习对接DeepSeek、文心一言等主流大语言模型API的方法与流程。学会|API管理与优化掌握API密钥安全管理、请求限流策略配置及响应缓存机制,提升开发安全性与效率。掌握|Jupyter实战环境搭建搭建包含代码自动补全、可视化调试功能的JupyterNotebook开发环境。故障排查识别并解决环境配置中的常见报错。实战巩固完成渐进式任务,内化知识。环境准备:硬件与软件要求硬件要求CPU处理器:4核及以上,推荐8核,以保障大模型推理性能。运行内存:8GB及以上。若需本地部署大模型,建议16GB+。存储空间:至少预留10GB空间。推荐使用SSD以加速依赖包下载。网络环境:稳定的网络连接,用于下载安装包及连接云端服务。软件依赖Python环境(v3.12+)主流AI框架支持的版本,LangChain官方推荐3.8以上版本。pip包管理器(v25.0.1+)Python标准的包管理工具,用于快速安装LangChain等依赖库。代码编辑器(IDE)推荐使用VSCode或PyCharm(社区版免费),均支持丰富的Python插件。Python安装步骤(1/2)01下载安装包•访问官网下载最新版本:/downloads/•选择Python3.12版本的安装包进行下载•根据你的操作系统,选择对应版本(如Windowsx86-64)02运行安装程序•找到下载好的.exe文件并双击运行。•关键操作:请务必勾选“AddPython3.12toPATH”选项,否则后续无法在终端直接使用Python。•建议点击“Customizeinstallation”进行自定义安装,方便管理。Python安装步骤(2/2)03.自定义安装选项1.可选功能(OptionalFeatures):保持默认配置即可,直接点击“Next”。2.高级选项(AdvancedOptions):建议勾选“AddPythontoPATH”。可自定义安装路径,如F:\Python12\。3.开始安装:确认无误后,点击“Install”按钮开始安装,等待进度条走完。04.验证安装结果如何验证?•打开电脑的命令提示符(CMD)或PowerShell。•输入命令python--version,若能显示版本号(如3.12.x),则说明安装成功。•再输入pip--version验证包管理工具。为什么需要虚拟环境?核心痛点:依赖冲突在同一个全局环境中开发多个项目时,往往会遇到不同项目对同一软件包有不同版本的需求。若不进行有效隔离,很容易出现“版本打架”的问题,导致代码无法正常运行。场景举例:版本矛盾•项目A:需要依赖LangChain0.3版本

•项目B:依赖旧版LangChain0.2版本

•后果:如果直接全局安装,必然导致其中一个项目因版本不兼容而崩溃。解决方案:环境隔离为每一个项目创建独立的“虚拟环境”。它就像一个独立的沙箱,将项目的依赖包完全隔离开,互不干扰,保证开发环境的纯净和稳定。虚拟环境的创建与管理💻操作环境:Windows系统|使用CMD命令行工具01.创建虚拟环境•切换目录:cdDesktop(定位到工作目录,可自定义)•创建命令:python-mvenvlangchain-env"langchain-env"是自定义的虚拟环境名称02.激活虚拟环境•执行激活:langchain-env\Scripts\activate•成功标志:命令行头部出现(langchain-env)标识03.退出虚拟环境完成操作后,执行命令即可退出退出命令:deactivate重要提示:后续所有依赖库安装、代码运行等操作,都必须确保在已激活的虚拟环境中进行,避免影响系统全局环境。升级pip与安装LangChain核心包01/升级pip版本确保虚拟环境已激活,避免因版本过低导致后续依赖包安装失败。pipinstall--upgradepip02/安装LangChain核心包LangChain核心功能库,构建LLM应用的基石。建议安装指定版本以确保稳定性。pipinstalllangchain==0.3.2103/安装社区适配库包含众多第三方厂商的适配器,支持连接各种模型、向量数据库与工具。pipinstalllangchain-community安装主流大模型API适配库01/接入文心一言pipinstallerniebot安装百度官方提供的PythonSDK,

实现对文心一言模型的便捷调用。02/接入通义千问pipinstalldashscope安装阿里云官方提供的SDK,

支持通义千问全系列模型的接入。03/接入DeepSeek无需单独安装SDKAPI接口兼容OpenAI格式,

确保系统已安装`requests`库即可。环境验证与测试核心目标:确认LangChain库可正常导入调用,并验证基础功能(提示模板)运行无误,确保开发环境就绪。1.打开代码编辑器(VSCode),新建一个Python文件(例如test_langchain.py)。

2.复制粘贴以下代码并保存,运行该文件以完成环境验证。#导入核心模块并验证版本号

fromlangchainimport__version__

print("LangChain版本:",__version__)

#测试基础功能:提示模板(PromptTemplate)

fromlangchain_mptsimportPromptTemplate

prompt=PromptTemplate(input_variables=["name"],template="你好,{name}!LangChain安装测试成功~")

result=prompt.format(name="同学")

print(result)📋预期运行结果如果你的控制台输出与上图一致,

说明开发环境已成功搭建!🎉

现在可以开始探索LangChain的强大功能了。常见问题与解决方案ModuleNotFoundError:Nomodulenamed'langchain'原因:开发环境中未成功安装LangChain库。解决:请确认已激活虚拟环境,再执行安装命令:pipinstalllangchainPython版本不兼容报错原因:当前使用的Python版本低于3.8,不满足LangChain的最低运行要求。解决:将Python升级至3.8及以上版本后,重新安装LangChain。代码运行时提示“导入模块失败”原因:当前终端未激活已配置好的虚拟环境,无法找到对应依赖包。解决:检查命令行前是否有(langchain-env)标识,若没有,先激活虚拟环境。pip安装时网络超时/报错原因:网络连接不稳定,或默认的PyPI官方源访问速度较慢。解决:临时或永久切换为国内的PyPI镜像源,如阿里云、腾讯云或清华源。实战案例一:接入文心一言准备工作01.安装依赖库pipinstallopenai02.获取凭证访问百度智能云千帆大模型平台,完成实名认证后,创建应用并获取专属的APIKey。fromopenaiimportOpenAIclient=OpenAI(base_url='/v2',api_key='你的API_Key')resp=pletions.create(model="ernie-4.5-turbo-128k",messages=[{"role":"user","content":"您好"}])print(resp.choices[0].message.content)接口调用响应成功获取大模型返回的结构化数据,包含回答内容、token消耗等信息。实战案例二:接入智谱清言前期准备•安装依赖:执行pipinstalllangchain_communitylangchain•密钥获取:前往智谱清言官网完成注册并申请APIKeyPython代码示例(test_zhipu.py)fromlangchain_community.chat_modelsimportChatOpenAI

fromlangchain.schemaimportHumanMessage,SystemMessage

llm=ChatOpenAI(

temperature=0.7,#控制回答的随机性

model="glm-5",#指定智谱清言模型

openai_api_key="你的API_Key",

openai_api_base="/api/paas/v4/"

)

messages=[SystemMessage("你是一个有用的AI助手"),

HumanMessage("请介绍一下人工智能的发展历程")]

response=llm(messages)

print(response.content)实现逻辑解析1.适配器模式:复用`ChatOpenAI`类,通过修改`openai_api_base`适配智谱接口。

2.上下文构建:封装`SystemMessage`定义AI人设,`HumanMessage`传递用户问题。

3.统一调用:通过统一接口调用不同厂商模型,实现代码层的“一次编写,多处运行”。实战案例三:接入通义千问准备工作•安装依赖:在终端执行pipinstallopenai安装SDK。•获取凭证:访问阿里云DashScope控制台,创建并复制您的APIKey。核心代码(test_qianwen.py)fromopenaiimportOpenAI;client=OpenAI(api_key="YOUR_KEY",base_url="/compatible-mode/v1")resp=pletions.create(model="qwen-plus",messages=[{"role":"user","content":"你是谁?"}])API调用返回结果示例本章小结环境搭建从零开始,完成了Python解释器、虚拟环境的安装与配置,为后续开发打下坚实基础。核心库安装成功安装了LangChain核心库及主流大模型的适配库,建立起连接AI模型与应用逻辑的桥梁。环境验证通过代码示例快速验证了环境配置的正确性,确保开发工具链能正常协同工作。API对接实现了与文心一言、智谱清言、通义千问等大模型的无缝对接,打通从环境搭建到实际调用的完整闭环。本章习题01简述题在Python开发中创建虚拟环境的主要目的是什么?假设你已在Windows系统下创建了一个名为`langchain-env`的虚拟环境,请写出激活该虚拟环境的完整命令。02代码题在完成LangChain核心库及`langchain-community`的安装后,如何通过编写简单的Python代码来验证环境是否搭建成功?请写出验证LangChain版本号的核心代码片段。03填空题请列举在接入文心一言、智谱清言或通义千问时,除了配置`api_key`外,还需要修改哪两个关键参数才能将请求正确发送到对应平台的服务器?(提示:通常包含模型名称与基础URL)Q&A感谢观看THANKSFORWATCHINGLangChain与大语言模型应用开发实战第三章:基础应用开发讲师:XXX|XXX年X月开篇引言:解锁LangChain的无限可能想象一下,你想构建一个智能客服机器人。它需要满足四个关键需求,而这正好对应了本章要学习的四大核心模块:01.模型调用(ModelI/O)调用大语言模型(LLM)来理解用户的复杂问题,并生成准确、自然的回答。02.提示模板(PromptTemplates)根据用户的具体问题动态调整提示词,提供针对性的引导,让模型输出更可控。03.链式调用(Chains)将多个独立任务串联起来,比如先查询数据库订单状态,再结合结果给出建议。04.对话记忆(Memory)在多轮对话中持久化并引用历史信息,理解上下文,让交互体验更连贯自然。本章教学目标理解LangChain的四大核心模块深入理解模型、提示、链、记忆模块的底层逻辑与协作方式。掌握模型的统一调用接口学会使用统一标准,灵活调用LLMs、ChatModels及EmbeddingModels。熟练运用动态提示模板技术使用PromptTemplate与ChatPromptTemplate精准控制并引导模型输出。学会任务的链式调用组合通过LLMChain与SequentialChain将多个简单任务串联成复杂的AI工作流。实现具备上下文感知的对话系统利用Memory模块管理对话历史,让AI具备长期记忆和多轮对话能力。具备基础LLM应用独立开发能力能够针对不同的业务场景,自主选择合适的组件与策略,落地完整的AI应用。PART01模型调用基础接口ModelI/O1.1引言:为什么需要统一的模型接口?开发痛点📚学习成本高

每个模型厂商都有自己的API规范,需要重复学习不同的调用方法、参数定义与响应格式。🔧代码复用性差

更换底层模型意味着大量的代码重构,无法快速复用之前的开发逻辑。🛠️系统维护困难

业务代码与具体模型的API细节深度耦合,导致后期维护成本高昂,难以扩展。LangChain的方案提供统一的抽象接口屏蔽底层不同模型厂商的差异,为开发者提供一致的开发体验。只需学习一次接口标准,即可无缝切换调用OpenAI、Anthropic、Google等任意模型,大幅降低开发门槛与维护成本。三大核心抽象🖥️LLM(大语言模型接口)

用于与纯文本生成模型进行交互,处理补全任务。💬ChatModel(对话模型接口)

专门为聊天机器人场景设计,基于“消息”列表进行交互。🧠Embeddings(嵌入模型接口)

用于将文本转换为数值向量,是实现检索增强生成(RAG)的基础。1.2三大核心接口概览:LLMLLM(LargeLanguageModel)·语言模型核心用途适用于通用的自然语言生成任务,例如文章续写、摘要总结、多语言翻译、聊天对话等场景。输入与输出输入:一段文本字符串(Prompt/提示词)

输出:一段文本字符串(Completion/补全)典型模型•OpenAI:text-davinci-003

•HuggingFace:GPT2,LLaMA,Mistral系列UserInput用户输入(TextString)LLMModel模型推理与计算ModelOutput模型输出(Completion)1.2三大核心接口概览:ChatModelChatModel(对话模型)核心用途专为多轮对话场景设计,能够基于历史对话信息更好地理解上下文逻辑,维持对话的连贯性。输入规范(Input)输入为结构化的消息列表List[BaseMessage],每个消息包含role(system/user/assistant)与content字段。输出格式(Output)返回一个标准的AIMessage对象,其核心content字段即包含模型生成的自然语言回复内容。典型代表模型OpenAI的gpt-3.5-turbo、gpt-4系列模型;以及Anthropic的Claude系列对话模型等。UserInput(MessageList)➜ChatModel处理上下文➜ModelOutput(AIMessage)1.2三大核心接口概览:EmbeddingsEmbeddings(文本嵌入模型):从“文字”到“数字”的语义翻译官⚡核心工作流程输入文本

Text(String)Embedding模型

语义编码向量输出

Vector(Float)注:转换后的向量可用于计算“语义相似度”与“检索”主要用途:将非结构化文本转换为高维向量,广泛应用于语义搜索、文本相似度计算、文档聚类等任务,是实现RAG(检索增强生成)的基石。输入与输出:输入:任意自然语言字符串;输出:一组代表语义特征的浮点型数值列表。典型模型:•OpenAI:text-embedding-ada-002(平衡性价比)

•SentenceTransformers:all-MiniLM-L6-v2(轻量开源)1.3LLM接口实战:代码示例PythonImplementation(LangChain+OpenAI)#1.导入必要的库并初始化模型(设置温度和最大Token数)

fromlangchain.llmsimportOpenAIfrommptsimportPromptTemplate

llm=OpenAI(model_name="text-davinci-003",temperature=0.7,max_tokens=150)

#2.定义提示词模板,使用占位符动态生成内容

prompt=PromptTemplate(

input_variables=["topic"],

template="请围绕{topic}写一段约100字的通俗介绍。"

).format(topic="人工智能")

#3.核心:一行代码调用LLM并处理输出

response=llm(prompt)

print("模型的输出:",response.strip())1.3LLM接口实战:代码解析01.初始化模型`OpenAI()`类是LangChain对OpenAIAPI的封装。我们可以在初始化时,灵活指定使用的模型名称、控制生成随机性的`temperature`参数以及限制输出长度的`max_tokens`参数。02.提示模板(PromptTemplate)利用`PromptTemplate`可以轻松实现提示词的动态生成,避免了手动拼接字符串的繁琐操作,不仅让代码逻辑更清晰,也大大降低了后期维护和修改提示词的成本。03.调用模型API调用过程非常直观。完成初始化和提示词构建后,直接通过`llm(prompt)`的函数调用方式,即可向大模型发起请求并同步获取文本输出。04.处理响应结果接口返回的响应通常是一个结构清晰的纯字符串对象。我们可以直接将其展示给用户,或者根据业务需求,对其进行解析、格式化或进一步的逻辑处理。1.4`ChatModel`接口实战:代码示例Python代码演示:基于消息列表的连续对话逻辑#1.导入核心库与消息类定义fromlangchain.chat_modelsimportChatOpenAIfromlangchain.schemaimportHumanMessage,SystemMessage,AIMessage#2.初始化模型与构建上下文消息列表chat=ChatOpenAI(model_name="gpt-3.5-turbo",temperature=0.5)history=[SystemMessage(content="你是一位简洁准确的知识助手。"),HumanMessage(content="什么是量子计算?")]#3.循环对话:追加消息以保持上下文history.append(chat(history))#接收回答并加入历史history.append(HumanMessage(content="它和经典计算有什么本质区别?"))print("FinalAnswer:"+chat(history).content)1.4ChatModel接口实战:代码解析01/初始化模型使用ChatOpenAI类来实例化模型对象,这是调用OpenAI对话模型(如GPT-4o)的核心入口,用于发起对话请求。02/消息列表(MessageList)对话以列表形式组织,每条消息都包含明确的角色(如system/user/assistant)。SystemMessage用于设定AI助手的角色定位与回答准则。03/上下文感知能力每一次API调用都会将完整的历史消息列表发送给模型,从而让模型理解多轮对话逻辑,准确识别代词(如“它”、“上文”)的指代内容。04/响应对象解析API返回的是一个结构化的AIMessage对象,其中.content属性存储了最终的文本回复,而其他属性包含了token消耗等元数据。1.5Embeddings接口实战:代码示例#导入必要的库fromlangchain.embeddingsimportOpenAIEmbeddingsimportnumpyasnpfromscipy.spatial.distanceimportcosine#1.初始化Embedding模型embeddings=OpenAIEmbeddings(model="text-embedding-ada-002")#2.定义待比较的文本&3.获取文本向量v1=embeddings.embed_query("猫喜欢吃鱼");v2=embeddings.embed_query("狗喜欢啃骨头")v3=embeddings.embed_query("小猫爱吃鱼")#4.计算余弦相似度并输出sim_12=1-cosine(v1,v2);sim_13=1-cosine(v1,v3)print(f"猫vs狗:{sim_12:.4f}|猫vs小猫:{sim_13:.4f}")1.5Embeddings接口实战:代码解析01.初始化模型使用OpenAIEmbeddings类实例化客户端,作为调用OpenAI嵌入模型的入口。提示:确保在环境变量中正确配置APIKey,以建立连接。02.获取向量将文本转化为高维向量是核心步骤:•单条查询:embed_query()方法

•批量文档:embed_documents()方法03.计算相似度利用余弦相似度算法,计算向量夹角,从而量化文本的语义相似性。案例:"猫喜欢吃鱼"与"小猫爱吃鱼"的相似度远高于其与"今天天气不错"的相似度。1.6参数调优:控制模型的“性格”temperature(温度)💡核心作用控制模型生成内容的随机性与创造性,决定了模型的“发散”程度。📉低值(0.0-0.3)输出确定性强、更聚焦。适合事实问答、代码编写、专业文档等需要精准的任务。📈高值(0.7-1.0)输出更多样、更具想象力。适合头脑风暴、故事创作、文案创意等场景。max_tokens(长度限制)⚙️核心作用硬性限制模型生成的最大Token数量。Token可以理解为“单词块”或“字节”,直接决定了文本的篇幅长短。💰主要用途1.防止模型“话痨”,保证回答简洁聚焦。

2.避免生成超长文本,有效控制API调用成本。top_p(核采样)🎛️核心机制一种替代Temperature的随机性控制方法。它不改变概率分布,而是动态选择累计概率之和达到P的词汇子集进行采样。简单来说,就是“只从热门词汇里挑”。💡重要建议通常建议只调整temperature或top_p其中一个参数,同时调整两者可能会产生不可预知的效果。1.7错误处理与最佳实践重试机制(RetryMechanism)对于网络波动、服务暂时不可用等问题,配置合理的自动重试策略能有效提升系统稳定性。格式强制(FormatEnforcement)在提示词中明确指定输出格式(如JSON、XML或特定分隔符),确保模型返回结果可被程序正确解析。日志记录(Logging)完整记录每次调用的提示词、参数及响应,是排查故障、分析模型行为及优化提示词的基础。清晰提示使用明确、具体、结构化的指令引导模型输出符合预期的结果。参数优化针对任务类型,合理调整Temperature和MaxTokens等参数。错误处理实现重试逻辑和格式校验机制,构建高容错、高健壮性的应用。全链路日志详细记录关键节点的输入输出,便于事后复盘、调试和分析。测试驱动在大规模部署前,建立测试集,验证提示词与系统逻辑的有效性。第二部分动态提示模板设计PROMPTENGINEERING2.1引言:什么是提示工程?什么是提示工程?提示工程(PromptEngineering)是一门通过设计和优化输入(Prompt)来引导大语言模型(LLM)生成高质量、符合预期输出的艺术和科学。它是连接人类意图与AI能力的关键桥梁。为何需要动态模板?在真实场景中,输入和输出往往是多变的。例如翻译工具需要适配不同的文本内容和目标语言。如果将提示硬编码,会导致代码极度冗余、维护成本高昂且缺乏灵活性。LangChain解决方案LangChain提供了强大的`PromptTemplate`类,允许开发者预先定义包含变量的通用模板,在运行时根据实际需求动态填充变量,从而高效生成最终提示,极大提升了开发效率。2.2PromptTemplate实战:代码示例💻代码实现frommptsimportPromptTemplate#1.定义模板,包含两个变量product_template=PromptTemplate(input_variables=["product_name","feature"],template="请为{product_name}写一段{feature}功能的营销文案,生动且不超过50字。")#2.传入不同参数,生成不同提示词p1=product_template.format(product_name="智能音箱",feature="语音助手")p2=product_template.format(product_name="无线耳机",feature="主动降噪")📋输出结果Prompt1:请为一款名为智能音箱的产品,撰写一段关于其语音助手功能的营销文案,要求语言生动,不超过50字。Prompt2:请为一款名为无线耳机的产品,撰写一段关于其主动降噪功能的营销文案,要求语言生动,不超过50字。💡核心价值:通过定义模板和变量分离,我们只需要维护一份通用逻辑,即可快速扩展到不同的业务场景。2.2`PromptTemplate`实战:代码解析模板定义(Definition)•占位符:在模板字符串中,使用{product_name}与{feature}作为变量标记,明确待填充内容的位置。•变量声明:通过input_variables列表显式定义所有变量名称,确保模板结构严谨且可维护。模板格式化(Formatting)•参数注入:调用.format()方法并传入关键字参数,将具体的数值动态填充至模板的对应位置。•生成结果:自动将变量替换为真实内容,快速拼接并生成最终可直接发送给模型的提示词字符串。开发价值总结:通过分离“模板结构”与“具体数据”,我们实现了提示词逻辑的模块化设计。这种模式不仅提高了代码的复用性,更降低了维护成本,让开发人员能够专注于提示词逻辑本身,从而显著提升了LLM应用的开发与迭代效率。2.3`ChatPromptTemplate`实战:代码示例💻代码实现(Python)frommptsimportChatPromptTemplate#1.使用from_messages方法定义多轮对话模板chat_template=ChatPromptTemplate.from_messages([("system","你是一个专业的美食评论家,回答需富有文采。"),("human","请推荐一道适合夏天吃的{cuisine}菜。"),("ai","当然,我推荐的是经典的{recommendation}。"),("human","它的主要食材是什么?")])#2.填充变量并格式化生成对话列表messages=chat_template.format_messages(cuisine="中式",recommendation="凉拌黄瓜")📤运行输出结果system:你是一个专业的美食评论家,你的回答应该富有文采。human:请推荐一道适合夏天吃的中式菜。ai:当然,我推荐的是经典的凉拌黄瓜。human:它的主要食材是什么?2.3ChatPromptTemplate实战:代码解析结构化定义`from_messages`方法允许我们以一种非常直观的方式定义包含系统、用户、助手角色的对话流程,清晰界定每一轮交互的主体。变量填充`format_messages()`方法同样支持接收外部变量,并自动将其动态填充到模板的对应占位符位置,让对话模板灵活复用。直接使用模板生成的`messages`列表可以直接、无缝地传递给`ChatModel`进行推理调用,无需额外的数据格式转换。2.4高级技巧:少样本学习(Few-ShotLearning)少样本学习是一种强大的提示技巧,通过在提示中提供少量示例(Demo)来引导模型完成特定任务,尤其适用于复杂或未见过的任务场景。LangChain提供了专用的FewShotPromptTemplate工具,帮助开发者高效构建和管理这类提示。01定义示例准备与任务目标一致的高质量输入输出对。示例越贴合实际应用场景,模型生成的效果通常越好。这一步是引导模型理解任务的基础。02定义示例格式使用`PromptTemplate`来定义单个示例在最终提示中的展示方式。例如,明确输入字段和输出字段之间的分隔符或关键词,确保格式统一、清晰。03构建少样本模板组合定义好的示例列表、示例格式、引导语(Instruction)和最终的用户输入槽位。将它们封装成一个完整的`FewShotPromptTemplate`以便直接调用。2.4少样本学习实战:代码示例frommptsimportFewShotPromptTemplate,PromptTemplate#1.定义示例数据examples=[{"text":"这部电影太棒了!","sentiment":"正面"},{"text":"今天天气真差。","sentiment":"负面"},{"text":"会议延迟了,但达成了共识。","sentiment":"中性"}]#2.定义单条示例的格式化模板example_prompt=PromptTemplate(input_variables=["text","sentiment"],template="文本:{text}\n情感:{sentiment}\n")#3.组装少样本提示词并进行格式化prompt=FewShotPromptTemplate(examples=examples,example_prompt=example_prompt,prefix="请分析以下文本的情感倾向:",suffix="文本:{input}\n情感:").format(input="这款新手机的电池续航超出了我的预期。")2.4少样本学习实战:生成的提示📋任务指令与示例:请分析以下文本的情感倾向,只需回答「正面」、「负面」或「中性」。以下是一些例子:🗣️文本:这部电影太棒了!→情感:正面|🗣️文本:今天天气真差。→情感:负面🗣️文本:会议延迟了,但达成了共识。→情感:中性❓待分析:文本:这款新手机的电池续航超出了我的预期。情感:______💡核心原理:通过提供少量的任务范例,建立“输入-输出”的映射逻辑,我们可以有效引导模型学会如何完成它可能不熟悉的特定任务,而无需额外的模型微调。2.5高级技巧:LCEL(LangChainExpressionLanguage)什么是LCEL?LCEL是一种声明式语言,专门用于将LLM应用的各个独立组件组合成端到端的处理流程。它支持流式处理、异步操作以及多模态输入输出,并让代码结构更清晰、更具可维护性。prompt|model|output_parser使用管道符`|`串联组件,逻辑一目了然核心思想:管道化(Pipelining)将复杂的应用逻辑抽象为一个“数据管道”。数据从管道的一端流入,依次经过提示模板格式化、大模型推理、结果解析等预设的处理步骤,最终转化为可直接使用的结果从另一端流出。▶优势:组件复用性强、支持动态编排,且内置了对错误处理和上下文管理的支持。2.5LCEL实战:代码示例#1.初始化组件:导入并定义基础模块fromlangchain.chat_modelsimportChatOpenAIfrommptsimportChatPromptTemplatefromlangchain.schema.output_parserimportStrOutputParser#2.LCEL核心:用管道符`|`连接各组件,构建处理链chain=ChatPromptTemplate.from_messages([("system","你是一个乐于助人的助手。"),("human","{user_input}")])|ChatOpenAI(model_name="gpt-3.5-turbo")|StrOutputParser()#3.调用执行:输入数据自动流经管道,返回结果response=chain.invoke({"user_input":"解释一下什么是光合作用?"})print(response)2.5LCEL实战:代码解析组件组合prompt_template|chat_model

|output_parser将不同的原子组件通过管道符(|)串联,构建一个端到端的AI应用处理流程,而非分散的函数调用。数据流动1.输入:字典形式的用户参数

2.生成:消息列表传递给LLM

3.解析:AIMessage转为最终字符串

整个过程自动完成,无需手动处理中间数据格式转换。极致简洁对比传统手动编写:

✅省略大量样板代码

✅减少变量定义与传递

✅逻辑结构一目了然

让开发者聚焦于“做什么”,而非“怎么做”。2.6提示设计原则与案例分析清晰性Clarity使用明确、具体的语言描述任务,避免模糊不清的表述,让模型准确理解意图。完整性Completeness提供足够的背景信息和上下文细节,为模型的推理和回答提供坚实基础。指令性Directiveness善用“总结”、“分析”、“创作”等命令式动词,直接、明确地告诉模型要执行的动作。格式化Formatting根据使用场景明确指定输出格式,如列表、表格、JSON等,便于直接使用结果。迭代优化Iteration没有完美的提示,通过不断测试、分析结果并调整提示词,持续提升回答质量。2.6案例分析:代码生成任务目标请生成一个Python函数,实现以下功能:•函数名称:fibonacci•输入参数:一个整数n•核心逻辑:计算并返回斐波那契数列的第n项。优秀提示词示例请编写一个Python函数,名为fibonacci,它接受一个整数n作为参数,返回斐波那契数列的第n项。定义规则:

-fibonacci(0)=0

-fibonacci(1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论