LangChain使用
首先我们需要安装ollama官方网站为https://ollama.com/下载好了以后我们需要下载deepseek模型可以使用ollama run deepseek-r1:1.5b完成前面两部准备工作以后我们就可以开启langchain的学习之路了。本地大模型调用方法首先我们需要安装langchain包pip install langchain 1.0.1然后需要安装ollama集成库pip install langchain-ollama1.0.0调用代码实例from langchain_ollama import ChatOllama # 初始化大模型 llm ChatOllama( modeldeepseek-r1:1.5b, base_url http://127.0.0.1:11434, temperature0.7, ) # 调用大模型 res llm.invoke(你好你是谁) print(res.content)通过API调用大模型首先我们需要安装langchain与deepseek的集成包pip install langchain-deepseek1.0.0调用deepseek我们需要去deepseek官网https://www.deepseek.com/去申请一个apikey并且放到我们的环境变量当中from langchain_deepseek import ChatDeepSeek import os # 初始化大模型 llm ChatDeepSeek( modeldeepseek-chat, api_keyos.environ[DEEPSEEK_API_KEY], ) # 调用模型 print(llm.invoke(你好你是).content)调用阿里大模型我们需要去阿里百炼获取apikeyhttps://bailian.console.aliyun.com/此外我们还需要安装langchain-openai库pip install langchain-openaifrom langchain_openai import ChatOpenAI import os llm ChatOpenAI( base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, modelqwen-plus, api_keyos.environ[DASHSCOPE_API_KEY], ) print(llm.invoke(11等于多少).content)大模型选择策略LLMsLLMs特点功能简单仅支持一问一答的纯文本交互不支持工具调用、结构化输出。应用场景适用于无复杂逻辑的文本交互场景日常闲聊如讲笑话、聊生活基础知识问答如“地球周长是多少”短文本创作如写打油诗、小段子。from langchain_ollama import OllamaLLM # 初始化大模型 llm OllamaLLM( modeldeepseek-r1:1.5b, base_url http://127.0.0.1:11434, temperature0.7, ) result llm.invoke(你好你是) print(result)LLMs因功能局限目前实际开发中较少使用复杂场景建议选择支持工具调用、结构化输出的大模型类型。大模型选择策略ChatModelChatModel特点支持多轮对话采用结构化消息格式区分system/user/assistant角色可保留上下文语境比基础LLMs更适合交互场景。应用场景适用于需要上下文记忆的交互场景智能客服记住用户历史问题连贯解答聊天机器人多轮闲聊、主题对话任务引导分步指导用户完成操作如注册流程。from langchain_ollama import ChatOllama # 初始化大模型 llm ChatOllama( modeldeepseek-r1:1.5b, base_url http://127.0.0.1:11434, temperature0.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( modeldeepseek-r1:1.5b, base_urlhttp://127.0.0.1:11434, temperature0.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( modeldeepseek-r1:1.5b, base_url http://127.0.0.1:11434, temperature0.7, ) # 流式输出调用 for chunk in llm.stream(inputlangchain_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( modelqwen3:4b, base_url http://127.0.0.1:11434, temperature0.7, ) tools_with_llm llm.bind_tools(tools) messages [ {role: system, content: 你是一个计算器助手}, {role: user, content: 帮我计算23等于多少}] # 调用带工具的大模型 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)

相关新闻

央企应用里,asp.net如何支持文件夹的上传和下载?

央企应用里,asp.net如何支持文件夹的上传和下载?

.NET程序员外包项目大文件上传解决方案(原生JSASP.NET WebForm) 兄弟,我懂你的苦!甲方爸爸要兼容IE8,要文件夹层级,要20G大文件,还要加密传输存储,预算还卡得死死的。但咱是搞技术的…

2026/7/3 6:17:46 阅读更多 →
单一/混合蛋白质分离纯化方法与质谱鉴定详解

单一/混合蛋白质分离纯化方法与质谱鉴定详解

单一/混合蛋白质分离纯化方法与质谱鉴定详解 文章导读 • 单一蛋白质样品的分离、纯化? • 单一蛋白质的质谱鉴定? • 蛋白质混合物质谱鉴定方法? 对于单一蛋白的常用鉴定方法,大家肯定立马想到免疫印迹法(Wester…

2026/7/4 23:01:42 阅读更多 →
使用LlamaIndex与OpenAI构建具备自我评估能力的智能体AI系统

使用LlamaIndex与OpenAI构建具备自我评估能力的智能体AI系统

如何使用LlamaIndex和OpenAI构建具备自我评估能力的智能体AI系统 在本教程中,将构建一个使用LlamaIndex和OpenAI模型的高级智能体AI工作流。重点关注设计一个可靠的检索增强生成(RAG)智能体,使其能够基于证据进行推理、审慎使用工…

2026/7/2 23:23:53 阅读更多 →

最新新闻

【从零构建分布式在线评测系统】二、Judge0服务器上的心跳程序

【从零构建分布式在线评测系统】二、Judge0服务器上的心跳程序

上一篇介绍了整体构架,这一篇介绍如何实现心跳程序。在ubuntu上使用.net程序有不少方法,我们采用使用标准框架的方式。一、工程配置1、类型:控制台应用——莫担心,它会得到一个dll,部署这个dll即可2、目标框架&#xf…

2026/7/7 5:29:34 阅读更多 →
【Java课程设计/毕业设计】基于 SpringBoot+Vue 的校园体育赛事数据可视化系统的设计与实现 基于 SpringBoot 的大学生运动会数字化管理平台【附源码、数据库、万字文档】

【Java课程设计/毕业设计】基于 SpringBoot+Vue 的校园体育赛事数据可视化系统的设计与实现 基于 SpringBoot 的大学生运动会数字化管理平台【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/7 5:25:32 阅读更多 →
《深入理解计算机系统》计算机系统漫游

《深入理解计算机系统》计算机系统漫游

《深入理解计算机系统》(简称 CSAPP)书中 “计算机系统漫游” 部分的核心内容。这部分通常作为全书的引言或第一章,旨在宏观地描绘计算机系统的构成和运作方式。 信息的表示与处理(核心基础) 计算机系统处理的所有信息…

2026/7/7 5:23:32 阅读更多 →
远程协助软件推荐 远程协助软件哪个好

远程协助软件推荐 远程协助软件哪个好

日常帮亲友排查设备故障、异地处理工作难题,都需要靠谱的远程协助,便捷高效的远程协助能大幅降低跨设备、跨地域的操作成本。哪款远程协助软件体验比较呢?无界趣连2.0凭借轻量化设计与扎实的使用体验,成为个人日常远程协助的优选工…

2026/7/7 4:55:49 阅读更多 →
AD15 敷铜(Polygon Pour) 的完整操作,按步骤做即可,适合顶层/底层GND或电源敷铜。

AD15 敷铜(Polygon Pour) 的完整操作,按步骤做即可,适合顶层/底层GND或电源敷铜。

一、准备工作- 确保 板框(Board Shape) 已画好(机械层 Mechanical 1)。​- 布局、走线基本完成,DRC 先过一遍。​- 切换到要敷铜的层:底部层标签点 Top Layer(顶层) 或 Bottom Layer…

2026/7/7 4:55:49 阅读更多 →
NET 10:Oxigraph 的 FFI 桥接实践

NET 10:Oxigraph 的 FFI 桥接实践

架构概览┌──────────────────────────────────────────────────────────┐ │ .NET 应用层 │ │ ┌──────────┐ ┌────────────────…

2026/7/7 4:55:49 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻