通过 Langchain 框架实现 ChatGPT 的使用
一. 简介Langchain 框架LangChain 是一个开源框架是一个让大语言模型如ChatGPT能连接外部工具、记忆对话、执行复杂任务的“智能助手”开发框架解决了LLM应用开发中的各种工程化问题。# LangChain 的核心定位LLM应用的脚手架┌─────────────────────────────────────────────────┐ │ LangChain 的核心理念 │ ├─────────────────────────────────────────────────┤ │ 连接LLM与外部工具和数据源 │ │ 模块化设计像乐高一样组合功能 │ │ 简化复杂LLM应用的开发流程 │ │ 提供丰富的工具链和最佳实践 │ │ 支持多种LLMOpenAI、本地模型、开源模型 │ └─────────────────────────────────────────────────┘二. LangChain 核心模型完整模块结构LangChain_Modules{Models:{功能:连接各种LLM,支持:[OpenAI,Anthropic,本地模型,HuggingFace,Cohere,Google PaLM],示例:ChatOpenAI(), ChatOllama(), HuggingFacePipeline(),子模块:{LLMs:文本补全模型如GPT-3,Chat Models:对话模型如ChatGPT,Embeddings:文本向量化模型}},Prompts:{功能:模板化提示词管理,特性:[变量替换,少样本示例,输出解析器,提示词优化],示例:ChatPromptTemplate, FewShotPromptTemplate, PromptTemplate,组件:{Prompt Templates:带变量的提示词模板,Example Selectors:动态选择少样本示例,Output Parsers:解析LLM输出为结构化数据}},Chains:{功能:组合多个LLM调用,类型:[简单链,顺序链,路由链,转换链,Map-Reduce链],示例:LLMChain, SequentialChain, TransformChain, RouterChain,应用场景:{问答系统:检索 → 生成 → 验证,文档总结:分割 → 总结 → 合并,代码生成:需求分析 → 代码生成 → 测试}},Agents:{功能:让LLM自主使用工具,工具库:[计算器,网页搜索,Python解释器,API调用,数据库查询,文件操作],示例:create_react_agent, create_json_agent, initialize_agent,代理类型:{Zero-shot:零样本学习根据工具描述选择,ReAct:思考-行动-观察循环,Self-ask:自我提问分解复杂问题,Plan-and-execute:先规划再执行}},Memory:{功能:管理对话历史,类型:[对话缓冲,摘要记忆,向量存储记忆,实体记忆,组合记忆],示例:ConversationBufferMemory, ConversationSummaryMemory, VectorStoreRetrieverMemory,存储方式:{短期记忆:保存最近对话ConversationBufferMemory,长期记忆:对话摘要ConversationSummaryMemory,语义记忆:向量检索相关历史VectorStoreRetrieverMemory,实体记忆:记住用户信息EntityMemory}},Indexes:{功能:处理外部文档和数据,组件:[文档加载器,文本分割器,向量存储,检索器],示例:TextLoader, CharacterTextSplitter, FAISS, Chroma,RAG流程:{加载:从各种来源加载文档PDF、网页、数据库,分割:将长文档切分为合适片段,向量化:将文本转换为向量表示,存储:存入向量数据库,检索:根据查询检索相关片段}}}三. 通过 Langchain 框架实现 ChatGPT 的使用简单的代码实现# 导入LangChain的OpenAI聊天模型封装类fromlangchain_openaiimportChatOpenAI# 创建ChatOpenAI模型实例# LangChain是对OpenAI API的高级封装提供更多功能和便捷接口llmChatOpenAI(# 指定使用的模型gpt-4o是OpenAI最新的多模态模型modelgpt-4o,# 可选直接传入API密钥不推荐建议使用环境变量# api_keyyour-api-key-here, # 如果不想用环境变量可以在这里直接传key# 可选自定义API基础URL用于代理或本地部署# base_urlhttps://api.openai.com/v1, # 默认就是OpenAI官方API地址# 其他可选参数未在此示例中显示# temperature: 控制输出的随机性0-2之间默认0.7# max_tokens: 最大生成token数# timeout: 请求超时时间# streaming: 是否启用流式响应)# 定义消息列表构建对话上下文# LangChain使用特定的消息格式(角色, 内容) 或 {role: ..., content: ...}messages[# 系统消息设置AI助手的角色和任务(system,# 消息角色系统用于设定AI的行为和身份You are a helpful assistant that translates English to French. Translate the user sentence.,# 系统提示内容定义助手为英法翻译器),# 用户消息用户的输入(human,# 消息角色用户human是LangChain中对user的别名I love programming.,# 用户输入内容要翻译的英文句子),# 可以继续添加更多消息如之前的AI回复# (ai, Jaime la programmation.), # AI的回复# (human, How about I enjoy learning?), # 用户的后续问题]# 调用模型生成回复# invoke()方法是同步调用会阻塞直到收到完整响应ai_msgllm.invoke(messages)# ai_msg是一个AIMessage对象包含# - content: AI的回复文本# - additional_kwargs: 其他元数据如token使用情况等# 获取AI回复的文本内容# translation ai_msg.content# print(f翻译结果: {translation})# 注意实际使用前需要设置环境变量# export OPENAI_API_KEYsk-your-key-here 或设置在代码中
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2469664.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!