当前位置: 首页 > news >正文

LangChain使用

首先我们需要安装ollama,官方网站为:https://ollama.com/

下载好了以后,我们需要下载deepseek模型,可以使用ollama run deepseek-r1:1.5b

完成前面两部准备工作以后,我们就可以开启langchain的学习之路了。

本地大模型调用方法

首先我们需要安装langchain包

pip install langchain ==1.0.1

然后需要安装ollama集成库

pip install langchain-ollama==1.0.0

调用代码实例

from langchain_ollama import ChatOllama # 初始化大模型 llm =ChatOllama( model="deepseek-r1:1.5b", base_url = "http://127.0.0.1:11434", temperature=0.7, ) # 调用大模型 res = llm.invoke("你好,你是谁") print(res.content)

通过API调用大模型

首先我们需要安装langchain与deepseek的集成包

pip install langchain-deepseek==1.0.0

调用deepseek

我们需要去deepseek官网(https://www.deepseek.com/)去申请一个apikey并且放到我们的环境变量当中

from langchain_deepseek import ChatDeepSeek import os # 初始化大模型 llm = ChatDeepSeek( model="deepseek-chat", api_key=os.environ["DEEPSEEK_API_KEY"], ) # 调用模型 print(llm.invoke("你好,你是?").content)

调用阿里大模型

我们需要去阿里百炼获取apikey:https://bailian.console.aliyun.com/

此外我们还需要安装langchain-openai库

pip install langchain-openai
from langchain_openai import ChatOpenAI import os llm = ChatOpenAI( base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", model="qwen-plus", api_key=os.environ["DASHSCOPE_API_KEY"], ) print(llm.invoke("1+1等于多少").content)

大模型选择策略LLMs

LLMs特点:功能简单,仅支持一问一答的纯文本交互,不支持工具调用、结构化输出。

应用场景(适用于无复杂逻辑的文本交互场景):

  • 日常闲聊(如讲笑话、聊生活);
  • 基础知识问答(如“地球周长是多少”);
  • 短文本创作(如写打油诗、小段子)。
from langchain_ollama import OllamaLLM # 初始化大模型 llm =OllamaLLM( model="deepseek-r1:1.5b", base_url = "http://127.0.0.1:11434", temperature=0.7, ) result = llm.invoke("你好,你是?") print(result)

LLMs因功能局限,目前实际开发中较少使用,复杂场景建议选择支持工具调用、结构化输出的大模型类型。

大模型选择策略ChatModel

ChatModel特点:支持多轮对话,采用结构化消息格式(区分system/user/assistant角色),可保留上下文语境,比基础LLMs更适合交互场景。

应用场景(适用于需要上下文记忆的交互场景):

  • 智能客服(记住用户历史问题,连贯解答);
  • 聊天机器人(多轮闲聊、主题对话);
  • 任务引导(分步指导用户完成操作,如注册流程)。
from langchain_ollama import ChatOllama # 初始化大模型 llm =ChatOllama( model="deepseek-r1:1.5b", base_url = "http://127.0.0.1:11434", temperature=0.7, ) # 多轮消息列表(含上下文) messages = [ {"role": "system", "content": "你是贴心助手,需记住用户偏好"}, {"role": "user", "content": "我喜欢科幻电影"}, {"role": "user", "content": "推荐几部类似的"} ] response = llm.invoke( messages) print(response.content) # 会基于“喜欢科幻电影”的上下文推荐

大模型消息格式

作用:标准化多轮对话的上下文传递,明确角色(系统、用户、助手)与内容,保证大模型交互的连贯性和准确性。

类型

  • SystemMessage:定义大模型的角色、规则(如“你是C/C++语言专家”)。
  • HumanMessage:用户的输入内容。
  • AIMessage:大模型的输出内容(调用时一般无需手动构造,接收回复时使用)。
from langchain_ollama import ChatOllama from langchain_core.messages import SystemMessage, HumanMessage # 初始化大模型 llm = ChatOllama( model="deepseek-r1:1.5b", base_url="http://127.0.0.1:11434", temperature=0.7, ) # 构造消息列表 langchain_messages = [ SystemMessage(content="你是一个C/C++语言专家"), HumanMessage(content="帮我用C++语言写一个冒泡排序算法") ] # 调用模型 result = llm.invoke(langchain_messages) print(result.content)

  • 消息需严格区分角色类型(SystemMessage/HumanMessage/AIMessage),不可混淆。
  • 多轮对话时,消息列表需按“系统 → 用户 → 助手 → 用户 → 助手...”的逻辑顺序排列,保证上下文连贯。

大模型流式输出

传统 lvm.invoke 需等大模型生成全部内容后才输出,流式输出(lvm.stream)可逐字/逐段返回结果,提升交互实时性,适合聊天、实时内容展示等场景。

from langchain_ollama import ChatOllama from langchain_core.messages import SystemMessage, HumanMessage # 构造消息 langchain_messages = [ SystemMessage(content="你是一个C/C++语言专家"), HumanMessage(content="帮我用C++语言写一个冒泡排序算法") ] # 初始化大模型 llm =ChatOllama( model="deepseek-r1:1.5b", base_url = "http://127.0.0.1:11434", temperature=0.7, ) # 流式输出调用 for chunk in llm.stream(input=langchain_messages): print(chunk.content, end="")
  • 流式输出返回的是生成器对象,需通过循环迭代获取每段输出;
  • 部分大模型对流式支持存在差异,需确认所使用的模型是否兼容流式调用。

工具调用(Function Calling)

大模型虽智能,但无法直接执行发送邮件、网页数据抓取、复杂计算等操作。Function Calling可让大模型自主选择并调用外部工具(函数),拓展其能力边界,实现“思考 + 执行”的闭环。

from langchain_core.messages import AIMessage, ToolMessage from langchain_ollama import ChatOllama from langchain_core.tools import tool # 定义工具函数 @tool def plus_tool(a: int, b: int) -> int: """ 计算两数相加 @参数1:a整数 @参数2:b整数 """ print(f"调用工具:plus_tool,参数:a={a}, b={b}") return a + b @tool def sub_tool(a: int, b: int) -> int: """计算两数相减""" print(f"调用工具:sub_tool,参数:a={a}, b={b}") return a - b # 工具绑定:将工具与大模型关联 tools = [plus_tool, sub_tool] # 初始化大模型 llm =ChatOllama( model="qwen3:4b", base_url = "http://127.0.0.1:11434", temperature=0.7, ) tools_with_llm = llm.bind_tools(tools) messages = [ {"role": "system", "content": "你是一个计算器助手"}, {"role": "user", "content": "帮我计算2+3等于多少"}] # 调用带工具的大模型 response: AIMessage = tools_with_llm.invoke(messages) # 执行所有工具调用参数 # 获取大模型返回的工具 for tool_call in response.tool_calls: tool_call_name = tool_call.get("name") tool_call_id = tool_call.get("id") tool_call_args = tool_call.get("args") print(f"调用工具:{tool_call_name}, 参数:{tool_call_args}") # 执行工具 for tool in tools: if tool.name == tool_call_name: result = tool.invoke(tool_call_args)

http://www.jsqmd.com/news/321382/

相关文章:

  • 科瑞思作为高纯金属镱靶材厂家,口碑好不好?
  • 2026年服务好低烟无卤电力电缆企业,评测结果出炉,RVS电线,低烟无卤电力电缆品牌推荐榜
  • 说说全国联考培训,广州中科全程这样的专业机构怎能错过
  • 从Google打击IPIDEA住宅代理网络看:什么样的代理设施才是靠谱的?
  • 一维、二维和多维列联表的应用场景与实例分析
  • 探秘石墨烯来图定制,深圳烯牛实业等靠谱厂家排名情况
  • 2026年医药冷库设计安装实力公司推荐,专业服务与技术全解读
  • 第25篇 AGV RDS接口webapi文档查找方法
  • 2026年靠谱的医药冷库设计安装公司Top10,哪家值得选
  • 聊聊岩板制造厂口碑哪家好,分享高性价比企业
  • 想提升技能学习中医,江西中医专业师承班口碑排名
  • 等离子清洗机专业制造商哪家好,服务不错的工厂全梳理
  • 浏览器感染木马插件 访问overbridgenet.com恶意网站
  • 2026年江西中医师承学习院校费用揭秘,多少钱能学
  • 导师推荐!专科生必用TOP8AI论文软件测评
  • 2026年东莞港澳台联考课程推荐,费用怎么收?
  • 2025年国内专业的尘埃粒子计数器销售厂家排行,激光尘埃粒子计数器/尘埃粒子检测仪/台式粒子计数器供应商哪家强
  • 帝国CMS的HTML编辑器如何实现Word文档的跨平台无损发布?
  • 深度解析政务服务机器人落地实践与技术演进:以扬州与北京通州政务中心为例
  • 农业大数据平台整合帝国CMS后,如何高效导入Excel统计图表?
  • 哪个厂家气体检测仪质量好?2026年最值得入手的气体检测仪品牌TOP5
  • 剖析资源多的中医师承学习院校,江西口碑好的有哪些
  • 国产化应用里,asp.net如何处理文件夹上传及加密?
  • 使用LlamaIndex与OpenAI构建具备自我评估能力的智能体AI系统
  • 2026年市面上可靠的投影机出租源头厂家推荐榜,W40投影机出租/12000流明投影机,投影机出租供应商电话
  • 央企应用里,asp.net如何支持文件夹的上传和下载?
  • 聊聊靠谱的尾气压缩机、逆放气压缩机、不凝气压缩机公司推荐
  • 2026美赛MCM/ICM A题:智能手机电池的连续时间数学模型附Matlab参考代码
  • 金融行业通过帝国CMS导入Word风控报告时,如何保留修订痕迹?
  • 计算机毕业设计springboot大学生毕业设计管理系统 基于SpringBoot的高校毕业设计全流程数字化管理平台设计与实现 Java Web技术驱动的高校毕业生课题与答辩综合监管系统开发