ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

langchain组件-models调用篇

langchain组件-models调用篇

langchain组件介绍

LangChain 介绍: 你把它看做是大语言模型的 ' 连接器套装 ',它不造 AI 大脑,而是把 'AI 大脑 ' 和相关的各种小零件 (例如:处理文字,记录聊天历史,调用外部工具等...) 串起来。给不同的 'AI 大脑 ' 做通用接口。 让开发者不用从零开始,就能快速做出复杂的 AI 应用 (例如:智能问答机器人,自动生成报告的工具)。

你把 LangChain 想象成 1 个 ' 智能助手工作台 ',每个组件都是工作台里的工具。 Models (模型): 核心的 ' 智能大脑 ',例如:ChatGPT, 千问,文心一言这类能回答问题,生成内容的 AI。 例如:你问大象有多重?ChatGPT 可以告诉你答案,它就是这个 ' 大脑'

Prompts (提示): 你对 ' 智能大脑 ' 说的话 (问题 / 指令), 包括把话说清楚,让大脑更懂你。 例如:直接说 ' 苹果 ', 大脑懵,你说:苹果和香蕉哪个维 C 多?这就是 ' 提示优化'

Memory (记忆): 核让大脑记住之前的对话,别 ' 断片 '. 例如:你告诉你有只狗叫旺财。接着你问我你家宠物叫啥?-> 旺财.

Index (索引): 把外部文档 (PDF 书,word 报告) 整理成 大脑能快速翻找的形式. 例如:你有本 << 三国演示 >> 电子书,问:' 诸葛亮借东风是第几回?' Index 会把书的内容整理好,让模型快速找到相关答案.

Chain (链): 把 ' 提示,模型,记忆,索引 ' 这些工具串起来,自动完成一系列惭作. 例如:让模型先从 << 三国演义 >> 中找东风的情节 (用 Index), 结合之前聊的三国人物 (用 Memory) 最后生成一段故事讲解 (用 Models), Chain 会自动把这些步骤连起来做.

Agents (代理): 让 ' 智能大脑 ' 自己决定做哪些步骤来完成任务,像个 ' 小管家 '. 例如:你说 ' 帮我查今天的机票,再选个附近的酒店.' Agent 会自己决定先查机票网站,再查几点平台,一步步把事儿做完.

langchain核心包

3 LangChain 核心包

  • langchain-core:聊天模型和其他组件的基础抽象。
  • 集成包(例如 langchain-openai、langchain-anthropic 等):重要的集成被拆分为轻量级的独立包,由 LangChain 团队和集成方共同维护。
  • langchain:包含链(chains)、智能体(agents)和检索策略,这些构成了应用的认知架构。
  • langchain-community:由社区维护的第三方集成。
  • langgraph:一个编排框架,用于将 LangChain 组件组合成可用于生产的应用,支持持久化、流式处理及其他关键特性。

本项目以 LangChain+Qwen 进行学习,需要提前安装

pip install openai pip install langchain pip install modelscope

借助阿里云 - 百炼平台(需要申请 API Key 以及 Secret Key 大模型服务平台百炼控制台

models组件

llms调用

一般用result.content看结果

""" 通过langchain_openai的ChatOpenAI兼容接口, 调用阿里统一千问大模型. 属于: Models组件 -> LLM大语言模型 -> ChatOpenAI方式. """ # 忽略警告. import warnings warnings.filterwarnings('ignore') # 导包 from langchain_openai import ChatOpenAI # 遵循OpenAI对话接口标准, 可对接所有兼容OpenAI协议的大模型服务. import os # 加载系统环境变量, 存放密钥, 接口地址等敏感信息. # 1. 实例化 对话大模型对象. model = ChatOpenAI( base_url=os.environ.get('base_url', 'https://dashscope.aliyuncs.com/compatible-mode/v1'), # 模型服务接口地址. model='qwen-plus', # 指定要调用的模型名. openai_api_key=os.environ.get('DASHSCOPE_API_KEY'), # 模型的调用密钥, 会自动取Path环境变量中读取. max_tokens=1000, # 限制模型单词输出最大字符token数量, 防止超长回复, 控制消耗. temperature=0 # 温度参数, 取值范围0~1, 0代表模型输出完全稳定, 无随机创造性, 适合严谨问答. 数值越高回答越随机. ) # 2. 向模型发送提问请求, 获取对话返回完整对象. result = model.invoke('给我讲个笑话') # 3. 打印模型返回结果. # print(result) print(result.content)

ollama调用

ollama ls看下下载的模型

""" 案例: langchain_ollama接口, 调用本地的 qwen大模型. 属于: Models组件 -> LLM大语言模型 -> Ollama方式. """ # 忽略警告. import warnings warnings.filterwarnings('ignore') # 导包 from langchain_ollama import OllamaLLM # OllamaLLM本地大模型交互核心类. # 1. 实例化本地Ollama大模型对象. model = OllamaLLM(model='qwen2:1.5b') # 2. 向模型发送提问请求, 获取对话返回完整对象. result = model.invoke('给我讲个笑话吧') # 3. 打印模型返回结果. print(result)
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进