版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于LangChain实现大模型API调用什么是LangChain?核心定义:LangChain是一个强大的开源框架,旨在简化由大语言模型(LLM)驱动的应用程序开发。它提供了一套工具、组件和接口,帮助开发者轻松构建复杂的AI应用。核心价值组件化环节解耦,便于复用可扩展性支持多模型与工具集成上下文管理内置记忆模块,理解多轮对话提示词工程丰富模板,优化交互体验典型应用场景智能客服·代码助手·文档问答(RAG)·数据分析·自主智能体(Agent)1、实验准备获取
APIKey1、进入智谱官网:/,并完成登录(或注册)2、右上角进入个人中心
选择APIKey进入3、添加新的APIKey环境准备与配置安装依赖库使用pip命令安装LangChain核心库:pipinstalllangchain_openailangchain_core-i/simple
获取API密钥前往智谱AI开放平台()注册账号,在控制台获取APIKey,并妥善保管。config.py#智谱AIAPIKey(替换成你自己的)ZHIPU_API_KEY="your_api_key_here"#智谱AI接口地址(固定不变)ZHIPU_API_BASE="/api/paas/v4/"#智谱AI模型名称(支持:glm-5、glm-4等)MODEL_NAME="glm-5"注意:在正式的开发过程中勿直接APIKey在公开的代码仓库中。确保APIKey不被泄漏。2、编码实现第一步:创建LLM客户端(ChatOpenAI)api_key你的智谱AI平台API密钥,用于身份验证。base_url智谱AI的API接口地址,指向服务端点。model指定使用的模型名称(如glm-5,glm-4)。streaming是否启用流式输出,默认开启(True)。temperature控制生成文本的随机性(0-1),0.7为平衡值。函数功能:创建并返回一个配置好的智谱AILLM客户端实例,支持流式响应。参数详解-streamingstreaming=True(流式输出)模型将生成的文本分成多个小块逐块返回,适合实时展示(如打字机效果)。streaming=False(非流式输出)模型一次性生成并返回完整结果,适合需获取全文后再处理的场景。核心区别流式注重交互体验,非流式便于一次性批量处理。参数详解-temperature核心作用控制生成文本的随机性与创造性,取值范围通常为0到1。低温度(0.1)-保守模式结果确定、可预测,适合需要准确答案的场景。高温度(0.9)-创意模式结果随机、多样,适合头脑风暴或创意写作。经验值建议(0.5-0.7)在回答的确定性与创造性之间取得最佳平衡。参数调节可视化示意图第二步:构建提示词模板(ChatPromptTemplate)系统角色(System)定义AI的行为准则、性格设定和背景信息,确立对话基调。历史占位符(History)使用占位符动态插入多轮对话历史,保持上下文连贯性。用户输入(Human)代表当前用户提出的具体问题或指令,触发AI的即时响应。函数功能总结:该函数通过结构化的消息列表构建提示词模板,将系统指令、历史上下文与当前问题有机结合,是实现具备记忆能力的AI对话系统的基础。SystemPrompt&human(User)
Prompt?SystemPrompt(系统提示词)核心作用:定义AI的身份、角色和行为准则,为AI设定“人设”。本质是给AI的“指令手册”。“你是一位资深的软件架构师,擅长使用简洁清晰的语言解释复杂的技术概念...”确保一致性:对话全程保持角色统一设定边界:明确AI能做什么,不能做什么提供背景:赋予AI特定领域的专业知识human(User)
Prompt(用户提示词)核心作用:传达用户当前的具体问题、需求或指令,是触发AI响应的直接原因。“请解释一下什么是微服务架构,以及它的优缺点。”明确目标:告诉AI用户希望得到什么结果驱动对话:每一轮交互的起点和核心个性化:可包含具体格式、长度等要求两者结合的价值:SystemPrompt提供宏观框架(知道自己是谁),human(User)Prompt提供微观需求(需要做什么)。只有两者结合,AI才能在正确的角色设定下,准确、高效地响应用户的具体问题,产生高质量的回答。核心区别解析:from_template()vsfrom_messages()ChatPromptTemplate.from_template()prompt=ChatPromptTemplate.from_template("请分析产品:{product}的优缺点")#输出:[("user","请分析产品:手机...")]核心特点:✅最简单快捷,纯文本输入。❌仅生成user角色,无系统提示。❌无法构建多轮对话历史。适用场景:超简单单轮问答或快速测试。ChatPromptTemplate.from_messages()prompt=ChatPromptTemplate.from_messages([("system","你是专业产品分析师"),("user","请分析产品:{product}")])核心优势:✅支持system提示词,角色可控。✅完美支持多轮对话历史。✅官方推荐标准写法。适用场景:正式项目、复杂对话系统、Agent开发。消息封装顺序消息的顺序直接决定模型对上下文的理解质量。错误的顺序会导致模型混淆逻辑,生成不符合预期的回复。标准封装顺序SystemMessage:定义AI角色与准则,置于最前ChatHistory(MessagesPlaceholder):按时间排序的历史对话记录(上下文)HumanMessage:用户当前的输入问题,置于最后警示:切勿颠倒顺序,否则模型将无法正确理解上下文语境。消息封装结构示意图MessagesPlaceholder的作用核心作用:动态占位符允许在运行时将包含HumanMessage和AIMessage的对话历史列表,无缝插入到提示词模板中。核心优势:自动处理无需手动拼接复杂的字符串。LangChain会自动处理消息的格式、顺序和角色,极大简化多轮对话管理。工作流程定义模板→传入历史列表→生成完整提示词列表图示:提示词模板与对话历史的结合处理流程提示词模板:ChatPromptTemplate.from_messages([("system","技术顾问"),MessagesPlaceholder("chat_history"),("human","{user_question}")])对话历史:[Human("什么是Python?"),AIMessage("Python是高级语言...")]用户输入:"它适合初学者吗?"生成结果:[("system","技术顾问"),("human","什么是Python?"),("ai","Python是高级语言..."),("human","它适合初学者吗?")]其他创建ChatPromptTemplate的方法直接使用字符串模板prompt=ChatPromptTemplate.from_template("你是一个助手,用户问:{user_question},请回答。")核心区别解析:from_template()vsfrom_messages()ChatPromptTemplate.from_template()prompt=ChatPromptTemplate.from_template("请分析产品:{product}的优缺点")#输出:[("user","请分析产品:手机...")]核心特点:✅最简单快捷,纯文本输入。❌仅生成user角色,无系统提示。❌无法构建多轮对话历史。适用场景:超简单单轮问答或快速测试。ChatPromptTemplate.from_messages()prompt=ChatPromptTemplate.from_messages([("system","你是专业产品分析师"),("user","请分析产品:{product}")])核心优势:✅支持system提示词,角色可控。✅完美支持多轮对话历史。✅官方推荐标准写法。适用场景:正式项目、复杂对话系统、Agent开发。核心区别解析:from_template()vsfrom_messages()ChatPromptTemplate.from_template()prompt=ChatPromptTemplate.from_template("请分析产品:{product}的优缺点")#输出:[("human","请分析产品:手机...")]核心特点:✅最简单快捷,纯文本输入。❌仅生成user角色,无系统提示。❌无法构建多轮对话历史。适用场景:超简单单轮问答或快速测试。ChatPromptTemplate.from_messages()prompt=ChatPromptTemplate.from_messages([("system","你是专业产品分析师"),("human","请分析产品:{product}")])核心优势:✅支持system提示词,角色可控。✅完美支持多轮对话历史。✅官方推荐标准写法。适用场景:正式项目、复杂对话系统、Agent开发。第三步:实现流式响应(Steam)1.格式化提示词调用prompt.format_messages(),整合系统提示与对话历史生成完整消息列表。2.调用流式接口使用llm.stream()发送请求,获取流式响应迭代器,建立长连接。3.处理流式结果遍历迭代器,提取AIMessageChunk内容,实时打印并拼接成完整回复。核心逻辑总结:该函数通过“格式化-流式调用-实时拼接”的三步闭环,实现了大模型的高效交互。相比同步调用,流式响应显著提升了用户体验的即时感。流式返回的处理#初始化变量存储完整回复full_response=""forchunkinllm.stream(messages):content=chunk.contentprint(content,end="",flush=True)full_response+=content回复内容样例(AIMessageChunk){"content":"你好!我是一个AI助手,","additional_kwargs":{},"type":"ai","name":null,"id":"msg-12345"}回复字段解析•content:本次返回的文本片段。•additional_kwargs:额外信息,如函数调用。•type:消息类型,固定为"ai"。•id:消息的唯一标识符。核心逻辑总结:通过循环迭代流数据,利用chunk.content获取增量文本,实现边生成边展示的交互体验。核心区别解析:from_template()vsfrom_messages()ChatPromptTemplate.from_template()prompt=ChatPromptTemplate.from_template("请分析产品:{product}的优缺点")#输出:[("user","请分析产品:手机...")]核心特点:✅最简单快捷,纯文本输入。❌仅生成user角色,无系统提示。❌无法构建多轮对话历史。适用场景:超简单单轮问答或快速测试。ChatPromptTemplate.from_messages()prompt=ChatPromptTemplate.from_messages([("system","你是专业产品分析师"),("user","请分析产品:{product}")])核心优势:✅支持system提示词,角色可控。✅完美支持多轮对话历史。✅官方推荐标准写法。适用场景:正式项目、复杂对话系统、Agent开发。完整对话流程演示(1/2)defchat_demo():#1.创建LLM客户端llm=create_zhipu_llm_client(stream=True)#2.创建提示词模板prompt=create_chat_prompt()#3.初始化对话历史列表chat_history=[]#4.加载系统提示词system_prompt=load_system_prompt()创建客户端连接底层大模型服务,开启流式传输模式,确保实时响应。提示词模板定义用户输入与系统指令的格式化结构,规范输入输出。对话历史初始化空列表用于存储上下文,维持多轮对话的连续性。系统提示词配置加载角色设定与能力约束,确立AI助手的行为边界与基调。完整对话流程演示(2/2)whileTrue:user_input=input("\n🙋你:")ifuser_input.lower()in["exit","quit"]:print("👋对话结束!");break#调用流式响应并更新历史resp=stream_chat_response(llm=llm,prompt=prompt,system_prompt=system_prompt,user_question=user_input,chat_history=chat_history)#更新历史chat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年交通法规学习与测试
- 银行统计知识竞赛题目与答案
- 2026石油设备制造业投资效益与发展策略研究
- 河南语文考试试卷及答案详情
- 2026中国物联网智能消防监控产业市场发展趋势及投资潜力评估规划分析研究报告
- 2025-2026年中国文物古董高精度三维数字化建模行业发展现状及彩色三维扫描仪市场选择研究报告
- 2026中国AR眼镜轻薄化技术突破与消费级市场爆发条件研究报告
- 2026锂电池负极材料行业市场深度调研及发展趋势和前景预测研究报告
- 2026中国移动设备电池技术突破与应用前景分析报告
- 2026中国校园饮用水安全标准与市场规范研究报告
- 2025-2030中国退役风电叶片回收技术比较及处置成本分析报告
- 重症医学科院感知识培训
- 2025年兴业银行招聘考试(数据类)历年参考题库含答案详解(5套)
- 兰州理工大学数学试卷
- 科技创新型企业股权激励对财务绩效影响分析-以京东方为例
- 近三年安全生产业绩证明
- 成本实操-席梦斯床垫成本计算实例
- T/CSMT-DZ 005-2023显示用量子点材料性能测试方法
- 广东省深圳市二模2025届高三数学试卷及答案
- 2025年热烈庆祝建党104周年党史知识竞赛题库及答案(共300题)
- 进驻学校保安服务方案
评论
0/150
提交评论