厘清 LLM 与框架边界:LangChain 调度 DeepSeek 对话系统实战
#一、什么是大模型大模型 参数量巨大的人工智能神经网络模型**我们常说的大模型一般特指大语言模型LLM比如 GPT、DeepSeek、通义千问、文心一言、Llama、Qwen 等。##稍微专业点的定义大型语言模型Large Language Model简称 LLM**基于Transformer 架构训练出来的深度学习模型1. 底层结构Transformer2017 年谷歌论文提出几乎所有现代大模型基础2. 训练方式自监督学习从海量文本预测下一个字3. 核心能力涌现能力 —— 当模型规模、数据达到一定阈值后突然具备推理、逻辑、翻译、问答等复杂能力。###这里面需要注意区分两个容易混淆概念1.大语言模型 LLM只处理文本DeepSeek、Llama、Qwen-7B2多模态大模型文本 图像 / 音频 / 视频一体通义千问 VL、GPT4o#二、如何使用大模型LangChain 是一套用来开发大模型应用的开源开发框架是介于大模型与应用之间的中间层让开发者能够以一致的方式调用多种大模型、组织提示词、管理上下文状态并集成外部工具与数据源从而高效构建出具备推理与行动能力的智能体。经过持续迭代与演进LangChain 已从一个独立的开发框架成长为一个覆盖智能体系统全生命周期的技术生态。该生态由四大核心支柱构成LangChain智能体开发的基石、LangGraph复杂工作流的编排引擎、Deep Agent智能体的执行框架 与 LangSmith可观测性与质量管理平台它们分别面向开发、编排、自治、监控与评估共同构建了一个从技术验证到生产部署、从单体智能到复杂协作的项目闭环。LangChain 1.0 的发布是其发展历程中的一个重要里程碑。自 2022 年年底问世后的将近三年时间里LangChain 的版本号长期停留在 0.x这反映了其在快速发展的 AI 生态中持续探索与迭代是相对谨慎的。此次其版本号直接跃迁至 1.0。这是真正意义上的第一个正式大版本不仅代表了其 API 与架构的稳定会长期支持一段时间还象征着整个生态在思想上的统一与成熟。#三、如何使用LangChain利用LangChain搭建一个简单的电商助手# 导入系统环境变量模块importos# 从python-dotenv库导入加载.env文件的函数fromdotenvimportload_dotenv# langchain提供的统一初始化大模型函数fromlangchain.chat_modelsimportinit_chat_model# langchain核心消息类型系统提示、用户消息、AI回复消息fromlangchain_core.messagesimportSystemMessage,HumanMessage,AIMessage# # 1. 加载当前目录下 .env 文件里的环境变量# 会把.env中的键值载入系统环境变量 os.environload_dotenv()# # 2. 初始化大模型对象modelinit_chat_model(model_provideropenai,# 指定接口协议为OpenAI兼容格式DeepSeek支持这套协议modeldeepseek-ai/DeepSeek-V4-Flash,# 指定调用的模型名称api_keyos.getenv(DEEPSEEK_API_KEY),# 从环境变量读取密钥base_urlos.getenv(DEEPSEEK_BASE_URL),# DeepSeek接口地址temperature0.5# 温度参数0最严谨越高回答越随机、创造性越强)# # 3. 系统提示词角色设定# SystemMessage给大模型的全局指令最先给到LLMsystemSystemMessage(content你是一名电商客服助手。回答要礼貌、简洁。如果用户没有提供订单号就提醒用户提供订单号。)# 注意多个字符串紧挨着会自动拼接等价于一整段文本# # 4. 定义列表保存对话历史his[]# 无限循环持续接收用户输入whileTrue:# 接收控制台输入queinput(用户exit退出)# 输入exit就跳出循环程序结束ifqueexit:break# 将本次用户提问封装成 HumanMessage追加进历史列表his.append(HumanMessage(contentque))# 消息组装系统提示 只取最近6条历史消息his[-6:]messages[system]his[-6:]# 调用大模型传入消息列表等待AI返回结果resmodel.invoke(messages)# 把AI返回内容存入对话历史形成完整上下文his.append(AIMessage(contentres.content))# 打印AI回答文本print(res.content)# 打印本次传给大模型的消息总数方便调试上下文长度print(len(messages))