通过 Langchain 框架实现 ChatGPT 的使用

一. 简介

Langchain 框架:LangChain 是一个开源框架,是一个让大语言模型(如ChatGPT)能连接外部工具、记忆对话、执行复杂任务的"智能助手"开发框架,解决了LLM应用开发中的各种工程化问题。

python 复制代码
# LangChain 的核心定位:LLM应用的"脚手架"
┌─────────────────────────────────────────────────┐
│              LangChain 的核心理念               │
├─────────────────────────────────────────────────┤
│ 🔗  连接LLM与外部工具和数据源                   │
│ 🧩  模块化设计,像乐高一样组合功能              │
│ 🚀  简化复杂LLM应用的开发流程                   │
│ 📚  提供丰富的工具链和最佳实践                  │
│ 🔌  支持多种LLM(OpenAI、本地模型、开源模型)    │
└─────────────────────────────────────────────────┘

二. LangChain 核心模型

  • 完整模块结构

    python 复制代码
    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 的使用

  • 简单的代码实现

    python 复制代码
    # 导入LangChain的OpenAI聊天模型封装类
    from langchain_openai import ChatOpenAI
    
    # 创建ChatOpenAI模型实例
    # LangChain是对OpenAI API的高级封装,提供更多功能和便捷接口
    llm = ChatOpenAI(
        # 指定使用的模型,gpt-4o是OpenAI最新的多模态模型
        model="gpt-4o",
        
        # 可选:直接传入API密钥(不推荐,建议使用环境变量)
        # api_key="your-api-key-here",  # 如果不想用环境变量,可以在这里直接传key
        
        # 可选:自定义API基础URL(用于代理或本地部署)
        # base_url="https://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", "J'aime la programmation."),  # AI的回复
        # ("human", "How about 'I enjoy learning'?"),  # 用户的后续问题
    ]
    
    # 调用模型生成回复
    # invoke()方法是同步调用,会阻塞直到收到完整响应
    ai_msg = llm.invoke(messages)
    # ai_msg是一个AIMessage对象,包含:
    # - content: AI的回复文本
    # - additional_kwargs: 其他元数据(如token使用情况等)
    
    # 获取AI回复的文本内容
    # translation = ai_msg.content
    # print(f"翻译结果: {translation}")
    
    # 注意:实际使用前需要设置环境变量
    # export OPENAI_API_KEY="sk-your-key-here" 或设置在代码中
相关推荐
chehaoman2 小时前
2026年主流AI镜像模型对比实测:chatGPT、Claude与Gemini谁更胜一筹?
人工智能·chatgpt
guoji77882 小时前
2026硬核拆解:ChatGPT 5.4官网架构、性能与国内体验方案
chatgpt
姚青&2 小时前
OpenAI ChatGPT 大语言模型
人工智能·语言模型·chatgpt
gaozhiyong08132 小时前
2026房地产:ChatGPT 5.4如何重塑投研、营销与客户服务
人工智能·chatgpt
InKomorebi2 小时前
《LangChain 智能体从浅入门到深入门:模型配置、中间件体系、装饰器钩子与 invoke 调用模式全解析部分内容指南分享》(如有错误欢迎指正!)
langchain
老王熬夜敲代码2 小时前
LLM结构化的概念讲解
langchain
老王熬夜敲代码2 小时前
AI小demo
langchain
咚咚2342 小时前
Langchain 调用 Agent Skills
langchain
Agent产品评测局2 小时前
企业 HR 自动化落地,入转调离全流程自动化实现方法:基于企业级智能体的技术路径与方案盘点
运维·人工智能·ai·chatgpt·自动化